Jörn - Karthaus.de
willkommen auf meiner Website

SMA Data Logger


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.

overview

Entstehung des Projektes

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.

Was kann der DataLogger ?

Die Software connektiert sich alle 8 Sekunden mit dem per RS485 angeschlossenen Wechselrichters.
Dann werden die aktuellen Werte des Wechselrichters abgefragt und :

  1. An einen MQTT Broker versendet
  2. Optional in eine influxDB Datenbank geschrieben.

Die Daten werden nur in der Zeit nach Sonnenaufgang bis Sonnenuntergang erfasst.
Hierzu wird in der application.properties der Längen und Breitengrad hinterlegt.

Schema Darstellung

Hier die Schema Darstellung des Projektes:
smaDataLogger

Schema der Spring Boot Anwedung

smaDataLoggerSB

Umsetzung

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.

  • Verbindung zum MQTT Server
  • Topic des MQTT Servers
  • Verbindung zur InfluxDB
  • Loglevel
  • Längen und Breitengrad

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.

Hardware

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.

Installation

Voraussetzung

  • Ein Rasperry Pi mit der beschriebenen RS485 Modul.
  • Ein SSH Zugang zu dem PI Siehe Blogartikel SSH auf RPI
  • Ein weiter PI / derselbe Pi mit einem MQTT Server z.b. mosquitto
  • Optional InfluxDB

Auf dem Rechner, von dem aus installiert wird :

  • Ansible sorry leider kein M$
  • GIT unter Linux immer dabei ;-)

  • Checkout des Projektes
    git clone https://github.com/JKarthaus/smaDataLogger.git
  • Anpassen der Datei Ansible/hosts
    hier den Names oder die IP des PI's überschreiben.
  • Anpassen der Datei Ansible/ansible.cfg
    hier den Namen des Users auf dem RPI überschreiben - meistens pi

Los gehts
./install.sh

Das Ergebnis in MQTT -Lens

MQTTLens

Die Daten aus der InfluxDB visualisiert mit Grafana

MQTTLens
have fun ...