NEWS
[ gelöst ]. Auslösenden Kontakt anzeigen lassen ... wie
-
Hallo, der Berg steht mal wieder vor mir.
Ich kann aus einer Gruppe von Kontakten (Fensterkontakte) einen "Alarm" bei Öffnung eines Fensters
auslösen lassen, ohne alle Kontakte per Skript einzeln aufzuführen. Funktioniert sehr gut.
Nun möchte ich aber auch wissen, welcher Kontakt der Auslöser war. Aber: der Berg steht wieder vor mir.Wer kann mir bitte einen Tipp geben, wie ich den Auslöser angezeigt bekommen kann.
Danke euch..
-
let ids = $("0_userdata.0.ENERGIE.*").toArray() on({id: ids, change: "any"}, function (obj) { let value = obj.state.val; let id = obj.id console.log(id +' -> '+value) }); -
@mcu Hallo und danke für deine Antwort.
Ich verstehe nicht , was ich in die Klammer einsetzten muss, wo du "0.userdata.0.ENERGIE.*") eingetragen hast und ob "any" so bleiben kann. -
@herr_kuschel
Dann zeige doch deinen Code, damit man das Beispiel da einfügen kann. -
@ticaki Hier der Code.....
var FensterOffen; on({ id: [].concat(Array.prototype.slice.apply($('state[id=*](functions=Einbruch)'))), val: true }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; FensterOffen = (typeof FensterOffen === 'number' ? FensterOffen : 0) + 1; setState('0_userdata.0.Fenster_offen' /* Fenster_offen */, FensterOffen); console.info(FensterOffen); }); on({ id: [].concat(Array.prototype.slice.apply($('state[id=*](functions=Einbruch)'))), val: false }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; FensterOffen = FensterOffen - 1; setState('0_userdata.0.Fenster_offen' /* Fenster_offen */, FensterOffen); console.info(FensterOffen); }); code_text -
var FensterOffen; on({ id: [].concat(Array.prototype.slice.apply($('state[id=*](functions=Einbruch)'))), val: true }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; let id = obj.id; FensterOffen = (typeof FensterOffen === 'number' ? FensterOffen : 0) + 1; setState('0_userdata.0.Fenster_offen' /* Fenster_offen */, FensterOffen); console.info(id+' - '+FensterOffen); }); on({ id: [].concat(Array.prototype.slice.apply($('state[id=*](functions=Einbruch)'))), val: false }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; let id = obj.id; FensterOffen = FensterOffen - 1; setState('0_userdata.0.Fenster_offen' /* Fenster_offen */, FensterOffen); console.info(id+' - '+FensterOffen); }); -
@herr_kuschel: Hier der Code.....
Das ist aus Blockly generiert.
Man nimmt nur einen Trigger pro Datenpunkt (Ressourcen).
Die Erfassung der offenen Fenster über eine Schleife ist zuverlässiger als Anzahl erhöhen / verringern.
Der Debug-Block zeigt die ID des auslösenden Kontaktes. Wenn die DP-Namen eindeutig sind, nimmt man diese.
-
@mcu sagte in Auslösenden Kontakt anzeigen lassen ... wie:
let id = obj.id;
FensterOffen = FensterOffen - 1;
setState('0_userdata.0.Fenster_offen' /* Fenster_offen */, FensterOffen);
console.info(id+' - '+FensterOffen);Danke schon mal, funktioniert

-
Danke dir auch für deine Hilfe....
