openWB 2: Setzen des Lademodus per MQTT

Antworten
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

openWB 2: Setzen des Lademodus per MQTT

Beitrag von Gero »

Viele möchten den Lademodus ihres Ladepunkts "von draußen" setzen. Das ist nicht so einfach, denn die Software 2 ist fahrzeugorientiert und somit bestimmt der Lademodus im Ladeprofil des am Ladepunkt angesteckten Fahrzeugs den Lademodus des Ladepunkts. (puhh.) Leider ist die aktuelle Implementierung so, dass eine Änderung im UI im Ladeprofil gespeichert wird. (Diskussion hierzu siehe viewtopic.php?t=8070) Die Diskussion hat zum Ergebnis gehabt, dass man künftig die Parameter des Ladeprofils temporär - also über die Ansteckzeit des EVs - speichern möchte und nicht mehr im Ladeprofil direkt. Von daher ist der hier beschriebenen Lösung keine große Zukunft beschienen. Sobald diese Änderung erfolgt ist, haben wir vermutlich neue MQTT-Topics und die hier beschriebene Lösung funktioniert nicht mehr. Wie und wann es implementiert wird, weiß ich nicht und ich möchte dem auch nicht vorgreifen.

Also von vorne nach hinten: Am Ladepunkt ist ein Fahrzeug angesteckt. Das steht im MQTT-Topic openWB/chargepoint/4/get/connected_vehicle (die 4 bitte durch die richtige ID ersetzen.) Da steht dann drin, welche ID des Fahrzeugs gerade eingesteckt ist (bei mir die 1). Dementsprechend steht dann in openWB/vehicle/1/charge_template, welches das Ladeprofil dieses Fahrzeugs ist - bei mir mal wieder die 1. Und dieses Ladeprofil hat einen charge_mode_selected, den man - wie im UI - auf die verschiedenen Werte setzen kann. Das macht der folgende Flow, in dem man meine "1" bitte durch das jeweilig in Frage kommende Ladeprofil-ID ersetzen muss:
lm.jpg
lm.jpg (165.66 KiB) 3031 mal betrachtet
Dummerweise ist das ganze Ladeprofil inklusive des Lademodus in einem JSON enthalten, wir wollen aber nur den charge_mode ändern und die restlichen Parameter so lassen, wie sie konfiguriert sind. Aus diesem Grund lesen wir beim Start (oder Deploy) von nodeRed das für uns in Frage kommende Ladeprofil und speichern sie im Flow-Memory. Jede Änderung im UI der openWB wird auch hier repliziert, so dass man auch weiterhin im UI den Lademodus verstellen kann. Die Inject-Nodes nehmen nun das im Flow-Memory gespeicherte Ladeprofil, überschreiben den Lademodus und schicken das Ganze an die openWB.

Fertig.

Code: Alles auswählen

