Die erforderliche Hardware, ein Wemos D1 mini und eine USB Buchse, kostet nur wenige Euro und habe ich bereits in einem früheren Posting beschrieben. Die Firmware dazu stammt aus einem Open Source Github Projekt .
Die Datei user_device.php ist im o.a. Posting angehängt. Dieses Script macht einiges mehr als die Anbindung des BMS. Hier möchte ich speziell genauer beschreiben, wie die Anbindung des Daly BMS dort funktioniert. Bei der Implementierung habe ich mich soweit als möglich an die Default-Struktur der user_device.php gehalten.
Im Abschnitt 1.3 finden sich die fürs Daly-BMS notwendigen Einstellungen
Code: Alles auswählen
$DALY_BMS_to_MQTT_IP = "10.0.0.25"; // IP Adresse des Wemos D1 mini
$InfluxDBLokal_BMS = "DalyBMS"; // Name der Influx DB
$MQTT_BMS = false; // Der Wemos sendet selber Daten an Mosquitto
Der Code für die weitere Verarbeitung befindet sich im Abschnitt 3
// 3.1 JSON Daten auslesen
Das ist eigentlich recht simpel. Über die URL
Code: Alles auswählen
http://<DALY_BMS_to_MQTT_IP>/livejson
// 3.2 Query für das Schreiben in die influxDB zusammenstellen
Hier wird in $zq eine query (eigentlich eine INSERT Anweisung) zusammengestellt mit der dann die Daten in die Influx-Datenbank gespeichert werden können
// 3.3 optionale Nachbearbeitung der BMS Daten
Das verwende ich nicht
// 3.4 Optional BMS Daten an den hauseigenen MQTT Broker übergeben
Das wird über $MQTT_BMS gesteuert. Wenn diese Variable in 1.3 auf true gesetzt wird, werden die vom BMS gelesenen Daten an den MQTT Broker der Solaranzeige gesendet. Das kann jedoch der Wemos D1 Mini direkt. Daher habe ich das hier ausgeschaltet um Ressourcen zu sparen.
// 3.5 Zeitpunkte definieren
Das stammt aus der Vorlage.
// 3.6 BMS Daten in influxDB ablegen
Hier wird der Name der lokalen Influx Datenbank übernommen.
Dann werden mit der Solaranzeige-Standardfunktion influx_local die aktuellen Daten in die Datenbank geschrieben.
// 3.7 Wiederholungen des Auslesens steuern
Das stammt aus der Vorlage. (Falls das Auslesen weniger als 7 Sekunden dauern würde, wird hier auf die vollen 7 Sekunden gewartet. )
BMS-Daten in einem Dashboard darstellen
Man kann dazu das in der Solaranzeige mitgelieferte Daly Dashboard nehmen. Damit man die in user_device.php vom BMS gesammelten Daten in einem Grafana Dashboard darstellen kann, muss man aber zuerst die Datenbank DalyBMS bei Grafana bekannt machen.
Dazu klickt man in Grafana aufs Zahnrad-Symbol und wählt dort Data Sources aus. Dann rechts auf „Add data source“, dann auf InfluxDB. Im Formular unter
Code: Alles auswählen
Name: DalyBMS
URL: http://localhost:8086 (wichtig: das selbst ausfüllen, das Feld hat keinen Default-Wert)
Database: DalyBMS
http-Method: GET
Dort gibt man dann ein:
Code: Alles auswählen
Data Source: DalyBMS
From: Batteriezustand
Select: Voltage
Viel Spass beim Nachbau!