NEWS
[done] Trigger auf einen JSON-Parameter bei Veränderung
-
Hallo,
wie kann ich auf eine Änderung von einem Parameter innerhalb eines JSON mit BLocky auf Änderungen reagieren?
BIsher habe ich das so ohne den gewünschten Erfolg:
Das habe ich im Log:
18:05:11.762 info javascript.0 (1281) script.js.common.Draussen.Wellis_Whirlpool.status_licht_update_mqtt: getState(id=OFF, timerId=undefined) => not found 18:05:11.767 warn javascript.0 (1281) at Object.<anonymous> (script.js.common.Draussen.Wellis_Whirlpool.status_licht_update_mqtt:9:7) 18:05:11.768 info javascript.0 (1281) script.js.common.Draussen.Wellis_Whirlpool.status_licht_update_mqtt: getState(id=ON, timerId=undefined) => not found 18:05:11.769 warn javascript.0 (1281) at Object.<anonymous> (script.js.common.Draussen.Wellis_Whirlpool.status_licht_update_mqtt:9:48)
Dier erwartete Pushbenachrichtigung erfolgte nicht.
-
-
@paul53 danke, aber wie lange bleibt der wert im der variable "lastLight" bestehen? nur beim durchlaufen des triggerblocks? muss der wert dann nicht seperat in einen dp abgespeichert werden?
-
@tklein sagte in Trigger auf einen JSON-Parameter bei Veränderung:
wie kann ich auf eine Änderung von einem Parameter innerhalb eines JSON mit BLocky auf Änderungen reagieren?
Ich würde mir einen Alias erstellen, welcher
LIGHTS
aus dem JSON extrahiert und dann normal auf den Alias-Datenpunkt mit "wurde geändert" triggern. -
@tklein sagte in Trigger auf einen JSON-Parameter bei Veränderung:
aber wie lange bleibt der wert im der variable "lastLight" bestehen?
Die Variablen leben bis zum Neustart des Script.
Ich würde den Vorschlag von @haus-automatisierung bevorzugen.
-
@haus-automatisierung ja gute idee. geht ja auch in die richtung eines separaten. dp
jetzt muss ich noch rausfinden, ob ein alias selbst den entsprechenden wert schreiben kann, oder ob ich das mit einem separaten blockly mache. aliase habe ich bisher eher rudimentär genutzt.
-
@tklein sagte in Trigger auf einen JSON-Parameter bei Veränderung:
jetzt muss ich noch rausfinden, ob ein alias selbst den entsprechenden wert schreiben kann
Schreiben? Ich dachte hier geht es erstmal um lesen. Sonst musst Du deine Anforderung nochmal genauer definieren. In deinem Beispiel reicht ein Alias vom Typ
string
mit einer Lese-Funktion:JSON.parse(val).LIGHTS
Ein paar Beispiele habe ich hier zusammengeschrieben: https://iobroker.readthedocs.io/de/latest/basics/aliases.html
-
@haus-automatisierung Dann kann ich ein Alias erstellen und auf den Ursprungsdatenpunkt (JSON) verweisen. Innerhalb des Alias lese/speichere ich nur den wert von Lights ab.
Mein erster Gedankengang war es, bei jeder Änderung des LIGHT-Parameter in Ursprungs-JSON ein TRUE/FALSE in meinen Aliasdevice zu schreiben.
Thx für den Link!
-
@tklein sagte in Trigger auf einen JSON-Parameter bei Veränderung:
bei jeder Änderung des LIGHT-Parameter in Ursprungs-JSON ein TRUE/FALSE in meinen Aliasdevice zu schreiben.
Wenn Du das möchtest, dann mach halt
JSON.parse(val).LIGHTS == 'ON'
und leg den Alias vom Typ boolean an. -
@haus-automatisierung said in Trigger auf einen JSON-Parameter bei Veränderung:
JSON.parse(val).LIGHTS == 'ON'
klappt super. Besten Dank für den Hinweis.
Dann kann ich auch so ähnlich mit meinen FHEM Devices vorgehen, deren Werte ich meistens per FHEM Adapter mit on/off reinbekomme.
-
@haus-automatisierung wie kann ich ein attribut mit einem " " (blank) abfragen?
JSON.parse(val).Pump 1 == 'HIGH' klappt leider nicht. Im JSON steht halt als Attribut "Pump 1"
"" der ' haben nicht funktiniert. -
@tklein sagte in [done] Trigger auf einen JSON-Parameter bei Veränderung:
wie kann ich ein attribut mit einem " " (blank) abfragen?
Das hat alles nichts mit ioBroker oder Alias zu tun. Das ist Standard JavaScript
JSON.parse(val)['Pump 1'] == 'HIGH'
Was zum Lesen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects?retiredLocale=de#accessing_properties
-
@haus-automatisierung said in [done] Trigger auf einen JSON-Parameter bei Veränderung:
Das hat alles nichts mit ioBroker oder Alias zu tun. Das ist Standard JavaScript
Da habe ich bisher immer einen weiten Bogen drum gemacht
Muss mich wohl auch mal damit auseinandersetzen...