Daten von einem SMA SunnyBosy Wechselrichter per RS485 auslesen
Published on April 14, 2020 by Jörn Karthaus
rpi Projekt IOT SmartHome
3 min READ
Das Projekt SMA Data Logger habe ich schon vor einiger Zeit begonnen, aber bislang noch nicht im Blog explizit vorgestellt.
Das Projekt wurde im Rahmen eines kleineren Wettbewerbes der Eclipse IOT Challenge begonnen.
Im Rahmen der Challenge werkelte die Software seitdem problemlos vor sich hin. durch Weiterentwicklung des Heating Control Projektes, habe ich wieder einen neuen Focus auf den Datalogger bekommen.
Daher stelle ich das Projekt und die aktuelle weiterentwicklung hier ausführlicher vor.
Moderne Photovoltaik AD/DC Wandler haben meist eine Bluetooth oder WLAN Schnittstelle Onboard mit der über eine entsprechende APP die Daten des Wandlers ausgelesen werden können.
Der bei mir verbaute SMA Sunny Boy 5000TL ist werksseitig nur mit einer RS485 Schnittstelle ausgerüstet.
Der bei der Installation mitgekaufte Datalogegr war leider properitär und konnte die Verbrauchsdaten nur per FTP an eine vom Hersteller bereitgestellte Website senden.
Als dann der Datalogger im letzten Jahr komplett seinen Dienst quittierte, war die Zeit gekommen eine andere Lösung zu suchen, die sich auch in meine Home Automation entwicklungen einfügt.
Glücklicherweise hat die Firma SMA das Protokoll des Wechselrichters als freie Software zur Verfügung gestellt.
YASDI von SMA
Mit folgendem Projekt existiert ein JAVA Binding für die in C vorliegende YASDI Bibliothek
YASDI4J
Basierend auf diesen vorhandenen Bausteinen ist der SMADataLogger entstanden.
Die Software connektiert sich alle 8 Sekunden mit dem per RS485 angeschlossenen Wechselrichters. Dann werden die aktuellen Werte des Wechselrichters abgefragt und :
Die Daten werden nur in der Zeit nach Sonnenaufgang bis Sonnenuntergang erfasst. Hierzu wird in der application.properties der Längen und Breitengrad hinterlegt.
Hier die Schema Darstellung des Projektes:
Der SMADataLogger ist eine Spring Boot Anwendung.
Die Software ist primär für den Betrieb auf einem Raspberry Pi entwickelt.
Um die Anwendung einfach in Betrieb zu nehmen habe ich ein [Ansible Script] entwickelt, das alle erfordercihen Konfigurationen und Installationsschritte automatisch durchführt.
Das Ansible Script ist teil des Projektes auf Github
Folgende Tasks werden ausgeführt:
1.Install
Kopiert alle zur Anwendung notwendigen Dateien nach /opt/smaDataLogger auf dem Ziel Pi.
Die notwendigen Systemkonfgurationen für den RS485 HAT werden durchgeführt.
2.Service Konfiguriert die Anwendung als System Service auf dem Ziel RPI.
3.Logrotate Konfiguriert den Syslog Service um ein rotierren des Logfiles durchzuführen.
Alle Einstellungen können nach der Installation in der Datei /opt/smaDataLogger/application.properties Datei
auf dem Ziel-RPI vorgenommen werden.
Der Längen und Breitengrad sind erforderlich, um den Sonnenauf sowie untergang zu berechnen.
Der SMA Wechselrichter trennt sich kurz nach Sonnenuntergang vom Netz, nach diesem zeitpunkt kann per Schnittstelle keine Verbindung mehr aufgebaut werden. Um nicht permanent nach einer möglichen Verbindung zu testen, wird nur nach der Sonnenaufgangsphase bis zur Sonnenuntergangsphase Daten abgerufen.
Zur Umsetzung der RS485 Verbindung habe ich folgenden RPI HAT verwendet :
https://joy-it.net/de/products/RB-RS485
Das Modul ist günstig und funktioniert bislang problemlos.
Die notwendigen Einstellungen in der /etc/inittab werden durch das beschriebene Ansible Script durchgeführt.
Auf dem Rechner, von dem aus installiert wird :
Los gehts ./install.sh
have fun …