NEWS
Schalter direkt und indirekt schalten
-
Hallo,
mein Schalter soll mir zeigen, ob meine Harmony eine Activity ausführt oder nicht und wenn ich ihn schalte soll er eine Standard activity starten, bzw das System ausschalten.
Beides getrennt bekomme ich hin, aber wenn ich es gleichzeitig laufen habe, dann geht zum Beispiel der Fernseher immer wieder an, wenn ich zum Beispiel die Harmony Fernbedinung nutze und nicht ioBroker.
Dies ist mein erstes Script mit Blockly.
-
Im zweiten Triggerblock fragst Du eine <u>Konstante</u> wahr ab, was dazu führt, dass immer der mache-Zweig ausgeführt wird.
Es sollte die Variable value abgefragt werden.
-
Habe es dementsprechend geändert, trotzdem laufen sie in eine Endlosschleife, wenn ich am Schalter ausschalte.
on({id: "harmony.0.Wohnzimmer.activities.currentStatus"/*activity:currentStatus*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (value == 0) { setState("javascript.0.Fernseher.SWITCH"/*SWITCH*/, false); } else { setState("javascript.0.Fernseher.SWITCH"/*SWITCH*/, true); } }); on({id: "javascript.0.Fernseher.SWITCH"/*SWITCH*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (value == true) { setState("harmony.0.Wohnzimmer.activities.Fernsehen"/*activity:Fernsehen*/, 1); } else { setState("harmony.0.Wohnzimmer.activities.currentStatus"/*activity:currentStatus*/, 0); } });
-
Ok, habe es mit der Erweiterung der Prüfung beim current Status hinbekommen, da er ja zuerst auf Status 3 wechselt.
-
Das habe ich mit eine Scene gelöst, ist wesentlich einfacher und der Scene ist es egal mit was sie getriggert wird.
TV_on-off ist mein Trigger, den ich mit Alexa schalte. Den könntest Du dann eben m it einem Schalter kombinieren.
-
Ich denke die Lösung liegt im "anerkannt" Flag. Wenn du beim SWITCH anerkannt ist "unwahr" einstellst wird es nur ausgelöst, wenn du den Wert via Script/VIS setzt; bei "wahr" entsprechend nur wenn der Wert von Hardware gesetzt wurde.
Wenn ein Wert von einem Adapter (also Hardware) geändert wurde, so sollte anerkannt auf wahr stehen und wenn es von einem Skript geändert wurde auf unwahr.
Wenn du in einem Skript einen Wert setzt kannst du einfluss darauf nehmen, ob anerkannt auf wahr oder unwahr gesetzt wird indem du setze oder steuere verwendet