Moin,
ich konnte mir jetzt ein Workaround aus verschiedenen Foren zusammenstellen der genauso wie das ehemalige PSA Modul von openWB funktioniert. Hab das System jetzt seit ca. 5 Tagen störungsfrei am Laufen, die einzelnen Punkte & Infos habe ich mir zusammengesucht und wollte einmal meine Lösung mit euch teilen.
Vorraussetzung:
- Psa-car-controller
- NodeRed
Der PSA Controller fragt vom PSA-Server den SOC ab und gibt diesen als API weiter. Diese API-Werte nehmen wir bei NodeRed wieder auf, prozessieren ihn und leiten ihn an die OpenWB weiter.
Die kleinen aber entscheidenden Kniffe sind jetzt:
- openWB wird bei SOC auf „Manuell + Berechnung“ gestellt. Der SOC wird via MQTT gesetzt aber nicht mit dem (überall zu findenden): openWB.lp.1.%Soc sondern mit:
openWB/set/lp/1/manualSoc
- Jetzt kommt NodeRed ins Spiel, bzw. der dort eingesetzte Filter. Dieser blockt die Weiterleitung des SOC solange es keine Wertänderung gibt.
Nodes:
Code: Alles auswählen
[{"id":"b3da9059104c47c8","type":"http request","z":"90f78b.543da878","name":"","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://IP:5000/get_vehicleinfo/VIN","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":330,"y":100,"wires":[["1dfbda7e8303ea5c"]]},{"id":"8cf7fe1150950d01","type":"inject","z":"90f78b.543da878","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"360","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":100,"wires":[["b3da9059104c47c8"]]},{"id":"1dfbda7e8303ea5c","type":"rbe","z":"90f78b.543da878","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"payload.energy[0].level","topi":"topic","x":510,"y":100,"wires":[["9d90cdc55a161864"]]},{"id":"046b177666c75062","type":"mqtt out","z":"90f78b.543da878","name":"SOC setzen","topic":"openWB/set/lp/1/manualSoc","qos":"0","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"cd7464abf11d1ee0","x":1150,"y":100,"wires":[]},{"id":"9d90cdc55a161864","type":"change","z":"90f78b.543da878","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.energy[0].level","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":910,"y":100,"wires":[["046b177666c75062"]]},{"id":"cd7464abf11d1ee0","type":"mqtt-broker","name":"OpenWB","broker":"192.168.178.31","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]
Was jetzt passiert ist genauso wie das PSA Modul von OpenWB agiert hat.
Mal angenommen das Auto wird eingesteckt, die Ladung beginnt, der SOC wird manuell höhergerechnet. In dieser Zeit wird der SOC vom PSA-Server ignoriert da sich keine Änderungen ergeben.
Wenn die Ladung beendet ist oder das Auto bewegt, gibt es wieder ein SOC update vom PSA-Server und NodeRed schreibt einen neuen SOC-Wert, da nach Ladungsende normalerweise ein SOC-Update auf dem Opelserver stattfindet.
In meiner vorherigen Version hatte ich das OpenWB SOC Modul auf „MQTT“ gestellt. Mit der Folge da es kein Opel SOC update gab, der SOC bei der OpenWB immer wieder auf den Anfangswert gesetzt wurde und am Ende war das Auto auf 100% geladen.
Gruß
Marc