[{"id":"1c7d19cb.3a689e","type":"tab","label":"Lademodus","disabled":false,"info":""},{"id":"2b0e1eac.981b3a","type":"mqtt in","z":"1c7d19cb.3a689e","name":"","topic":"openWB/vehicle/template/charge_template/1","qos":"2","datatype":"json","broker":"c4cb83c8.1bd0c","x":210,"y":180,"wires":[["42a478c7.ef2d1","390baace.f0176e"]]},{"id":"42a478c7.ef2d1","type":"debug","z":"1c7d19cb.3a689e","name":"LP_Lademodus","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":620,"y":240,"wires":[]},{"id":"390baace.f0176e","type":"change","z":"1c7d19cb.3a689e","name":"","rules":[{"t":"set","p":"ladepunkt","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":180,"wires":[[]]},{"id":"acba89a9.19cf78","type":"inject","z":"1c7d19cb.3a689e","name":"PV","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":400,"wires":[["808c7784.8ee8a8"]]},{"id":"808c7784.8ee8a8","type":"change","z":"1c7d19cb.3a689e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ladepunkt","tot":"flow"},{"t":"set","p":"payload.chargemode.selected","pt":"msg","to":"pv_charging","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":400,"wires":[["722d1e87.171a5"]]},{"id":"824c0ab.1fc64f8","type":"inject","z":"1c7d19cb.3a689e","name":"Sofort","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":360,"wires":[["d0015579.193b98"]]},{"id":"d0015579.193b98","type":"change","z":"1c7d19cb.3a689e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ladepunkt","tot":"flow"},{"t":"set","p":"payload.chargemode.selected","pt":"msg","to":"instant_charging","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":360,"wires":[["722d1e87.171a5"]]},{"id":"722d1e87.171a5","type":"mqtt out","z":"1c7d19cb.3a689e","name":"","topic":"openWB/set/vehicle/template/charge_template/1","qos":"","retain":"","broker":"c4cb83c8.1bd0c","x":770,"y":440,"wires":[]},{"id":"ac9d59de.41ef8","type":"inject","z":"1c7d19cb.3a689e","name":"Standby","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":480,"wires":[["4a8799c8.414be"]]},{"id":"4a8799c8.414be","type":"change","z":"1c7d19cb.3a689e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ladepunkt","tot":"flow"},{"t":"set","p":"payload.chargemode.selected","pt":"msg","to":"standby","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":480,"wires":[["722d1e87.171a5"]]},{"id":"7d9c7562.4fbfbc","type":"inject","z":"1c7d19cb.3a689e","name":"Stop","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":520,"wires":[["5d2428f6.b2e39"]]},{"id":"5d2428f6.b2e39","type":"change","z":"1c7d19cb.3a689e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ladepunkt","tot":"flow"},{"t":"set","p":"payload.chargemode.selected","pt":"msg","to":"stop","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":520,"wires":[["722d1e87.171a5"]]},{"id":"4845d175.9e13c8","type":"inject","z":"1c7d19cb.3a689e","name":"Zielladen","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":120,"y":440,"wires":[["3358c83a.0e265"]]},{"id":"3358c83a.0e265","type":"change","z":"1c7d19cb.3a689e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"ladepunkt","tot":"flow"},{"t":"set","p":"payload.chargemode.selected","pt":"msg","to":"scheduled_charging","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":360,"y":440,"wires":[["722d1e87.171a5"]]},{"id":"9c428ab0.c46f2","type":"comment","z":"1c7d19cb.3a689e","name":"Holt das aktuellen Ladeprofils und speichern der Werte im Flow-Memory (wird auch bei Deploy aufgerufen)","info":"","x":400,"y":120,"wires":[]},{"id":"6aeacc41.a580ec","type":"comment","z":"1c7d19cb.3a689e","name":"Nimmt das Ladeprofil aus dem Flow-Memory und ändert den Lademodus entsprechend der Inject-Node","info":"","x":400,"y":300,"wires":[]},{"id":"826eb5cf.eb4d38","type":"comment","z":"1c7d19cb.3a689e","name":"Die Template-ID in den beiden MQTT-Nodes muss durch die jeweilig korrekte ersetzt werden","info":"","x":360,"y":40,"wires":[]},{"id":"c4cb83c8.1bd0c","type":"mqtt-broker","name":"OpenWB","broker":"192.168.8.11","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"30","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","willTopic":"","willQos":"0","willRetain":"false","willPayload":""}]
Und wenn man das „richtig“ machen will, macht man das Ganze etwas dynamischer indem man sich das Ladeprofil aus dem eingesteckten Fahrzeug holt und je Ladepunkt eine Flow-Variable für das Ladeprofil hat. Das war mir aber zuviel Aufwand - vor allem, weil die meisten ja nur ein EV haben und sich das alles eh noch mal ändern wird. Vielleicht gibt es ja dann auch die vielgesuchten Lademodi am Ladepunkt. Wer weiß.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Meth
Beiträge: 696
Registriert: Sa Aug 24, 2019 5:59 am

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Meth »

Hallo Gero ,

danke für den Flow .
Funktioniert auch soweit super .
Nur nennt er alle Ladeprofile dann gleich (bei mir z.b ID.3) und stellet alle werte auf den zuerst in den Flow geschriebenen werte um (bei mir die werte des ID.3)
Kann man das irgendwie separat machen ?
Oder muss ich für jeden Ladepunkt/Fahrzeugprofil einen eigene FLow aufmachen
Ich hoffe ich habe mich verständlich ausgedrückt

Habe halt leider 3 Autos auf drei Ladepunkte ..... .-/
23,9 kwp PV , 30,6 kWh BYD HVS Box 2 x 20,4 kWh BYD HVS Box
2 x 15 kWh BMZ Hyperion
ID3 für meine Frau , ID4 für mich
1 oWb 2.0 im Hauptverteiler
Je 1 oWb in Garage und Carport
Täglich auf die neueste Version Aktualisiert
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Gero »

Meth hat geschrieben: Do Aug 22, 2024 5:16 am Habe halt leider 3 Autos auf drei Ladepunkte ..... .-/
Dann solltest Du auch drei Ladeprofile haben und dann musst Du den obigen Flow auch dreimal haben, für jedes Ladeprofil einen. Du kannst es sogar ignorieren, an welchem Ladepunkt welches Auto eingesteckt ist, da die openWB ja auf das Ladeprofil reagiert und nicht den Ladepunkt.

Wenn Du für deine drei Autos nur ein Ladeprofil hast, solltest Du schon einmal festgestellt haben, dass wenn Du eins mal auf Sofortladen umstellst, alle anderen auch auf Sofortladen umgestellt werden. Egal ob gerade eingesteckt oder nicht.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Meth
Beiträge: 696
Registriert: Sa Aug 24, 2019 5:59 am

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Meth »

Ich habe drei ladeprofile
Welches aber immer überschrieben wird mit dem das als erstes geladen wurde in den flow
Muss ich dann drei unterschiedliche flow.ladepunkt anlegen ?
Also flow.ladepunkt1 usw.
23,9 kwp PV , 30,6 kWh BYD HVS Box 2 x 20,4 kWh BYD HVS Box
2 x 15 kWh BMZ Hyperion
ID3 für meine Frau , ID4 für mich
1 oWb 2.0 im Hauptverteiler
Je 1 oWb in Garage und Carport
Täglich auf die neueste Version Aktualisiert
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Gero »

Die inject-nodes schreiben ihren Wert in eine MQTT-Node. In dieser steht sowohl das Topic, in dem das Ladeprofil und die Flow-Globale Variable, in die die Werte des Ladeprofils gelesen wurden, schreibt.

Mit anderen Worten: du brauchst den MQMTT-Profil-Leser dreimal, drei verschieden Flow-Globale Variablen und auch drei mal die ganzen inject-Nodes mit ihrem MQTT/Topic.

Oder aber: du kopierst den Flow zweimal, so dass du insgesamt drei hast und passt in denen dann die MQTT-Topics an. (Auf der nodered-Oberfläche hast du dann drei Tabs mit je einem Flow)
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Meth
Beiträge: 696
Registriert: Sa Aug 24, 2019 5:59 am

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Meth »

Jo des hat Abhilfe geschaffen .
Je eine Flow Variable .
Habe nur übersehen das auch in die Inject zu schreiben ......
23,9 kwp PV , 30,6 kWh BYD HVS Box 2 x 20,4 kWh BYD HVS Box
2 x 15 kWh BMZ Hyperion
ID3 für meine Frau , ID4 für mich
1 oWb 2.0 im Hauptverteiler
Je 1 oWb in Garage und Carport
Täglich auf die neueste Version Aktualisiert
dan11hh
Beiträge: 256
Registriert: Fr Sep 18, 2020 8:06 am
Has thanked: 3 times

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von dan11hh »

Ich steh leider auf dem Schlauch.
Wie kann ich das JSON des charge-templates in Blockly auslesen? Kann mir da jemand helfen? Danke.
OpenWB Series 2 Standard+ und Series 2 Standard
PV: 20,7 kWp mit SE30K (Süd)
EVs: Smart #1, Tesla MY, ID4 GTX, ID3 Pro, Smart ForFour EQ, Skoda Enyaq iV80,
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Gero »

Da hat du ja eher die Blockly-Fragen „wie gehe ich in Blockly mit JSON um?“ und „wie kann ich in Blockly Variablen nutzen um MQTT-Werte zwischenzuspeichern?“

Das MQTT-„Problem“ ist ja, dass du den Wert nur dann mitbekommst, wenn gerade eine Message geschickt wird. Und du möchtest ja diesen Wert vermultich permanent anzeigen um ihn dann in deinem UI ändern zu können.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
hominidae
Beiträge: 1407
Registriert: Di Sep 03, 2019 4:13 pm
Has thanked: 7 times
Been thanked: 8 times

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von hominidae »

Gero hat geschrieben: Do Aug 08, 2024 11:27 am Viele möchten den Lademodus ihres Ladepunkts "von draußen" setzen. Das ist nicht so einfach, denn die Software 2 ist fahrzeugorientiert und somit bestimmt der Lademodus im Ladeprofil des am Ladepunkt angesteckten Fahrzeugs den Lademodus des Ladepunkts. (puhh.)
..wie Du schon sagst, geht es doch eigentlich immer nur um das angesteckte Fahrzeug und nicht um die Grundeinstellung, oder?
Warum also das template ändern und nicht die config am LP, zB für LP1 unter openWB/chargepoint/1/get/connected_vehicle/config zu finden (get).
Geht da ein komplementäres "set" nicht (habs echt noch nicht probiert :) )?
Gero
Beiträge: 3411
Registriert: Sa Feb 20, 2021 9:55 am
Has thanked: 4 times
Been thanked: 59 times

Re: openWB 2: Setzen des Lademodus per MQTT

Beitrag von Gero »

Es ist halt by Design so, wie es aktuell ist: es gibt keine temporäre Änderung von Ladeparametern. Soll aber kommen. Es gab mal eine längere Diskussion, in der das das Ergebnis war. Nun gilt es die Implementierung abzuwarten.
openWB-series2, openWB-Buchse, E3/DC S10pro+19.5kWh, 30kWp Ost-Süd, Model 3 und Ion
Antworten