NEWS
OnChange weiter einschränken (Ursprung)
-
Hallo Zusammen,
ich habe hier zwei Javascript Scripte laufen und stehe gerade vor einen kleines Problem:
Das erste Script führt ein Python Consolenscript aus und Parsed dann eine JSON Response des Scriptes und schreibt dann Werte in IOBroker States.
(Auslesen einer Klimaanlange)
Das zweite Script führt bei Änderungen dieser States dass Python Script aus und verwendet Werte aus den States als Parameter.
(Setzen von Werte in der Klimaanlage)Um einen "Loop" zu verhindern (Script zwei Startet sobald Script eins was ändert), habe ich in Script zwei
if ((obj.state ? obj.state.from : "") != 'system.adapter.javascript.0'){ ... }
eingefügt. Das Funktioniert auch wunderbar.
Nun möchte ich allerdings über ein weiteres Script doch States Ändern so dass das Script zwei getriggert wird.
Nur erfolgt dieses natürlich nicht, da das dritte Script auch von "system.adapter.javascript.0" kommt.Welche Möglichkeiten gibt es dieses Problem zu lösen?
Kann man den Scriptnamen mit angeben? Oder hilft es nur eine zweite Javascript Instanz zu installieren?
Vielen Dank
-
@Raducanu Die saubere Lösung wäre das
ack
zu benutzen:- Das erste Skript setzt den Wert mit
ack: true
- Das zweite Skript reagiert nur auf Changes mit
ack: true
- Wer sonst den State ändert, setzt
ack
nicht auftrue
Eine etwas ausführlichere Diskussion findest du hier:
https://forum.iobroker.net/topic/37652/dp-wurde-aktualisiert-anerkannt-ist-egal-update-befehl/8Grundsätzlich gilt:
Befehl:ack=false
Update:ack=true
So arbeiten alle Adapter.
- Das erste Skript setzt den Wert mit
-
Vielen Dank, ich glaube dass mir das weiterhilft.