NEWS
(Blockly)-Trigger wird mehrmals ausgeführt
-
Hallo!
Ich habe folgendes Problem mit diesem Script:
on({id: 'sonoff.0.EG_WZ_Schiebetuere.POWER2', val: true}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.Lichter.EG_WZ_Raum").val == true) { console.log('Schalte aus'); setState("javascript.0.Lichter.EG_WZ_Raum"/*EG_WZ_Raum*/, false); } else { console.log('Schalte ein'); setState("javascript.0.Lichter.EG_WZ_Raum"/*EG_WZ_Raum*/, true); } });
Wenn ich dann über Jarvis schalte bekomme ich folgende Einträge im Log:
2021-03-12 13:35:10.594 - info: javascript.0 (163481) script.js.Lichter.EG_WZ_Raum1: Schalte aus 2021-03-12 13:35:10.599 - info: mqtt.1 (1667) send2Server javascript.0.Lichter.EG_WZ_Raum[javascript/0/Lichter/EG_WZ_Raum] 2021-03-12 13:35:10.759 - info: javascript.0 (163481) script.js.Lichter.EG_WZ_Raum1: Schalte ein 2021-03-12 13:35:10.765 - info: mqtt.1 (1667) send2Server javascript.0.Lichter.EG_WZ_Raum[javascript/0/Lichter/EG_WZ_Raum] 2021-03-12 13:35:10.770 - info: javascript.0 (163481) script.js.Lichter.EG_WZ_Raum1: Schalte aus 2021-03-12 13:35:10.775 - info: mqtt.1 (1667) send2Server javascript.0.Lichter.EG_WZ_Raum[javascript/0/Lichter/EG_WZ_Raum]
Wenn ich direkt über den Schalter schalte bekomme ich: 2021-03-12 13:38:37.045 - info: javascript.0 (163481) script.js.Lichter.EG_WZ_Raum1: Schalte ein 2021-03-12 13:38:37.053 - info: mqtt.1 (1667) send2Server javascript.0.Lichter.EG_WZ_Raum[javascript/0/Lichter/EG_WZ_Raum] 2021-03-12 13:38:37.056 - info: javascript.0 (163481) script.js.Lichter.EG_WZ_Raum1: Schalte aus 2021-03-12 13:38:37.062 - info: mqtt.1 (1667) send2Server javascript.0.Lichter.EG_WZ_Raum[javascript/0/Lichter/EG_WZ_Raum]
MOD-Edit: Code in code-tags gesetzt!
Eigentlich würde ich mir aber nur einen Schalt-Eintrag wünschen!
Woran liegts??
Danke!
LG
-
@james4711 Aus meiner Sicht liegt es an deinem Trigger.
Bitte das Skript anpassen auf
on({id: 'sonoff.0.EG_WZ_Schiebetuere.POWER2', change: 'gt'}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.Lichter.EG_WZ_Raum").val == true) { console.log('Schalte aus'); setState("javascript.0.Lichter.EG_WZ_Raum"/*EG_WZ_Raum*/, false); } else { console.log('Schalte ein'); setState("javascript.0.Lichter.EG_WZ_Raum"/*EG_WZ_Raum*/, true); } });
-
@asgothian Danke! Scheint so zu funktionieren. Aber warum Greater??
-
Bei Javascript gilt: True > False
Mit dem Trigger auf Grösser als wird der Trigger nur aktiv wenn der State von Falsch auf Wahr wechselt.
A.