Nur 1 JSON-Wert per MQTT ändern

Auflistung von gewünschten Features, Ausschreibung zur Umsetzung
Antworten
ChristophR
Beiträge: 1147
Registriert: So Okt 30, 2022 8:07 am
Has thanked: 56 times
Been thanked: 89 times

Nur 1 JSON-Wert per MQTT ändern

Beitrag von ChristophR »

Hallo,

ich habe einen WiCAN OBD2-Dongle, mit dem ich diverse Parameter vom Fahrzeug auslesen kann.
Unter anderem habe ich die Möglichkeit, die Batterie-Kapazität zu ermitteln, sie ändert sich immer mal wieder geringfügig.
Nun war meine Idee, dass ich diese in das zugehörige Fahrzeug-Profil schreibe.
Der WiCAN Dongle kann selber MQTT-Werte schreiben, aber nur sehr eingeschränkt.
Das Topic, das ich beschreiben möchte, lautet:
openWB/vehicle/template/ev_template/2
Der Inhalt ist ein JSON-String, der diverse Einstellungen enthält:

Code: Alles auswählen

{"name": "Cupra Born 58kW", "max_current_multi_phases": 16, "max_phases": 3, "phase_switch_pause": 2, "prevent_phase_switch": false, "prevent_charge_stop": false, "control_pilot_interruption": false, "control_pilot_interruption_duration": 4, "average_consump": 19000, "min_current": 6, "max_current_single_phase": 32, "battery_capacity": 55000, "nominal_difference": 1, "keep_charge_active_duration": 40, "efficiency": 90, "id": "2"}
Ich könnte nun das Topic:
openWB/set/vehicle/template/ev_template/2
Mit dem ermittelten Wert als JSON schreiben:

Code: Alles auswählen

{"battery_capacity": 55000}
Dabei werden aber alle Einstellungen zerstört, da die restlichen Werte nicht erhalten bleiben.
Kann man der openWB beibringen, nur die geänderten Werte zu übernehmen und den Rest zu ignorieren? Beim manual_soc funktioniert das ja auch.
openWB Series 2 Standard+, SW-Version 2
SolarEdge SE10K-RWS, BYD LVS 8, 16,8 kWp.
CUPRA Born
therobbot
Beiträge: 273
Registriert: So Mai 16, 2021 6:09 pm
Has thanked: 1 time

Re: Nur 1 JSON-Wert per MQTT ändern

Beitrag von therobbot »

Genau dasselbe Problem habe ich auch. Was ist denn der Design-Grund dafür, dass openWB diese JSON-Objekte verwendet statt einzelner Topics? Das macht die Benutzung recht unkomfortabel.

Vor allem ist es echt unschön, dass man Konfigurationen komplett zerschießen kann, indem man eben nur einen Teil schreibt, wie von ChristophR erwähnt. Hier sollte in der Software aus meiner Sicht schon erst eine Prüfung stattfinden.

Optimal wäre es aus meiner Sicht, wenn man beim obigen Beispiel einfach in openWB/set/vehicle/template/ev_template/2/battery_capacity schreiben könnte und das dann in der Software nach Prüfung so umgesetzt wird, dass das in das JSON-Objekt übernommen wird.

Mir geht es konkret um die Änderung von Einstellungen wie z.B. dem Lademodus über MQTT. Das ist mit der momentanen Implementierung soweit ich das sehen kann nicht in einer sicheren Art und Weise möglich, da man eben nicht nur ein einzelnes Subtopic aus dem JSON-Objekt ändern kann.
Antworten