NEWS
[gelöst]Schalter invertieren
-
Moin zusammen!
Ich habe jetzt auch eine Alexa.
Hab Skill und ioBroker auch schon alles eingreichtet.
Nur bei einem Lichtschalter habe ich ein Problem: Ich muss Licht aus sagen um das einzuschalten und umgekehrt.
Gibt es ähnlich wie in der Visualisierung die Möglichkeit den 'Schalter' zu invertieren?
LG - Marco
-
Ich antworte mir mit der Lösung mal selbst. :lol:
Google hat mich auf den folgenden Thread gestossen: http://preview.iobroker.com/forum/viewt … =21&t=5704
Habe das Script etwas abgewandelt da ich den Taster nicht toggeln möchte.
var logOn = true; // Logausgabe im Skript var forecreation = false; // true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden) var pfad = "Alexa" + "."; // Pfad in dem die Datenpunkte angelegt werden // Datenpunktnamen: var idTriggerWechselschalter = pfad + 'KitchenLight'; var idWechselschalter = "hm-rpc.0.OEQ1158099"; createState(idTriggerWechselschalter, false, forecreation, { name: 'Alexa Trigger für Küchenlicht', desc: 'Invertiert den Alexa-Befehl für den Wechselschalter', type: 'boolean', unit: '', role: 'value' }); on({id: "javascript."+instance+"."+idTriggerWechselschalter ,change:'any'}, function (obj) { if(logOn) log("Alexa-Trigger für Küchenlicht erkannt"); if(logOn) log("Wert: " + getState("javascript."+instance+"."+idTriggerWechselschalter).val); if (getState("javascript."+instance+"."+idTriggerWechselschalter).val === true) { setState(idWechselschalter+".1.STATE", false); } else if (getState("javascript."+instance+"."+idTriggerWechselschalter).val === false) { setState(idWechselschalter+".1.STATE", true); } });
-
Das geht einfacher und Resourcen schonender. Anstelle
if(logOn) log("Wert: " + getState("javascript."+instance+"."+idTriggerWechselschalter).val); if (getState("javascript."+instance+"."+idTriggerWechselschalter).val === true) { setState(idWechselschalter+".1.STATE", false); } else if (getState("javascript."+instance+"."+idTriggerWechselschalter).val === false) { setState(idWechselschalter+".1.STATE", true); }
besser so:
if(logOn) log("Wert: " + obj.state.val); setState(idWechselschalter+".1.STATE", !obj.state.val);