Endlich geschafft - Victron Daten kommen per MQTT vom VRM in Pekaway

Ja, hat ja lange genug gedauert, aber wenn ich mich mal in etwas reinbeisse :slight_smile:
Das Relaisboard bekommt seine Victron Daten jetzt nicht mehr über USB sondern über MQTT direkt vom Venus OS von Victron. Das erste Problem war den Cerbo dazu zu bekommen MQTT zu senden, er macht das nämlich nicht freiwillig, er will immer dazu gebeten werden. “Meine Energiewende” hat dazu ein Script erstellt, ich habe das allerdings in Node Red als Flow realisiert, den füge ich unten an. Diesen Flow habe ich mit Hilfe eines US Motorbootfahrers bekommen, geile Geschichte.
Also, falls es noch so einen Deppen wie mich gibt der das so haben möchte, ich helfe gerne. Hier der “Keepaliveflow”

[{"id":"3c481a8b2a8e7898","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"bf6df4614640f223","type":"mqtt out","z":"3c481a8b2a8e7898","name":"Keepalive","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"957e0f28.64d928","x":400,"y":160,"wires":[]},{"id":"7c7164ce90971d7b","type":"inject","z":"3c481a8b2a8e7898","name":"Keepalive","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"50","crontab":"","once":false,"onceDelay":"","topic":"R/HIER DIE VRM ID/system/0/Serial","payload":"","payloadType":"date","x":218,"y":161,"wires":[["bf6df4614640f223"]]},{"id":"957e0f28.64d928","type":"mqtt-broker","name":"NAME DER INSTALLATION","broker":"HIER DIE IP DES RASPBERRY","port":"1883","clientid":"openplotter","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

Ändern müsst ihr die in Anführungsstriche gesetzte:
VRM ID
Name der Installation
IP des Raspberry
(der Flow muss in den Pekaway Pi)

Dann funzt auch der MQTT out vom Venus OS

3 Likes

Hallo Mikel,
das ist sehr interessant. Könntest Du , falls möglich, das ganze etwas genauer in einer Art Anleitung beschreiben?
Habe auch einen Cerbo und würde mir die Entscheidung gerne sparen die Victron Geräte entweder an den pekaway oder an den cerbo anzuschliessen.
Vielen Dank

Hallo C3PO.
Klar, kann ich machen.

Kennst du ein wenig Node Red oder hast du, wie ich Anfangs, keinen blassen Schimmer von Node Red?

1 Like

Hi Mikel,
ich habe mit der try and error Methode schon ein bischen was ausprobiert. dennoch, würde sage ich bin blutiger Anfänger.

Grüße,

Ok.

Zuerst installierst du Venus OS von Victron auf einen Pi und erstellst dir eine VRM ID. Im VRM Portal aktivierst du MQTT und stellst den Benutzer auf Superuser.

Dann erstell im Pekaway Node Red einen neuen Flow und importiere den Flow ganz oben in diesem Post, ergänze VRM-ID, Name der Installation und IP des Venus Rechners, dann deploy das ganze.

Dann installier den MQTT explorer auf einen Windoof Rechner

Gib die IP des Venus an und starte das Programm.

Die oberen Schritte yind auch hier genauer erklärt (mit Ausnahme das er sagt Venussendet MQTT, das stimmt nicht, erst nach meinem Flow ganz oben sendet VRM):

Ich schreibe später weiter
…Fortsetzung folgt

1 Like

…wenn du dir das Video angesehen hast, wirst du mit dem MQTT Explorer bereits deine relevanten Daten herausbekommen haben.
Jetzt ziehst du dir im neuen Flow ein “MQTT in” Note rein, doppelt klicken auf selbiges und dann bei Server auf den Stift klicken. Beim nun aufgehenden Fenster gib bei “Namen” Cerbo oder Venus ein und bei “Server” die IP deines Pi mit der Venus Software, bei “Port” die 1883. Dann auf aktualisieren. bei “Topic” kommt jetzt die Zeile des im MQTT Explorer kopierten Zeile des gewünschten Victron Gerätes, dann auf “Fertig” klicken. Jetzt mal “deployen”, dann sollte am “MQQT In” Node ein Verbunden erscheinen.

Jetzt importier noch das von unten, verbinde die unten importierten Notes mit deinem MQTT in Note und deploye, dann sollte deine erste Anzeige im ui zu sehen sein.

[{“id”:“72c279c28998819c”,“type”:“json”,“z”:“9bb6e01daf2fb33e”,“name”:“”,“property”:“payload”,“action”:“obj”,“pretty”:false,“x”:490,“y”:240,“wires”:[[“0fbcca2840b14c0b”]]},{“id”:“0fbcca2840b14c0b”,“type”:“change”,“z”:“9bb6e01daf2fb33e”,“name”:“”,“rules”:[{“t”:“set”,“p”:“payload”,“pt”:“msg”,“to”:“$round(payload.value,2)”,“tot”:“jsonata”}],“action”:“”,“property”:“”,“from”:“”,“to”:“”,“reg”:false,“x”:690,“y”:240,“wires”:[[“4963f1b9ebca0280”]]},{“id”:“4963f1b9ebca0280”,“type”:“change”,“z”:“9bb6e01daf2fb33e”,“name”:“”,“rules”:[{“t”:“set”,“p”:“batterysoc”,“pt”:“flow”,“to”:“payload”,“tot”:“msg”}],“action”:“”,“property”:“”,“from”:“”,“to”:“”,“reg”:false,“x”:940,“y”:240,“wires”:[[“4d0d24a855e051fb”]]},{“id”:“4d0d24a855e051fb”,“type”:“ui_gauge”,“z”:“9bb6e01daf2fb33e”,“name”:“”,“group”:“e91cd907ff2e6ba0”,“order”:6,“width”:“3”,“height”:“3”,“gtype”:“gage”,“title”:“State of Charge”,“label”:“Ampere”,“format”:“{{value}}”,“min”:“0”,“max”:“100”,“colors”:[“#f0192e”,“#e6df19”,“#12f838”],“seg1”:“25”,“seg2”:“50”,“className”:“”,“x”:1200,“y”:240,“wires”:},{“id”:“e91cd907ff2e6ba0”,“type”:“ui_group”,“name”:“Victron”,“tab”:“deee53a800de461d”,“order”:2,“disp”:true,“width”:“6”,“collapse”:false,“className”:“”},{“id”:“deee53a800de461d”,“type”:“ui_tab”,“name”:“Info”,“icon”:“mi-info”,“order”:1,“disabled”:false,“hidden”:false}]

1 Like

Was ich leider noch nicht geschafft habe ist, die Werte in das Nextion Display zu bekommen, was sehr, sehr schade ist!!!. Vielleicht kann uns @Vincent da etwas Unterstützung zukommen lassen.
@Vincent wo genau werden die Werte vom Victron an das Display bzw System übergeben? Ich vermute “Connections”, weiss es aber nicht. Ich vermute der VE.Direct Flow bekommt seine Werte auch nur weiter gereicht, oder?

Der VE.Direct Flow verarbeitet die Werte die von Victron kommen, schreibt sie in globale Variablen und stellt sie im Webinterface dar.

Im Flow Pekaway Display werden diese Variablen dann wieder aufgerufen und an das Display geschickt.

Es gibt aber auch noch den Flow Pekaway Display UserData, da kann noch zusätzliche Werte an das Display schicken.

@Vincent
Vielen Dank, da habe ich einen Ansatz!

Falls jemand Lust hat, ich habe mir noch eine Anzeige gebastelt, ich wollte eine Anzeige die mir anzeigt wieviel Ah ich noch in den Batterien habe, also nicht wieviel ich schon verbraucht habe sondern was noch zur Verfügung steht. Ja, ist nur ne Spielerei, aber ich finde das Cool.
Wer möchte hängt den Flow einfach hinter den SOC, also vor die SOC Gauge. DIese Nodes rechnet die % um in Ah, bei diesem Beispiel ist meine Kapazität von 840Ah zu Grunde gelegt, müsste dann bei jedem angepasst werden.

[{“id”:“fd55f166b1b1100e”,“type”:“function”,“z”:“b2f757a5.d547b”,“name”:“SOC zu Ah”,“func”:“// Annahme: msg.payload enthält den prozentualen Ladezustand (SOC)\n// Annahme: Die Batterie hat eine Kapazität von 840 Ampere-Stunden\n\nconst batterieKapazitaet = 840; // Gesamtkapazität in Ampere-Stunden\nconst socProzent = msg.payload; // Prozentsatz des Ladezustands\n\n// Berechne die aktuelle Kapazität in Ampere-Stunden (ohne Dezimalstellen)\nconst aktuelleKapazitaet = Math.round((socProzent / 100) * batterieKapazitaet);\n\n// Setze die aktuelle Kapazität im Payload\nmsg.payload = aktuelleKapazitaet;\n\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:“”,“finalize”:“”,“x”:340,“y”:300,“wires”:[[“4f8ac82a5d3d137b”]]},{“id”:“4f8ac82a5d3d137b”,“type”:“ui_gauge”,“z”:“b2f757a5.d547b”,“name”:“”,“group”:“4761be0b.979b34”,“order”:1,“width”:“6”,“height”:“6”,“gtype”:“gage”,“title”:“SOC in Ah”,“label”:“Ah”,“format”:“{{value}}”,“min”:0,“max”:“840”,“colors”:[“#f0192e”,“#e6df19”,“#12f838”],“seg1”:“”,“seg2”:“”,“x”:530,“y”:300,“wires”:},{“id”:“c6149b1f.437dd”,“type”:“inject”,“z”:“b2f757a5.d547b”,“name”:“”,“props”:[{“p”:“payload”},{“p”:“topic”,“vt”:“str”}],“repeat”:“10”,“crontab”:“”,“once”:false,“onceDelay”:0.1,“topic”:“”,“payload”:“50”,“payloadType”:“num”,“x”:150,“y”:300,“wires”:[[“fd55f166b1b1100e”]]},{“id”:“4761be0b.979b34”,“type”:“ui_group”,“name”:“Batterie”,“tab”:“baf5b11d.a85a9”,“order”:1,“disp”:true,“width”:“6”,“collapse”:false},{“id”:“baf5b11d.a85a9”,“type”:“ui_tab”,“name”:“Home”,“icon”:“dashboard”,“order”:1,“disabled”:false,“hidden”:false}]

1 Like

Die Werte des Shunts bekomme ich nicht aufs Display, da fehlt mir einfach zu viel know how!
Aber mir ist noch eine Idee gekommen, ich werde es andersherum versuchen! Meine 3 Solarregler geben ihre Daten an den Pi mit der Venus Sofware von Victron. Den Shunt schliesse ich an Pekaway an. Dann versuche ich es andersrum, der Shunt soll per MQTT seine Daten an den Victron Pi senden, bin gespannt und werde berichten.

1 Like