NEWS
Abgreifen des Schaltzustandes eines Markenschalters in JavaScript
-
Hallo,
ich habe ein Skript für einen Schalter HM-LC-Sw1PBU-FM angelegt, welches folgende Funktionen durchführen soll. Die Wipprichtung zum Einschalten soll für eine Lampe verwendet werden, die andere Wipprichtung für eine andere Lampe. Dabei möchte ich nur die Auslösung abgreifen und nicht über den Schalter direkt die Schaltung durchführen.
Also
-Wippenrichtung Schalter an => Steuerung eines seperaten Funkaktors 1
-Wippenrichtung Schalter aus => Steuerung eines seperaten Funkaktors 2
Bisher habe ich folgendes verwendet:
// Auslösung mit Homematic Hardware-Taster
on({
id: "hm-rpc.1.NEQ0XXXXX1.1.STATE",
val: true
}, function(obj)
{ LogikHier }
}
);
// Auslösung mit Homematic Hardware-Taster
on({
id: "hm-rpc.1.NEQ0XXXXX1.1.STATE",
val: false
}, function(obj)
{ LogikHier }
}
);
Jedoch bekomme ich immer nur den intialen Wechsel von AN=>US oder AUS=>AN mit und nicht wenn jemand von AUS noch einmal AUS drückt. Muß ich hier noch eine weitere Bedingung in den Header der Funktion einfügen (oldval, ack, change, etc.) ?
Danke und Grüße, Jens
-
Muß ich hier noch eine weitere Bedingung in den Header der Funktion einfügen (oldval, ack, change, etc.) ? `
Korrekt! change: "any" erfasst auch Aktualisierungen des Zustands. Siehe die Tabelle https://github.com/ioBroker/ioBroker.javascript/blob/master/doc/en/javascript.md#on–-subscribe-on-changes-or-updates-of-some-state (ein bisschen runter scrollen)Du kannst auch beide Trigger zu einem zusammenfassen, wenn du nicht im "Header" auf val: true/false filterst, sondern das im Callback erledigst:
on({ id: "hm-rpc.1.NEQ0XXXXX1.1.STATE", change: "any" }, function(obj) { if (obj.state.val) { // Aktionen bei Druck auf "AN" ausführen } else { // Aktionen bei Druck auf "AUS" ausführen } });
P.S.: Bitte Code-Tags benutzen für Code