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!
Hallo,
ich habe das gleiche Problem wie davy_jones. In der SBFspot.cfg gibt es keine Punkt „PVoutput=1“ mehr der geändert werden könnte und obwohl ich den Outputpfad auf /var/WWW/pv/ geändert habe, werden im Ordner 2016 und in keinem anderen Ordner .csv-Dateien angelegt.
Hat vielleicht irgendjemand, der hier mitliest, bereits die Version 3.14 zum laufen bekommen ?
Outputpfad ändern auf /var/WWW/pv/%Y
Sehr cool. Besten Dank. Ich nutze den aktuellen SBFspot, incl. PVoutput. Die Daten synchronisiere ich dann via RSync in das Verzeichnis der Anwendung incl. Änderung mit sed des Dezimaltrenners und das funzt wie doll.
Hallo,
ich habe das Problem, dass meine SQLite-Datenbank nicht aktualisiert wird. Die CSV-Dateien werden immer wieder befüllt. Aber im selben Abstand (bei mir 15 Minuten) muss doch auch die DB neu geschrieben werden, oder?
Gruß
DreiBaer
Hi,
sehr coole Sache, funktioniert soweit, außer im Webinterface bleiben die Diagramme leer.
csv Dateien und SQLite Datenbank werden aber korrekt gefüllt.
Irgendeine Idee woran das liegen könnte?
Hallo,
spontan nicht – schaue am Besten mal in die Konsole deines Browsers, ob und wenn ja, welche Fehlermeldungen kommen.
Ansonsten kannst du mir gerne mal eine Beispiel-.csv-Datei zukommen lassen und ich schaue mal drüber.
OK, wieder etwas gelernt….
Fehler gefunden, ich hatte schlicht und einfach nicht den Standardnamen „MyPlant“ für die Anlage verwendet – selbst schuld :-).
In den html Dateien umbenannt und die Sache läuft, supi.
Danke dir und guten Rutsch
Heyho,
super tool. Habe alles hinbekommen bis auf eine Kleinigkeit. Dickes Lob!
Background: Den Verbrauchs-chart kann ich mir auf dem RPI-integrierten Browser anschauen. Also haut alles mit dem Datenabgriff und der Verzeichnisstruktur hin…
Wenn ich allerdings bei meinem Desktop-PC die Daten gemäß http://xxx.xxx.xxx.xxx/pv/ anschauen möchte, gibt’s ne http404-Fehlermeldung.
Wenn ich einfach auf http://xxx.xxx.xxx.xxx/ gehe, dann sehe ich die normale Apache-Willkommensnachricht … also der Zugriff auf den RPI haut hin, nur nicht ins pv-Verzeichnis.
Das pv-Verzeichnis ist übrigens im /var/www-Verzeichnis
Hat einer eine Idee, woran’s hängt – was habe ich überlesen?
Thx a lot!
Hallo Mork,
bei neueren Apache-Versionen sollte es im Verzeichnis /var/www/ einen Ordner „html“ geben. Falls das bei dir der Fall ist, schiebe den pv-Ordner einfach dort hinein. Die config von SBFspot natürlich entsprechend anpassen.
Läuft – das war’s – Danke Dir!
Hallo zusammen, geht das Ganze auch ohne SQL Datenbank? Ich würde die Daten gern mit dem Raspi per Bluetooth abholen und dann anderweitig weiterverarbeiten.
Hallo Eckhard,
da ich hier auch keine SQL-Datenbank nutze – ja! ?
Hallo,
in welchem Format muss das Datum vorliegen?
Ich habe zur Zeit folgendes eingestellt und bei mir wird zwar die Seite angezeigt, aber keine Daten aus der CSV-Datei gelesen:
DateTimeFormat=%Y-%m-%d %H:%M:%S
Gruß
DreiBaer
OK, es muss folgendes Format sein:
DateTimeFormat=%d/%m/%Y %H:%M:%S
Hallo!
Ich würde mir gerne die Momentane Leistung auf meiner
Webseite anzeigen lassen.
(Als Zahl – alle 5 min abrufen)
Hast du dafür eine Lösung?
Hallo Tito, darüber denke ich auch gerade nach. Aktuell holt SBFspot meine Werte aller 5 Minuten ab. Die jeweiligen Momentanwerte kannst du aus der Datenbank aus der Tabelle SpotData oder dem View Vwspotdata auslesen.
Ich hätte das aber gern in realtime, so wie der SMA Sunny Explorer das kann. Dazu müsste SBFspot kontinuierlich laufen, was wiederum sehr viele Spotwerte in der Datenbank zur Folge hätte. Evtl. kann man alle Werte der Vortage löschen. Hat jemand dazu eine Idee?
Hallo!
Ich habe mehrere Wechselrichter die ich gerne gleichzeitig abfragen und anzeigen möchte. Lässt sich das auch realisieren?
Hallo Daniel,
das sollte möglich sein seit Version 2.4.5. Für jeden WR muss eine eigene Konfigurationsdatei erstellt werden.
Hallo! Ist es denkbar die Inhalte auch über eine MYSQL Datenbank zu füllen?
Hallo !
Ich versuche gerade SBFSpot zum laufen zu bringen, aber ab dem „make“ ist aus….
Mein Betriebssystem ist: Ubuntu 16.04_64bit?
Hast du einen Tipp?
Wo hagts genau?
Super Sache und super Anleitung.
Nutze auch dein Webinterface. Es ist sehr aufgeräumt und übersichtlich.
Was mir noch fehlt, wäre eine Jahresübersicht. Also einfach Balken nebeneinander nur mit den Gesamt-kw/h pro Jahr.
Du hast nicht zufällig Zeit und Lust sowas zu implementieren? ;o)
LG Peter
Hallo,
Anleitung ist echt Klasse. Ist es auch möglich die Daten der Wechselrichter über das Protokoll RS485 auszulesen oder geht es nur mit den Bluetooth fähigen Wechselrichtern?
Anschließend an den letzten Kommentar, täte mich auch interessieren, ob man anstatt Bluetooth Wlan nutzen kann, wie es zB bei den SMA Sunnyboy 3.6
Hallo,
vielen Dank für die schöne Anleitung. Ich bin auf den Installer von SBFspot gestoßen. Installiert sich fast von selbst: https://github.com/SBFspot/sbfspot-config
Wie kann ich bei der Monatsansicht das Jahr 2009 wählbar machen? Ich habe schon in der „pv_month.html“ Datei den Wert „minDate: new Date(2011, 09 – 1, 1),“ durch „minDate: new Date(2009, 11 – 1, 1),“ ersetzt. Dann kann ich aber erst das Jahr 2009 auswählen, nachdem ich 2011 ausgewählt habe, weil 2009 nicht direkt bei der Jahresauswahl angezeigt wird.
Eine Jahresansicht der Gesamtleistung wäre schön. Von 2009 – 2021. Leider kenne ich mich auf dem Gebiet nicht so gut aus.
Lukas
Hallo,
vielen Dank für die sehr gute Anleitung. Ich verwende die Auswertung jetzt über 2 Jahre und alles lief hervorragend. Seit einiger Zeit kommt aber beim Aufruf aus dem Browser die Fehlermeldung „This is not the page you are looking for“ / “ The file /pv couldn’t be found“. Die Daten sind im Verzeichnis /var/www/html/pv alle vorhanden. An was kann es liegen, dass ich nicht mehr auf die Auswertung zugreifen kann?
Jens
Da die Raspberrys momentan unbezahlbar sind, hab ich mich mal an eine Variante mit einem günstigen ESP32 gewagt. Meine Wechselrichter werden damit per Bluetooth ausgelesen und der Ertrag alle paar Minuten an PVoutput.org übertragen.
https://github.com/steff393/SmartUploader