Hallo zusammen,
ich habe eine kleine PV-Anlage zum "spielen" aufgebaut. 1,4kWp, Victron SmartSolar MPPT 100/20, 5,2kWh LiFePo4, Soyo 1000 Wechselrichter. Der Soyo wird per MQTT über einen D1 Mini angewiesen eine gewünschte Einspeisung zu generieren.
Um den Victron jetzt auszuwerten habe ich mit einem weiteren D1 Mini (ESP8266) und einem 0.96" OLED einen Monitor mit MQTT-Übertragung gebaut. Platine lag von einem CO2-Sensor-Projekt noch rum, also habe ich statt des CO2-Sensors (MHZ19b mit serieller Schnittstelle) einfach die VE-Direct Schnittstelle an die Platine geklemmt. Etwas Software und fertig ist die Laube...
Ein Schaltplan ist nicht notwendig. Das Display (kann man auch weglassen) kommt an den I2C-Bus D1/D2, der Victron mit seiner Tx-Leitung an D7 und Masse. Der 5V-Ausgang des Victron liefert leider etwas zu wenig Strom. Sobald der ESP ins WLAN will, steigt er aus. Vielleicht hilf ein kleiner Puffer-Akku oder Super-CAP....
Quellcode hängt an, falls das jemand brauchen kann. Es wird der WifiManager genutzt, damit man die WLAN-Zugangsdaten per Handy eintragen kann (ToDo: Ergänzung des WiFiManagers um Eingabe der MQTT-Parameter). Ebenfalls ist OTA mit im Projekt, so muss ich nicht immer in den Keller traben um das Programm zu aktualisieren
In der Loop wird ständig die serielle Schnittstelle abgefragt (die Standard-Puffergröße von 64 Bytes wurde auf 384 Bytes vergrößert weil zu Beginn viele Werte gefehlt hatten). Danach werden die Werte aus dem VE.Direct Protokoll ausgelesen (Labels aus der Protokoll-Beschreibung) und regelmäßig per MQTT versandt.
Die erkannten Werte und Topics sind zur Zeit:
MQTT_TOPIC/main {"SOC":0,"POWER":0,"VOLTAGE":53290,"CURRENT":-20,"CS":3,"ALARM":100} MQTT_TOPIC/load {"VPV":54930,"PPV":0,"LOADCURRENT":0,"LOAD":100,"RELAY":3} MQTT_TOPIC/energy {"YIELD_TODAY":39,"YIELD_YESTERDAY":32,"POWER_TODAY":193,"POWER_YESTERDAY":125,"ERROR":0}
(der Wert 100 bei ALARM und LOAD bedeutet, dass da noch kein richtiger Wert empfangen wurde, siehen unten)
Ähnlich wie bei Tasmota gebe ich noch Geräteinfo auf das Topic
tele/MQTT_TOPIC/LWT und tele/MQTT_TOPIC/IP und tele/MQTT_TOPIC/device {"DAY":83,"FIRMWARE":"159","SERIAL_NUMBER":"HQ2100MRXXX","PRODUCT_ID":"0xA060"}
Alle unerkannten Labels landen in einem String, der im Topic MQTT_TOPIC/raw landet. Und hier kommen jetzt meine Fragen...
Ich empfange ein paar Labels, die nicht in der Protokollbeschreibung von Victron drin sind. Außerdem bekomme ich einige Wert NICHT, die eigentlich ankommen sollten. Der Laststrom IL fehlt, der Zustand des Lastausgangs LOAD wird nicht übertragen (obwohl der SmartSolar 100/20 einen Lastausgang hat) und der Relay-Zustand hat unmögliche Werte (im Programm erkenne ich nur ON=1 und OFF=0, bekomme aber gerade den Wert 3 angezeigt?!?)
Unbekannt sind Label : Wert
- MPPT : 0
- OR : 0x00000001
Hat jemand eine aktuellere Protokollbeschreibung als Version 3.21 von 2016??
viele Grüße
Bernhard
ESP_Victron_MQTT_V21.txt (15.5 KB)