NEWS
Kopieren von einem state in einen anderen
-
Servus zusammen,
ich habe einen SoC state vom BMW Adapter den ich gerne per MQTT schreiben möchte. Ich will also bei Änderung am state den ich vom BMW Adapter bekomme den entsprechenden state in MQTT kopieren.
bmw.0.XXXXXXXXXXXXXXXXX.state.electricChargingState.chargingLevelPercent nach mqtt.0.openWB.set.vehicle.1.get.soc
Ich dachte ich könnte das mit einem Alias machen (So hatte ich es zumindest verstanden), aber da tut sich nix.
Fehlt da was, oder hab ich das mit den Aliasen falsch verstanden?
-
@diplinge sagte in Kopieren von einem state in einen anderen:
Fehlt da was, oder hab ich das mit den Aliasen falsch verstanden?
Sieht so aus.
Mit einem Alias verallgemeinert man den Zugriff, konvertiert ggf. Werte und vereinfacht den Austausch von Geräten.
Ein Alias ist aber nicht dazu geeignet, Werte von einem bestehenden DP in einen anderen bestehenden DP zu schreiben.
Das geht nur per Script. -
@codierknecht Das hab ich fast befürchtet. Kennst du einen Adapter der das kann? Script ist kein Problem, aber für so ein 08/15 Datenmapping wäre ein Adapter schon cool
-
@diplinge sagte in Kopieren von einem state in einen anderen:
aber für so ein 08/15 Datenmapping wäre ein Adapter schon cool
Da wäre ein Adapter völlig übertrieben.
Das geht per Blockly mit einem einzigen passenden Block:
Wenn Objekt 1 sich ändert, wird der Wert in Objekt 2 geschrieben. -
Ich bevorzuge JS
// SoC on({id: 'bmw.0.XXX.state.electricChargingState.chargingLevelPercent'}, function (obj) { var soc = getState("bmw.0.XXX.state.electricChargingState.chargingLevelPercent"); setState('mqtt.0.openWB.set.vehicle.1.get.soc', soc); });
-
@diplinge
Dann aber besser so:on({id: 'bmw.0.XXX.state.electricChargingState.chargingLevelPercent', change: 'ne' }, function (obj) { setState('mqtt.0.openWB.set.vehicle.1.get.soc', obj.state.val); });
Obj
kennt ja bereits den Wert. Den muss man nicht erneut lesen.
Und mit demne
wird nur bei Änderungen geschrieben - nicht bei jeder Aktualisierung. -
@codierknecht Cool, again what learned