Hallo liebe Leserinnen und Leser!
Heute möchte ich euch zeigen, wie ihr die PV-Ertragsdaten von einem SMA-Bluetooth-Wechselrichter mit Hilfe eines Raspberry Pi und eines geeigneten Bluetooth-Sticks auslesen könnt und diese auf einem Webinterface mit Highcharts darstellen könnt. Das Webinterface habe ich selbst gestaltet, weswegen kleinere Bugs noch enthalten sein könnten. Ihr findet den Downloadlink im Laufe dieses Artikels.
Die Anleitung ist für Raspberry-Pi-Einsteiger genau so geeignet, wie für erfahrenere Raspberry-Pi-Nutzer. Ich versuche sie also möglichst detailliert zu halten. Um eigene Änderungen am Webinterface vornehmen zu können, solltet ihr allerdings grundlegende Kenntnisse in HTML, JavaScript und jQuery besitzen. Auf PHP wurde explizit verzichtet, sodass sämtliche Berechnungen Client-seitig geschehen. Dadurch wird der Raspberry Pi beim Aufruf kaum belastet und die Rechenarbeit übernehmen die meist deutlich potenteren Clients.
Benötigte Hardware
Was ihr hierfür benötigt:
- Einen Bluetooth-Stick (bei Wechselrichtern mit Bluetooth
Hierbei solltet ihr beim Kauf darauf achten, dass der Chipsatz vom Raspberry Pi erkannt wird und/oder es passende Treiber zum Download gibt. Ich selbst nutze einen LogiLink BT0015, der automatisch von Raspbian erkannt wird. Zudem handelt es sich um einen Adapter der Bluetooth-Klasse 1, mit dem theoretisch 100m Reichweite erzielt werden können. In meinem Haus habe ich damit eine ordentliche Verbindung vom Wechselrichter im Keller zum Raspberry Pi im ersten Stock (60-70% Empfangsstärke werden angezeigt). Zudem ist der Stick mit 5-10€ recht preiswert. - Einen SMA-Wechselrichter (mit Bluetooth oder Ethernet)
Da das Tutorial auf SMAspot (bzw. SBFspot, wie es seit einigen Versionen heißt) basiert, benötigt ihr einen SMA-Wechselrichter mit Bluetooth oder Ethernet. Ich selbst habe einen SMA STP 8000TL-10 im Einsatz, welcher Bluetooth an Board hat. Hier findet ihr eine Liste der unterstützten Wechselrichter zur jeweiligen Version von SMAspot. Solltet ihr Probleme mit euren Wechselrichter haben, so wendet euch an die Entwickler von SBFspot bzw. bei Problemen mit meinem Webinterface direkt an mich. Sollten die Unterschiede nur marginal sein, kann ich (bzw. ihr) das Interface i.d.R. problemlos anpassen. - Einen Raspberry Pi
Grundsätzlich funktioniert auch ein anderer Linux-PC/-Server, da das Gerät aber durchgängig läuft, ist ein stromsparender Einplatinencomputer wie eben der Raspberry Pi, der Banana Pi oder ein Cubieboard (,…) empfehlenswert.
Mehr an Hardware ist gar nicht notwendig (abgesehen von „Basics“ wie ein Netzteil für den Pi, Tastatur etc.), um eure Ertragsdaten auszulesen und darstellen zu können.
Beginnen wir also mit dem Ersten Schritt.
Die Installation und Konfiguration von SMAspot
Diese ist in der PDF-Datei von SMAspot sehr genau und ausführlich installiert, sodass ich hier nur die wichtigsten Dinge zusammenfassen möchte und Unterschiede zu meiner Konfiguration erklären möchte. Wenn ihr den Raspberry Pi mit Raspbian bereits laufen habt, könnt ihr ab dem Kapitel „How to install SMAspot on the Raspberry Pi?“ beginnen.
Zuerst müsst ihr euren Bluetooth-Adapter am Raspberry zum Laufen bekommen. Dazu werden über
sudo apt-get install bluetooth
die Bluetooth-Treiber heruntergeladen und installiert. Über hcitool scan könnt ihr nun einen Bluetooth-Scan ausführen, bei dem u.a. euer Wechselrichter auftauchen sollte. Ist das nicht der Fall, wiederholt den scan-Befehl noch mal. Sollte der Wechselrichter auch nach mehrmaligem Scannen nicht gefunden werden, ist vermutlich der Abstand zwischen Raspberry Pi und WR zu groß. Stellt den Raspberry mit dem Bluetooth-Stick dann möglichst nahe an euren WR und probiert es nochmals. Anschließend schreibt ihr euch die Bluetooth-Adresse eures Wechselrichters auf, da ihr sie für die Konfiguration von SMAspot später benötigt.
Dann müsst ihr noch ein paar Pakete herunterladen und installieren:
1 2 | sudo apt-get install libbluetooth-dev sudo apt-get install libcurl3-dev |
Nach diesen Befehlen empfehle ich euch, die benötigten Ordner für das Webinterface direkt anzulegen. Dazu müsst ihr auf euren RPi Apache oder einen anderen Webserver installiert haben. Das geht ganz simpel über
sudo apt-get install apache2
PHP braucht ihr aus den in der Einleitung erwähnten Gründen nicht installieren. Um die benötigten Ordner anzulegen wechselt ihr zu /var/www/ über cd /var/www/ und legt einen Ordner namens „pv“ an: sudo mkdir pv
Alternativ könnt ihr den Ordner auch anders benennen oder die folgenden Ordner auch direkt unter /var/www/ anlegen. Um das Tutorial aber genau so umsetzen zu können, empfehle ich die Beibehaltung dieser Struktur.
In diesem Ordner legt ihr nun Ordner mit den gewünschten Jahreszahlen als Namen an, also z.B. „2011“, „2012“,…, „2020“, um die Daten von 2011 bis 2020 darin speichern zu können. Das Anlegen erfolgt wieder mit dem bereits bekannten mkdir-Befehl, also sudo mkdir 2011 usw. Damit SMAspot in diese Ordner später auch die entsprechenden .csv-Dateien ablegen kann, sollten die Rechte noch angepasst werden. Das erfolgt z.B. über sudo chmod 777 2011/ usw.
Damit sind erst einmal alle Grundlagen für die Installation von SMAspot erfüllt und es kann mit dessen Installation fortgefahren werden. Hier empfehle ich das Kapitel „Now it’s really time to install SMAspot on the Pi“ aus der oben verlinkten PDF, welches die Installationsschritte sehr gut beschreibt.
Hinweis: Der Downloadlink in der Anleitung (nach „wget“) ist veraltet, ihr solltet ihn also durch den Link zur aktuellen Version ersetzen. Ich selbst nutze noch Version 2.0.6, wie in der Anleitung angegeben, da ich das System auf meinem Raspberry schon einige Zeit problemlos am Laufen habe. Bei einer Neuinstallation empfiehlt es sich hingegen, die aktuellste Version zu verwenden. Da SMAspot mittlerweile SBFspot heißt, einfach die Namen in der Anleitung umtauschen, ansonsten sollte alles nach wie vor gleich funktionieren.
Bei der Bearbeitung der Datei „SMAspot.cfg“ (bzw. evtl. „SBFspot.cfg“) müsst ihr nun abweichend von der Anleitung vorgehen. Als „OutputPath“ gebt ihr nun „/var/www/pv/%Y“ an, damit die .csv-Dateien gleich im richtigen Ordner gespeichert werden. Zudem ändert ihr „DecimalPoint=comma“ in „DecimalPoint=point“ um und deaktiviert PVoutput, indem ihr „PVoutput=1“ zu „PVoutput=0“ ändert. Ansonsten könnt ihr analog zu dieser Anleitung vorgehen (bis „Now for the magic to happen itself“, dieses und die folgenden Kapitel könnt ihr weglassen).
Nun solltet ihr SMAspot lauffähig auf eurem Raspberry Pi haben. Ihr könnt es nun wie in der Anleitung beschrieben testweise ausführen. Hat alles funktioniert, solltet ihr nun unter „/var/www/pv/AKTUELLES_JAHR/“ eure ersten exportieren .csv-Daten vorliegen haben. Die Installtion und Konfiguration von SMAspot ist somit abgeschlossen und wir können uns dem Webinterface widmen.
Installation des Webinterfaces
Um euch zu zeigen, wie das Webinterface letztendlich aussehen sollte, habe ich euch hier mal 2 Screenshots davon gemacht, wie es bei mir momentan läuft.Der erste Screenshot zeigt die Tagesansicht des aktuellen Tages, welcher standardmäßig angezeigt wird, wenn ihr das Webinterface aufruft. Das Textfeld bei „Datum wählen“ ist ein jQuery-Datepicker, mit dem ihr bequem die Tagesansichten von historischen Werten aufrufen könnt. Die Graphen wurden mit Highcharts realisiert.
Der zweite Screenshot zeigt die Monatsansicht des aktuellen Monats (es sei denn, es ist der 1. eines Monats, dann wird der Vormonat angezeigt, um eine leere Anzeige zu vermeiden) mit dem Monatsgesamtwert, den Tageswerten und dem Gesamtertrag seit Inbetriebnahme der Anlage. Das Textfeld bei „Monat wählen“ wurde wieder als Datepicker umgesetzt, in dieser Ansicht werden allerdings nur Monat und Jahr angezeigt.
Genug der Demonstration, kommen wir zur Installation:
Ladet euch zuerst das gepackte Webinterface herunter. Die Dateien aus dem gepackten Ordner kopiert ihr euch nach „/var/www/pv/“.
Das sollte es schon gewesen sein :)
Ruft nun in eurem Browser die entsprechende Seite auf, also „http://IP_EURES_RPI/pv/“. Wenn ihr alles richtig gemacht habt, wird euch nun die Tages- und Monatsansicht eures Wechselrichters angezeigt und ihr könnt mit dem nächsten und somit letzten Schritt weitermachen.
Automatisierung des Abrufs der PV-Daten
Da es umständlich ist, sich immer am Raspberry Pi einzuloggen und die PV-Daten über SMAspot manuell abzurufen, solltet ihr den Abruf automatisieren. Hier die dazu benötigten Schritte:
Legt euch im Home-Verzeichnis des Nutzers „pi“ eine Shell-Script namens „get_pv.sh“ an, also über nano /home/pi/get_pv.sh mit folgendem Inhalt:
1 | /home/pi/smaspot/bin/Release/SMAspot |
Hier evtl. den Pfad zu eurer SMAspot/SBFspot-Installation anpassen. Darüber hinaus brauchen wir noch 3 weitere Shell-Scripte. Analog zu oben legt ihr ein Script namens „get_pv_eod.sh“ an mit
1 | /home/pi/smaspot/bin/Release/SMAspot -ad2 –finq |
, eines namens „get_pv_eom.sh“ mit
1 | /home/pi/smaspot/bin/Release/SMAspot -am2 –finq |
und eines namens „get_pv_night.sh“ mit
1 | /home/pi/smaspot/bin/Release/SMAspot –finq |
Diese Scripte mit „chmod +x SCRIPTNAME“ ausführbar machen, wobei ihr „SCRIPTNAME“ natürlich mit den Namen der 4 gerade angelegten Scripte ersetzt.
Anschließend legen wir noch entsprechende cronjobs an, um die Scripte automatisch starten zu lassen. Hierzu öffnet ihr mit „crontab -e“ den Editor für die cronjobs und legt darin folgende neue Einträge an:
1 2 3 4 | 0 10,14,18 * * * cd /home/pi/ && ./get_pv.sh 0 1 * * * cd /home/pi/ && ./get_pv_eod.sh 0 5 1 * * cd /home/pi/ && ./get_pv_eom.sh 0 8,22 * * * cd /home/pi/ && ./get_pv_night.sh |
Damit werden die Solarwerte während des Tages um 10, 14 und 18 Uhr abgerufen sowie um 8 und 22 Uhr (hier muss ein anderer Befehl verwendet werden, da diese Zeiten teilw. vor Sonnenaufgang bzw. nach Sonnenuntergang liegen). Außerdem wird jede Nacht um 1 Uhr die komplette .csv-Datei vom Vortag vom Wechselrichter geholt und am ersten eines Monats um 5 Uhr morgens die komplette .csv-Datei des Vormonats. Erklärungen hierzu finden sich auf unzähligen Support-Seiten von SMAspot/SBFspot. Ihr könnt natürlich auch kleinere Intervalle beim Abruf der aktuellen Werte während des Tages verwenden, wenn gewünscht.
Das wars auch schon – ab sofort sollte euer Raspberry die Ertragsdaten automatisiert vom Wechselrichter holen und ihr könnt euch diese über ein kleines Webinterface anzeigen lassen.
Bei Fragen, Anregungen, Fehlern etc. könnt ihr wie immer gerne die Kommentarfunktion des Blogs unter diesem Artikel benutzen.
Bis bald!
Hi Alex, ich komme leier nicht weiter.
ich habe mich an deiner Doku orientiert und komme mit make release leider nicht weiter.
[email protected]:/home/fflachs/smaspot# make release
make: *** No rule to make target `release‘. Stop.
leider kenne ich mich mit Linux nicht gut genug aus um hier weiterzukommen.
vielen Dank Flax
Hi Flax,
welche Version von smaspot nutzt du? Evtl. ist die Anleitung veraltet und mit neueren Versionen nicht 1:1 anwendbar.
Es wurde wohl Anfang September Version 3.x rausgebracht, die einige Änderungen beinhaltet. Dazu würde ich die entsprechende Online-Dokumentation empfehlen.
Oder du verwendest einfach Version 2.x, wenn du auf die neuen Funktionen verzichten kannst. Ich bin immer noch bei 2.0.6 und alles funktioniert einwandfrei :)
Gruß,
Alex
wärst du so nett und würdest mir bitte deine Version des SMASpots mit dem zugehörigen PDF zukommen lassen ?
Die aktuelle SBFSpot Version weicht nun ziemlich ab so wird eine Datenbank benötigt und es werden auch nur noch 14 Tage Daten gezeigt, der Rest gegen Bezahlung.
Wäre nett
Vielen Dank
Hallo Flax,
hier hab ich dir mal den entsprechenden Ordner von mir gepackt (ohne kompilierte Version). Sollte es damit nicht funktionieren, melde dich einfach nochmal. Die „Original“-Downloaddatei habe ich leider nicht mehr. Das entsprechende PDF habe ich im Artikel verlinkt.
Gruß
kleiner Nachtrag … die Anzeige erfolgt jetzt über pvoutput.org.
Leider nicht das was ich wollte.
Mit wäre da die 2.06 Version lieber, die ich jedoch nirgendwo mehr im Netz finden kann
Siehe mein Kommentar oben ;)
sorry Alex,
hat jetzt ein paar Tage gedauert bis ich wieder dazu kam daran weiter zu arbeiten.
Leider bekomme ich es mit der unkompilierten Version nicht ans Laufen.
Viele Grüße
Flax
Hmm…bekommst du eine Fehlermeldung angezeigt?
Hallo Alex,
leider hat der Autor von SMAspot die Sourcen aus dem Netz genommen.
Hast du noch die Datei SMAspot_SRC_206_Linux_Win32.tar rumliegen und könntest sie mir zur Verfügung stellen? Wäre super
Bernhard
Hallo Bernhard,
das ist natürlich sehr ärgerlich, dass sich diese Version nirgends mehr finden lässt. Ich habe flax oben meinen smaspot-Ordner gepackt, damit scheint die Installation allerdings nicht zu klappen.
Ich kann bis Ende nächster Woche mal schauen, ob ich auf einem alten Backup der SD-Karte meines Raspberry Pis noch die ursprüngliche .tar-Datei finde (liegt auf einem anderen PC, der gerade nicht in meiner Wohnung ist).
Schöne Grüße,
Alex
Wie versprochen der Nachtrag: Leider kann ich die Datei nicht mehr finden, da ich nur noch Images ab Anfang September habe.
Funktioniert denn mein gepacktes Archiv gar nicht?
Hallo Alex.
Erstmal: Danke für die tolle Anleitung und das Web-Interface. Habe als Laie alles hinbekommen, sogar mit SBFspot 3.0.1. Es trägt Daten ins betreffende Verzeichnis ein, csv passt soweit. Im Web Interface werden sie aber nicht angezeigt, also Werte und Grafik fehlen bzw werden offensichtlich nicht gefunden. Das WEB-IF liegt imOrdner /var/www/pv/, die Ordner mit den Jahreszahlen eine Ebene drüber in /var/www/. In der Anleitung ist das etwas missverständlich ausgedrückt bzw werd ich nicht schlau draus. Muss ich etwas verschieben, oder gibts andere Ursachen? Danke schon mal. LG Markus
Hi Markus,
um das Interface ohne Anpassungen verwenden zu können, müssen die Ordner mit den Jahreszahlen unter /var/www/pv/ liegen, also z.B. /var/www/pv/2014 usw.
Sollten die Grafiken dann immer noch nicht angezeigt werden, könnte es an der neuen smaspot-Version bzw. deinem WR liegen, der ein anderes Format liefert. Du kannst dann das Webinterface entsprechend anpassen bzw. mir einem Beispieldatensatz zukommen lassen, damit ich das Webinterface bei Zeiten anpasse.
Schöne Grüße,
Alex
Hi Alex,
Danke für die schnelle Reaktion! Ich bin von selber drauf gekommen. Man kann in der Version 3.01 in der config einen Anlagen-namen vergeben. Deine html und skripte arbeiten aber standardmäßig mit der Bezeichnung „MyPlant“. Also wieder umbenannt, und schon flutscht es! Tolle Sache, dickes Lob!
Jetzt wärs noch cool, wenn man den Verbrauch mit einbinden könnte. Wollte mir mal nen IR-Lesekopf für meinen Zähler basteln. Die Einbindung wäre für jemand mit ein bisschen Ahnung sicherlich ein Klacks. Vielleicht hat ja jemand Tipps, der das hier liest… :)
Danke nochmal,
Markus
Hi Markus,
danke für die Rückmeldung!
Ja, meine Skripte arbeiten mit diesem Präfix, das zumindest in der von mir eingesetzten smaspot-Version Standardeinstellung war.
Zu dem Einbinden der Verbrauchsdaten kann ich leider wenig sagen, da ich meinen Zähler (zumindest aktuell) nicht auslesen. Wenn du die Werte allerdings wieder in .csv-Dateien speicherst, kannst du schön mit highcharts arbeiten, wie ich mit meinem Interface.
VG,
Alex
Hi,
Bei mir läuft es inzwischen auch mit der SBFspot Version 3.0.2. .
Zwei offene Punkte hab ich allerdings noch. Zum einen hakt es noch in den Cron Jobs und zum zweiten, habe ich noch einen zweiten Wechselrichter. Wie gehen deine Scripte denn damit um?
Außerdem, wie wäre es denn mit einem Button im Webinterface mit dem man den Abruf der aktuellen Daten starten kann?
Vielen Dank für deine tolle Anleitung
Vg
Rolf
Hi Rolf,
zu deinem Problem mit den cronjobs: Wenn du die Einträge wie ich übernommen hast, gibt es aktuell das Problem, dass der cron um 18 Uhr nicht ausgeführt wird, da dann schon Sonnenuntergang war, daher sollte um 18 Uhr auch „./get_pv_night.sh“ eingesetzt werden.
Oder gibt es ein generelles Problem mit den cronjobs?
Zu deinem 2ten Wechselrichter: Aktuell kann das Webinterface nur den einen darstellen. Für den 2ten WR müsste man smaspot entsprechend konfigurieren, dass es pro WR einen Datensatz mit spezifischem Präfix anlegt, also z.B. einmal „WR1-“ und dann noch „WR2-„. Um diese dann im Webinterface darzustellen, kann man 2 Ordner auf dem Server anlegen, in denen jew. das Auswertungsscript und die Datensätze liegen. Alternativ kann man natürlich auch beide auf einer Seite anzeigen, dann müsste man die highcharts-Darstellungen entsprechend anpassen – dazu fehlt mir aber im Moment leider die Zeit ;)
Zum Thema Button: Wenn man PHP verwendet, würde das recht simpel funktionieren, da hier nur HTML und JS verwendet wird, was beides Client-seitig arbeitet, wird das schwierig. Mit fällt zumindest gerade keine passende Lösung dazu ein.
Schöne Grüße,
Alex
Hi Alex,
Das Problem mit den Cronjobs habe ich jetzt soweit im Griff. Problem war das in der pv_night.sh der die Parameter nicht nehmen möchte. Aber jetzt klappt das.
Dann muss ich mal schauen ob ich das für den zweiten Wechselrichter angepasst bekomme. :) Problem ist da halt das dieser nur erreichbar ist so lange Strom produziert wird. Danach ist das Bluetooth Modul abgeschaltet und zu allem Überfluss hat dieser auch keinen Zwischenspeicher. Aber gut, ich schaue mal.
Wegen dem Button war ich heute schon in dem ein oder anderem Forum unterwegs. Das deckt sich alles mit deiner Aussage. Ich hoffe ein ehemaliger Arbeitskollege kann mir nächste Woche noch einen guten Tipp dazu geben. Vielleicht gibt es ja doch noch eine Möglichkeit.
Vielen Dank. :-)
Hallo. Du hast ja mal einen super Blog. Dank deiner Anleitung hab ich diese art von Überwachung auf anhib ans laufen gebracht. Jetzt zu meiner eigentlichen Frage. Gibts ne möglichkeit den/die wechselrichter über RS485 auszulesen und dann zu Visualisieren?
Danke für deine Antwort ;-)
Hi HimbeerOlli,
schön, dass die Anleitung bei dir gleich funktioniert hat :)
Zu deinem Anliegen: Um den WR über RS485 auslesen zu können, wird eine andere Software benötigt. Diese wäre für SMA-Wechselrichter 485solar_get und müsste auch auf dem Raspberry Pi laufen und mit einem entsprechenden USB-Adapter auf RS485 den WR auslesen können. Leider habe ich das bisher dank Bluetooth bei meinem WR noch nicht umgesetzt und weiß nicht genau, wie das Ausgabeformat dort aussieht.
Ich probiers dann mal aus ;-). Wenns läuft gebe ich hier rückmeldung. Gibts bei deinem Webinterface auch eine Funktion mit der man mehrere Jahre vergleichen kann?
Leider (noch) nicht. Ist aber in der Todo. Muss mir noch überlegen, wie ich das schön visualisieren kann und dann die Lust und Zeit finden, das umzusetzen. Wird also noch etwas dauern ;)
Über eine Rückmeldung würde ich mich freuen!
Hi Alexander
Habe eben das Projekt erfolgreich mit aktuellen Version 3.0.3 von SBFspot umgesetzt. Tolle Anleitung von Dir, herzlichen Dank dafür (obwohl noch auf V2 basierend kommt man durch).
Folgende Details noch von meiner Seite:
– Bei mir bleibt die Ansicht „Verlauf erzeugte Energie“ auf der Webseite leer, der Rest wird angezeigt
– Die Skalierung scheint mit etwas grob zu sein, gibt es hier die Möglichkeit, etwas granularer zu loggen und anzuzeigen? (wäre vermutlich Sache von SBFspot)
– Die grauen Balken sind etwas gar trist, kann man die farbliche Anzeige (z.B. rot statt graue Balken) einfach anpassen?)
Im weiteren Verlauf habe ich noch folgendes vor:
– Einbindung eines netzseitigen Zählers mit Visualisierung des aktuellen Bezugs und der aktuellen Produktion
– zweites WebUI ohne Graphen, lediglich zur Anzeige der aktuellen Daten, optimiert für Smartphone/Tablet (als Beispiel wie hier gezeigt: https://www.seventeenfour.com/index.php/sma-wechselrichter-und-raspberry-pi/)
Danke + Gruss, Stefan
Hi Stefan,
schön, dass es mit der neuen Version auch klappt!
Zur Verlaufs-Grafik: Hast du mal einen kurzen Beispieldatensatz? Evtl. wurde die Reihenfolge in der täglichen .csv-Datei geändert.
Zur Skalierung: Das dürfte mit dem WR zusammenhängen, wie genau dort die Daten ausgegeben werden können. Bei meinem WR werden die Daten im 5-Minuten-Takt aktualisiert.
Zum Balken: Klar, die Farbe lässt sich natürlich anpassen ;) Da ich highcharts nutze, verweise ich mal auf deren Referenz. Dazu muss die Datei „plot_graph_months.js“ entsprechend erweitert werden.
Viel Erfolg auch mit der Erweiterung!
Hi Alexander
Bezüglich der Skalierung habe ich gesehen, dass die Datenrecords im csv mit einem , als Dezimaltrennzeichen geschrieben werden von SBFspot, Highcharts erwartet jedoch ein . Bisher habe ich nicht herausgefunden, wie ich Highchart dazu bewegen könnte, ein , als Dezimaltrennpunkt zu akzeptieren. Als Workaround ersetze ich deshalb jeweils mit einem Shell-Kommando (sed) die , im csv durch ein ., damit funktioniert die Anzeige problemlos. Ebenfalls wird damit auch der Graph für die erzeugte Energie perfekt angezeigt. Und das ganze auch in meiner Wunschfarbe. Saubere Sache!
In der Zwischenzeit habe ich auch nachgelesen, dass der SMA Energy Meter (Zähler für den Netzbezug) am SBFspot 3.1 ebenfalls ausgelesen und die Daten damit visualisiert werden können. Ich werde mal abwarten, bis die Version zur Verfügung steht und mir dann ein SMA Energie Meter zulegen. Danach werde ich Dein Projekt noch so anpassen, dass die Daten aus der sqlite3 Datenbank ausgelesen werden und zusammen mit dem Netzbezug in einem Chart visualisiert werden. Könnte aber wohl Sommer oder Herbst werden, bis es dann soweit ist.
Gruss, Stefan
Hallo Stefan,
hast du mal in der SMAspot.cfg bzw. SBFspot.cfg nachgeschaut? Ich musste (wie im Artikel beschrieben) den Eintrag „DecimalPoint=comma“ in „DecimalPoint=point“ ändern. Ob das bei den aktuellen Versionen genau so geht, kann ich allerdings nicht sagen.
Hallo Alex,
leider ist meine Browser-Seite ohne Daten, nur die Anzeieg Tagesdaten und Monatsdaten ist zu sehen.
Die Daten (csv-Dateien) liegen unter /var/www/2015. Ich habe Daten mit Kopfzeielen und ohne Kopfzeilen probiert. Leider ohne Erfolg. Java ist aktiviert und aktuell.
Was kann ich tun?
Danke + Gruß Bernd
Hi Bernd,
hast du mal eine Beispiel-csv?
Was du noch machen könntest: Beim Firefox-Browser gibt es unter Extras–>Web-Entwickler–>Web-Konsole (bei Mac OSX, kann bei Windows bzw. Linux an anderer Stelle sein) ein kleines Tool, das dir die JavaScript-Fehler anzeigt. Stehen da irgendwelche Meldungen drin, wenn du die Seite aufrufst?
Btw.: Java wird bei diesem Webinterface nicht benötigt, es basiert rein auf HTML und JavaScript (+jQuery).
Hallo Alex,
meine csv-Datei:
sep=;
Version CSV1|Tool SE|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint comma|Precision 3
;SN: xxxxxxxxx;SN: xxxxxxxxx
;STP 5000TL-20;STP 5000TL-20
;xxxxxxxxx;xxxxxxxxxx
;Gesamtertrag;Leistung
;Counter;Analog
dd.MM.yyyy HH:mm:ss;kWh;kW
21.01.2015 00:00:00;6185.429;0.000
21.01.2015 00:05:00;6185.429;0.000
21.01.2015 00:10:00;6185.429;0.000
21.01.2015 00:15:00;6185.429;0.000
21.01.2015 00:20:00;6185.429;0.000
21.01.2015 00:25:00;6185.429;0.000
21.01.2015 00:30:00;6185.429;0.000
21.01.2015 00:35:00;6185.429;0.000
21.01.2015 00:40:00;6185.429;0.000
21.01.2015 00:45:00;6185.429;0.000
21.01.2015 00:50:00;6185.429;0.000
21.01.2015 00:55:00;6185.429;0.000
21.01.2015 01:00:00;6185.429;0.000
21.01.2015 01:05:00;6185.429;0.000
21.01.2015 01:10:00;6185.429;0.000
21.01.2015 01:15:00;6185.429;0.000
21.01.2015 01:20:00;6185.429;0.000
als Browser benutze ich Chrome oder IE unter XP.
Fehler finde ich keine.
Gruß Bernd
Nachtrag;
ich benutze SBFspot 3.0.3 (MySQL) auf einem Raspberry pi.
Hallo Bernd,
die Datei sieht soweit sehr gut aus, habe sie mal schnell bei mir getestet – funktioniert problemlos (gerader Strich bei 0kW in der Tagesansicht, da Beispieldatensatz nur bis 1:20Uhr und somit dort kein Ertrag). Unter welchem Dateinamen hast du sie denn gespeichert?
Du hast ja geschrieben, dass du sie unter „var/www/2015“ gespeichert hast. In der Anleitung bin ich immer von einem zusätzlichen Ordner „pv“, also „var/www/pv/2015“ ausgegangen. Ich habe gerade gesehen, dass ich der Ordnerstruktur im Tutorial nicht immer sauber gefolgt bin und habe die Stellen nun aktualisiert. Sorry dafür!
Hallo Axel,
nun klappt’s. Die Ordnerstruktur war’s.
Danke für Deine Mühe.
Gruß Bernd
Hallo Alex,
da ich mich erst in Java (jQuery) einarbeiten möchte. Vorab zwei Fragen:
1. kann man das Daten-Verzeichnis (csv-Dateien) auch außerhalb /var/www/pc/Jahr verlegen, zum Bsp. auf’s NAS oder USB-Stick ?
2. Kann man mittels Highcharts die Diagramme erweitern, z.Bsp. Eigenverbrauch, Einspeisung usw. ?
Danke + Gruß Bernd
Hey Bernd,
JavaScript, nicht Java! Das sind 2 komplett unterschiedliche Sachen ;) Nicht, dass du dich am Ende noch in die „falsche“ Sache einarbeitest.
Zum Datenverzeichnis: Dieses muss auch von außen über den Webserver erreichbar sein. Wenn die Rechte für den User „www-data“ (der Nutzer für Apache) entsprechend gesetzt sind, sollte das klappen.
Zur Erweiterung: Mit Highcharts kannst du seeeehhhr viel machen und es ist auch recht einfach anpassbar. Für Eigenverbrauch, Einspeisung etc. kannst du einfach neue Diagramme mit dem gewünschten Aussehen erstellen. Am Besten klickst du dich mal durch die Demos auf deren Seite durch und suchst dir die passenden Diagrammarten dazu. Über die verlinkten jsfiddle´s kannst du erste Bearbeitungen der Diagramme gleich im Browser durchführen – das ist alles recht einsteigerfreundlich geregelt.
Hallo Alexander,
folgendes Problem ich habe dank deiner Anleitung alles auf dem Raspberry zum laufen bekommen. Ich bin was das bauen von Weboberflächen angeht recht bewandert und habe mich mal daran gemacht dein Webinterface zu verbessern welches ich bei Fertigstellung auch gerne zur Verfügung stellen würde nur ist das Problem das ich die Ganze Geschichte für meinen Vater einrichte und hier keinerlei Datensätze einer Solaranlage besitze. Da mir die Solaranlage aber auch fehlt und ich den Raspberry später gerne einfach anstöpseln möchte ohne Großes umschreiben. Ich bräuchte also von jemandem ein kompletten Datensatz beispielsweise den kompletten Januar. Das heißt laut deiner Anleitung Alexander wären das alle Täglichen und die Monatliche CSV. Damit wäre mir unheimlich geholfen – weil ohne Datensatz lässt sich schlecht ein Interface schreiben.
Vielen Dank schonmal für die Anleitung.
P.S. : Anstatt von APACHE würde ich auch allen raten LIGHTTPD als Webserver auf dem Raspberry zu installieren da APACHE recht groß und speicherhungrig ist. Anleitung : http://developer-blog.net/hardware/raspberry-pi-lighttpd-webserver/
Hi Jan,
hab dir gerade eine Mail gesendet.
Hallo Jan,
deine Lösung zur Anzeige der Verbrauchsdaten finde ich sehr gelungen, hats du sie weiterentwickelt?
Wäre an einer Aktualisierung sehr interessiert.
Auch was die Anzeige der Wetterdaten angeht, die sind in der „alten“ Version ja ausgeblendet, bzw. die Datei „Wetter.html“ fehlt.
Vielen Dank dafür schon vorab.
PS: Alex, anhand deiner Anleitung konnte ich SBFspot auf meinem PI installieren und auch die Datenablage für die CSV-Dateien erstellen. Das ganze klappt hervorragend, Danke.
Hallo Alexander,
ich habe heute auf der Suche nach Lösungen für die SMA-WR-Daten deine Seite entdeckt und werde das auch sicher ausprobieren.
Ich habe zwei Fragen:
1) Reicht ein RPi B (also altes Modell) aus?
2) Deine Lösung besteht offenbar aus zwei Teilen: A – Bereitstellung der Daten und B – Darstellung im Webfrontend. Kann man den ersten Teil einfach so durch die „offizielle“ Anleitung für SBFplot ersetzen oder ist dann das Datenformat erstmal unbrauchbar für den zweiten Teil?
Gibts von Jan schon Feedback, bzw ist der Wechsel auf lightpd problemlos machbar?
Hi Georg,
zu deinen Fragen:
1) Ja klar, das Model B reicht vollkommen aus, hier wird kaum Rechenleistung benötigt (zum Zeitpunkt der Arikelveröffentlichung gab es den 2er auch noch nicht)
2) Falls du SBFspot meinst: ja, das geht. Du solltest halt die beschriebenen Änderungen am Speicherort und dem Dezimaltrennzeichen gemäß der Anleitung übernehmen, um keine Probleme mit dem Webinterface zu bekommen.
Jan hat mir das Interface schon vor einiger Zeit geschickt, leider bin ich bisher noch nicht dazugekommen, das überarbeitete Interface hier zu veröffentlichen (waren ein paar kleinere Bugs drinnen, sieht aber sehr ansprechend aus). Ich schau mal, dass ich es in naher Zukunft hier mal bereitstelle (wie mit Jan abgesprochen).
Zu lighttpd: Auch dazu bin ich bisher noch nicht gekommen, sehe allerdings überhaupt keine Probleme damit. Das Webinterface ist sehr stark Client-basiert, sodass der verwendete Webserver relativ egal sein sollte.
Hallo Alexander,
ich hab die Lösung mit lighttpd ohne Probleme ans Laufen bekommen. Ist offenbar DAU-proof :-)
Jetzt werde ich mal bei HighCharts schnüffeln, wie man zus. Infos anzeigen kann (70%-Deckelung, SMA-EnergyMeter-Daten u.ä.) und eine einfache Vor-Zurück-Navigation für den benachbarten Tag austüfteln.
Danke für die Anleitung
Hey Georg,
schön zu hören, dass es mit lighttpd auch problemlos ging :)
Highcharts sind meiner Meinung sehr anwenderfreundlich und doch flexibel. Viel Erfolg!
Hey Alexander, könntest du das Webinterface von Jan eventuell schon mal mit den „kleineren Bugs“ zur Verfügung stellen? thx!!
Hi Leo,
ich habe hier mal das Interface hochgeladen.
Hallo Alexander
Man kann ja in SBFspot einstellen das die Daten auch Monats weise in Ordnern gespeichert werden. Also Haut Jahr 2015-01 für Monat Januar usw usw. Aber leider werden mir die Daten nicht mehr angezeigt. wenn ich die csv Dateien in die Monats Ordner packe. Kannst du mir da weiter helfen??
Gruß Tim
Habe gerade die webweite von Leo gesehen sehr cool von Design aber wo muss ich die webweite hinschieben das die die Daten anzeigt??
gruß Tim
Hi,
zu dieser Frage: Jan hat das sehr gut gelöst, indem er die Pfadangaben in eine .js-Datei ausgelagert hat. Schau dazu in die custom.js.
Hallo Alexander
Als danke für deine Antwort wie soll diese Pafad Angabe aussehen??
Bei mir liegen die Daten in einem anderen Ordner aber sollte doch eigentlich egal sein.
bsp:
var csv_folder = ‚var/www/pv/2015/‘; // Ordner in welchem deine CSV Daten abgelegt werden. ( ending ‚/‘ is required)
var plant_name = ‚MyPlant‘; // Name der Anlage – eingetragen in deine SBFspot.cfg (Default : MyPlant)
Hi Tim,
der Ordner muss bei „var csv_folder“ eingetragen werden, also z.B. „/“ für „/var/www/“ oder „/pv/“ für den Ordner „pv“ unter „/var/www/“.
Aber wie gesagt: Die in den Kommentaren verlinkte Version hat auch noch ein paar kleinere Bugs, daher eher was für Leute, die sich mit Web-Entwicklung etwas auskennen und diese selbst fixen können.
Hallo Tim,
wenn du die Ordnerstruktur wirklich ändern willst, musst du die entsprechenden Variablen in der index.html anpassen („today_logfile“ usw.). Für den Anfang würde ich empfehlen, die beschriebene Ordnerstruktur zu übernehmen.
Hallo Alexander,
Ich habe es erfolgreich zum laufen gebracht mit 3.0.3.
Bei „Verlauf erzeugte Energie“ werden beim mouseover die kWh mit 15 Nachkommastellen angezeigt, das ist nicht so schön ;)
Kann man das ändern? und falls ja wie?
Danke schonmal, super Tutorial!
Hi Tim,
ja, das geht ganz einfach mit JS-eigenen Methoden. Am einfachsten wohl so:
In der „plot_graphs_daily.js“ unter
kWh_float = parseFloat(kWh) - kWh_start_float,
einfach z.B.kWh_float = parseFloat(kWh_float.toFixed(2)),
einfügen, dann sollten die Werte auf 2 Nachkommastellen gerundet werden. Die Anzahl der Stellen kannst du natürlich auch anpassen (einfach intoFixed(x)
x mit einem beliebigen Nachkommastellenwert ersetzen).Hallo,
Leider funktioniert es nicht :/
Wenn ich die Zeile folgendermaßen ändere:
„kWh_float = parseFloat(kWh.toFixed(3)) – kWh_start_float“
bekomme ich in der Konsole vom Chrome folgenden Fehler:
„Uncaught TypeError: kWh.toFixed is not a function“
Wenn ich es exakt so ändere wie von dir vorgeschlagen:
„parseFloat(kWh_float.toFixed(2))“
kommt folgendes:
„Uncaught ReferenceError: kWh_float is not defined“
Ich denke „kWh_float“ ist nicht die richtige Variable, sondern nur „kWh“?
Unabhängig davon habe ich noch ein Problem festgestellt: bei den Tageserträgen werden die Daten vom 13.9. im Balken vom 14.9. dargestellt, sprich alle Tage sind um eins verschoben :)
Hallo Tim,
zu dem Nachkommastellenproblem: es sollte eigentlich mit diesen 3 Zeilen problemlos funktionieren:
kWh = items[1],
kWh_float = parseFloat(kWh) – kWh_start_float,
kWh_float = parseFloat(kWh_float.toFixed(2)),
Habe es selbst getestet, sollte eigentlich funktionieren. Kanne es sein, dass du die Zeile ersetzt statt hinzugefügt hast?
Zu den Tageserträgen: Komisch, hast du vielleicht mal eine Logdatei? Dass heute (14.9.) nur bis gestern (13.9.) dargestellt werden, ist klar, aber warum überhaupt ein Balken für den 14.9. auftaucht ist mir rätselhaft.
Ja ich hatte die Zeile ersetzt, jetzt funktioniert’s mit den Nachkommastellen! :)
Ich habe einen Balken von heute (14.9.) mit den Werten von gestern und so weiter.
Wo finde ich die Logdatei?
Hi Tim,
schön, dass es geklappt hat :)
Die Logdatei für den aktuellen Monat sollte unter „/var/www/pv/2015/MyPlant-201509.csv“ zu finden sein, wenn du die Ordnersturktur übernommen hast.
Version CSV1|Tool SBFspot3.0.3 (Linux)|Linebreaks CR/LF|Delimiter semicolon|Decimalpoint dot|Precision 3
xxxx xxxx
Total yield Day yield
Counter Analog
dd/MM/yyyy kWh kWh
01.09.2015 27.707.692 24.983
02.09.2015 27.720.904 13.212
03.09.2015 27.733.010 12.106
04.09.2015 27.739.365 6.355
05.09.2015 27.752.873 13.508
06.09.2015 27.769.654 16.781
07.09.2015 27.787.161 17.507
08.09.2015 27.795.765 8.604
09.09.2015 27.807.973 12.208
10.09.2015 27.825.958 17.985
11.09.2015 27.850.789 24.831
12.09.2015 27.873.479 22.690
13.09.2015 27.896.121 22.642
14.09.2015 27.911.025 14.904
Die 14.9 kWh waren am 13.09.
Interessant ist vielleicht auch, dass die csv von gestern den richtigen Namen hat: „MyPlant-20150913“
Trotzdem werden die Werte in dem Balken von heute dargestellt
Hallo Tim,
in der Monatsansicht benutzt das Interface nicht die Tages-csv´s, sondern nur die Monats-csv´s, da damit weniger Datensätze eingelesen werden müssen und das eigentlich reichen sollte.
Wenn ich dich richtig verstehe, siehst du bei der Monatsübersicht für den 14.9. irrtümlicherweiße 14,9kWh, oder?
Kann es sein, dass am WR das falsche Datum eingestellt ist? Die Javascript-Funktion liest eigentlich nur die monatliche .csv aus und zerlegt die einzelnen Zeilen in Datum und Werte – hier kann eigentlich kaum was schief laufen. Komischerweise ist in deiner csv auch ein Eintrag für den 14.9. drin – obwohl dieser erst nach heute abrufbar sein sollte. Vom Datensatz her fallen mir sonst keine Besonderheiten auf.
Ich habe das Problem auch. Die erzeugte Energie vom 15.9 wird in der Monatsansicht am 14.9 angezeigt und der 15.9 fehlt dort.
Das ist aber in der CSV schon falsch.
Das Datum bei den Tagesansichten passt.
Scheinbar liefert SBFSpot die Werte für die Monats-CSV um einen Tag verschoben.
Hallo Normen,
vielen Dank für den hilfreichen Kommentar!
Das ist natürlich ärgerlich – man könnte natürlich die Javascript-Dateien umschreiben, dass die Daten immer in den Vortag gerendert werden, aber ich denke das macht wenig Sinn. Am besten dann eine ältere Version installieren, damit sollte es (hoffentlich) funktionieren.
Hallo Alexander,
ist Dir das auch schon mal passiert, dass plötzlich keine Daten mehr von WR kommen?
Vor zwei Tagen um 13:10 habe ich die letzten Daten bekommen. Seitdem kann ich mich von meinem Raspi nicht mehr mit dem WR verbinden. Per Handy kann ich eine Verbindung aufbauen (hat auch jetzt im Dunkeln noch funktioniert). Es kommen dann auch Daten raus, aber vom Raspi sehe ich nur die zwei anderen WRs. Den ersten finde ich einfach nicht mehr.
Gruß
Björn
Hi Björn,
ich hatte vor einiger Zeit einmal das Problem, dass wohl der Bluetooth-Daemon abgestürzt ist (bluetoothd), sodass die Kommunikation mit dem WR scheiterte („hcitool scan“ lieferte dann nur noch Timeouts). Das scheint aber bei dir nicht das Problem zu sein, wenn die anderen WR noch gefunden werden.
Leider habe ich gerade auch keine Idee, was ein derartiges Problem auslösen könnte :(
Hat schon jemand eine Möglichkeit gefunden die Daten vom SMA Energy Meter abzugreifen, z.B. mit SBFspot?
Hi Björn,
Stefan hat weiter oben in den Kommentaren hier geschrieben, dass die Unterstützung dieses Gerätes für die Version 3.1 von SBFspot vorgesehen war. Scheinbar wurde die Funktion noch nicht integriert, wenn man dem entsprechenden Wunsch auf der SBF-Seite glauben darf, aber es soll weiter daran gearbeitet werden. In der verlinkten Seite wurde auch ein Python-Script auf GitHub verlinkt, dass die Daten wohl auslesen kann. Keine Ahnung, ob das funktionsfähig ist und wie es arbeitet, aber du kannst es ja mal testen.
Hi Alexander,
Danke für den Hinweis. Habe das Python-Script probiert und zum Laufen gebracht. Ich muss mich aber noch weiter damit befassen.
Andere Frage: Ist eigentlich das Problem mit den um einen Tag verschobenen WR-Ertragsdaten gelöst (siehe oben)? Ich habe das gleiche Problem.
Danke!
Hallo Björn,
nutzt du die neueste Version von sbfspot? Wenn es da immer noch nicht gelöst wurde, dann leider nicht :(
Mein JavaScript liest nur die .csv-Dateien aus – wenn dort das falsche Datum drinnensteht, wird es auch so angezeigt. Man könnte das Script natürlich so umschreiben, dass das Datum angepasst wird – also eigentlich das Datum des Vortages verwendet wird.
Ja, ich nutze die neuste Version. Das Problem scheint noch nicht behoben zu sein.
Hallo;
ist noch eine Ansicht für die Monate und oder Jahre geplant ?
Gruß Klaus
Hallo Klaus,
momentan leider nicht – an dem Projekt habe ich die letzte Zeit nicht weitergearbeitet.
Für die Monatsansicht müssten z.B. alle Monats-CSVs eingelesen werden und die Endwerte über Highcharts gerendert werden, für Jahre die kumulierten Monatswerte pro Jahr.
Wer sich in JavaScript etwas einarbeitet, bekommt das sicher schnell hin.
Hi,
SBFSpot hab ich ans Laufen bekommen und kann mir die Werte auch anzeigen lassen. Allerdings gelingt mir die grafische Darstellung nicht. Du schreibst, bezüglich der SBFspot.cfg: „deaktiviert PVoutput, indem ihr „PVoutput=1“ zu „PVoutput=0“ ändert“
Ich nutze SBFspot 3.14 und dieser Wert PVoutput befindet sich gar nicht in der Datei. Auch wird keine csv Datei abgelegt.
Bin ratlos. Ansonsten ist die Anleitung super!
Hallo davy_jones,
leider nutze ich diese Version nicht, sodass ich gerade keine Config-Datei hier habe. Könntest du mir diese eventuell zukommen lassen – dann kann ich vielleicht weiterhelfen ?