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
Hallo, ist auch ein Interessantes Projekt was du da hast. Ich frag mich die ganze Zeit ob man den Victron dazu bewegen kann öfter als alle sekunde zu senden.
Ansonsten, vielleicht findest du hier die fehlenden Sachen für dein Projekt.
Wie bekomme ich das Projekt auf den ESP32? Habe den angegebenen Link runtergeladen, entpackt und als Ordner im VS Code geöffnet. Brauche ich alle Dateien oder nur einen Teil? Bekomme beim compilieren Meldungenen wie : "esphome\components\bedjet\bedjet_hub.cpp:482:24: error: invalid use of incomplete type 'class esphome::bedjet::BedJetHub'"
@laser Hi,
aus dem Github Link:
or just use the
esp8266-example.yaml
as proof of concept:# Install esphome pip3 install esphome # Clone this external component git clone https://github.com/KinDR007/VictronMPPT-ESPHOME.git cd VictronMPPT-ESPHOME # Create a secret.yaml containing some setup specific secrets cat > secrets.yaml <<EOF mqtt_host: MY_MQTT_HOST mqtt_username: MY_MQTT_USERNAME mqtt_password: MY_MQTT_PASSWORD wifi_ssid: MY_WIFI_SSID wifi_password: MY_WIFI_PASSWORD EOF # Validate the configuration, create a binary, upload it, and start logs esphome run esp8266-example.yaml
Mein Empfehlung.
- Stell dir einen Raspi hin. Du brauchst eh einen MQTT Broker.
- Mach da Venus OS drauf
- Da den VE.Direct anschliessen
- MQTT einschalten
- Alle 30 Sekunden einen Read Request senden (ist n der MQTT Beschreibung von Venus OS erklärt)
Jetzt bekommst du alle Werte die im DBUS sind nach MQTT gespiegelt.
Den Soyo bekommst du auch in Venus integriert und wenn du möchtest kannst du auch die Einspeisung über Venus OS lösen.
Dazu musst du aber mehr erzählen wie du das machen möchtest. Z.B. könntest du dort deinen Netzzähler abbilden.
@profantus Darf man fragen warum nur alle 30 Sekunden? Oben der Github Link liefert alle Sekunde werte. Vielleicht versteh ich auch nur was falsch.
@dingsbums Diese Seite kenne ich. Wohin clone ich denn die Dateien? Auf einen Raspi, PC oder wohin?
Das ist keine Sache, die ich z.B. mit VS-Code oder der Arduino Ide laden kann?
ESP-Home Flasher- Zitat: It doesn't have to be installed, just double-click it and it'll start. Check the releases section for downloads for your platform.
Wo soll ich denn doppelt klicken, damit sich eine Oberfläche öffnet? EDIT: unter "Release" ist etwas. Sehr verklausuliert beschrieben, das Ganze...
Und wo nehme ich die *.bin Datei her, um sie zu flashen?
@dingsbums Es funktioniert. Warum auch immer. Habe von github die Dateien neu heruntergeladen (zip). Diesen Ordner kann ich entpacken und im VS-Code öffnen. Und compilieren.
@dingsbums du must alle 60 Sec eine nachricht schicken um Venus zum weitersenden zu veranlassen. Venus schickt jede Seku de aber nur wenn du einen Trigger sendest
Die geschwister scholl wurden ermordet, weil sie ihre politischen ansichten dort verbreitet haben, wo es nicht vorgesehen war. Heute werden nur beiträge gelöscht, keiner stirbt mehr. Ausser der denokratie.
Servus,
da ich mit dem VENUS OS bisher noch keinen Weg gefunden habe den "Lade-Ausgang On/OFF per modbus oder mqtt zu schalten" bitte ich euch hier um Rat.
Ich komme damit nicht klar und in der Registern habe ich auch kein "Load" entdecken können.
https://vrm-api-docs.victronenergy.com/#/operations/installations/idSite/widgets/InverterChargerState
Hab ihr einen Weg und das Register bzw. den modbus / mqtt Befehl gefunden einen Victron Smartsolar 100/20 zu schalten?
LG