Vorab ein paar wichtige Hinweise die sie unbedingt beachten sollten.
Abb: WiFi Batteriemionitor
Der WiFi Batteriemonitor lässt sich in SignalK integrieren. Die Messdaten können dann im Instrumenten-Panel angezeigt werden. Zur Integration in SignalK ist ein kleiner Umweg über MQTT nötig. Da der WiFi-Batteriemonitor mit der Tasmota-Software standardmäßig auch über MQTT kommunizieren kann, benutzen wir diese Schnittstelle in Verbindung mit dem SignalK-Plugin signalk-mqtt-gw von Teppo Kurki. Grundsätzlich ist es so, dass wir keinen MQTT-Server auf dem Raspi benötigen, wenn wir das SignalK-Plugin benutzen wollen. Sollte ein MQTT-Server auf dem Raspi laufen, so müssen die Portadressen geändert werden, um keine Konflikte zu bekommen. Das SignalK-Plugin verhält sich wie ein MQTT-Server und kann die gesendeten Telegramme interpretieren, allerdings ohne Fehlerbehandlung und spezielle Transaktionsabsicherung. Nachfolgend wird gezeigt wie die Konfiguration vorgenommen werden muss.
Konfiguration WiFi Batterie-Monitor
Unter Configure MQTT werden folgende Einstellungen vorgenommen:
- Host: IP des Raspi auf dem SignalK läuft
- Port: 1883 (ändern, falls ein MQTT-Server auf dem Rapi laufen sollte)
- Client: PZEM-017 (Name des Gerätes der als Source in MQTT angezeigt wird)
- Topic: service
- Full Topic: battmonitor/service
Username und Passwort bleiben unverändert und werden nicht benutzt.
Abb: Configure MQTT
Dann ist noch unter Configure Other zu prüfen, ob MQTT aktiviert ist.
Abb: Configure Other
Unter Configure Logging wird die Updaterate eingestellt mit welcher die Telegramme versendet werden sollen. Dazu gibt es den Parameter Telemetry Period. Der Wert wird in Sekunden angeben. Als kleinster Wert kann 10 verwendet werden. Schnellere Datenübertragungen als 10s sind damit nicht möglich. In SignalK werden die Messdaten dann mit dieser Updaterate angezeigt.
Abb: Configure Logging
Als letzten Schritt müssen wir noch zwei spezielle Rules in die Tasmota-Firmware einfügen, die die Datentelegramme so aufbereitet, damit sie von dem SignalK-Plugin signalk-mqtt-gw verarbeitet werden können. Rules sind Tasmota-Firmware-Erweiterungen mit denen das Verhalten von Tasmota beeinflusst werden kann. Wer mehr wissen möchte wie das funktioniert kann das hier im Detail nachlesen. Das SignalK-Plugin für MQTT erwartet immer einzelne Datenpaare je Telegramm mit einem Bezeichner und einem Messwert. Der Bezeichner entspricht dabei dem Daten-Pfad in SignalK. Die Daten-Pfade sollten nicht beliebig gewählt werden und sich an die Vorgaben für Datenpfade halten. Details findet man in der SignalK-Dokumentation im Anhang unter Appendix A und B. Beide Rules zerlegen das originale MQTT-Telegramm in 8 einzelne MQTT-Teiltelegramme wie man es auch im Logging sehen kann.
18:07:37 MQT: battmonitor/service/SENSOR = {"Time":"2021-04-18T18:07:37","ENERGY":{"TotalStartTime":"2021-04-09T17:21:15","Total":0.122,"Yesterday":0.011,"Today":0.111,"Period":0,"Power":6,"Voltage":13.03,"Current":0.470},"DS18B20-1":{"Id":"3C01D6075272","Temperature":23.0},"DS18B20-2":{"Id":"3C01D607E5E3","Temperature":23.3},"TempUnit":"C"}
Die Rule1 kümmert sich um die Weiterleitung der Temperaturwerte
Rule1
ON DS18B20#Temperature DO Var1 %value% ENDON
ON DS18B20#Temperature DO Add1 273.15 ENDON
ON DS18B20-1#Temperature DO Var2 %value% ENDON
ON DS18B20-1#Temperature DO Add2 273.15 ENDON
ON DS18B20-2#Temperature DO Var3 %value% ENDON
ON DS18B20-2#Temperature DO Add3 273.15 ENDON
ON DS18B20-3#Temperature DO Var4 %value% ENDON
ON DS18B20-3#Temperature DO Add4 273.15 ENDON
ON tele-DS18B20 DO publish vessels/self/environment/inside/DS18B20_1/temperature %Var1% ENDON
ON tele-DS18B20-1 DO publish vessels/self/environment/inside/DS18B20_1/temperature %Var2% ENDON
ON tele-DS18B20-2 DO publish vessels/self/environment/inside/DS18B20_2/temperature %Var3% ENDON
ON tele-DS18B20-3 DO publish vessels/self/environment/inside/DS18B20_3/temperature %Var4% ENDON
Dabei werden die Temperaturwerte eingelesen und in Kelvin umgerechnet, da SignalK immer Messwerte in SI-Einheiten erwartet.
Rule2
ON ENERGY#Power DO Var5 %value% ENDON
ON ENERGY#Voltage DO Var6 %value% ENDON
ON ENERGY#Current DO Var7 %value% ENDON
ON ENERGY#Total DO Var8 %value% ENDON
ON ENERGY#Yesterday DO Var9 %value% ENDON
ON ENERGY#Today DO Var10 %value% ENDON
ON tele-ENERGY DO publish vessels/self/electrical/batteries/service/power %Var5% ENDON
ON tele-ENERGY DO publish vessels/self/electrical/batteries/service/voltage %Var6% ENDON
ON tele-ENERGY DO publish vessels/self/electrical/batteries/service/current %Var7% ENDON
ON tele-ENERGY DO publish vessels/self/electrical/batteries/service/energytotal %Var8% ENDON
ON tele-ENERGY DO publish vessels/self/electrical/batteries/service/energyyesterday %Var9% ENDON
ON tele-ENERGY DO publish vessels/self/electrical/batteries/service/energytoday %Var10% ENDON
- RuleX 0 – deaktiviert eine Rule
- RuleX „ – löscht eine Rule
- RuleX ON – aktiviert eine Rule
Konfiguration in SignalK
Auf dem Raspberry Pi sollte man zu erst prüfen, ob ein MQTT-Server wie mosquitto läuft. Das kann man einfachsten in einer Konsole mit dem Kommando top machen. Es zeigt eine Liste aller laufenden Prozesse auf dem Raspi. Sollte der MQTT-Server laufen ohne das man ihn benutzt, dann sollte man ihn mit dem Befehl sudo apt-get remove mosquitto deintsallieren. Wird er benötigt, so muss ein anderer Port als 1883 in der Konfiguration benutzt werden.
In SignalK wird das Plugin signalk-mqtt-gw unter Appstore -> Available installiert. Unter Server -> Plugin Config werden dann noch folgende Einstellungen vorgenommen.
Abb: Plugin Config in SignalK
Wenn alles richtig konfiguriert ist muss noch ein Restart von SignalK durchgeführt werden. Dann sind die Daten im Data Browser zu sehen.
Abb: SignalK Data Browser
Je nach Anzahl der angeschlossenen 1Wire-Temperatursensoren (DS18B20) werden dann noch Temperaturwerte angezeigt. Sofern auch die Datenbank InfluxDB und das Datenbankfrontend Grafana installiert sind, können umfangreiche grafische Datenauswertungen vorgenommen werden.
Abb: Messdaten im Instrument Panel von SignalK
Abb: Messdaten mit Grafana visualisiert