NEWS
Mehrere on()-Abfragen, mit vorheriger State-Abfrage
-
Hallo,
bin neu was Thema ioBroker angeht, daher komme ich bei meinem Projekt nicht so wirklich weiter.
Ein kleines bisschen Javascript kann ich, jedoch halt nicht all zu gut - für meine bisherigen Scripte reichte es aus
Ich erstelle z.Z. eine Alarmanlage wie ich Sie von meiner HM-IP App kenne - sprich mit Hüllschutz, Vollschutz, Still und Laut.
Habe sehr lange die APP benutzt, habe jedoch dann zum ioBroker gewechselt (natürlich mit CCU ;)), weil ich dann doch gerne eine Übersicht auf einem Tablet haben wollte.
Mein Problem ist, dass ich ehrlich gesagt nicht weiß, wie ich es bewerkstellige mit der subscribe abfrage.
Meine Tür-/Fensterkontakte sitzen im Gewerk "funcLock", mein Bewegungsmelder im Gewerk "funcSecurity".
Jedoch möchte ich dann auch, dass noch abgefragt wird, ob eben der Hüllschutz oder der Vollschutz an ist, oder eben stiller bzw. lauter Alarm
Vielleicht denke ich da zu kompliziert und mir kann da jemand helfen
Mein bisheriger Versuch funktioniert leider kein Stück
! ````
if ( getState(idAlarmanlage).val >= 1 && getState(idTyp).val === 0) { // Hüllschutz$('channel[state.id=*.STATE](functions="funcLock")').on(function (obj) { if (obj.state.val) { if(getState(idAlarmanlage).val > 0) { log('Fenster/Türen wurden geöffnet'); setState(idAlarm, 1); setState(idStatus, 3); if ( getState(idModus).val === 0 ) { // Lautlos setState(idSirene, false); } } } });
! } else if ( getState(idAlarmanlage).val >= 1 && getState(idTyp).val === 1) { // Vollschutz
! $('channelstate.id=*.STATE').on(function (obj) {
if (obj.state.val) {if(getState(idAlarmanlage).val > 0) { log('Fenster/Türen wurden geöffnet'); setState(idAlarm, 1); setState(idStatus, 3); if ( getState(idModus).val === 0 ) { // Lautlos setState(idSirene, true); } } } }); $('channel[state.id=*.MOTION](functions="funcSecurity")').on(function (obj) { if (obj.state.val) { if(getState(idAlarmanlage).val > 0) { log('Fenster/Türen wurden geöffnet'); setState(idAlarm, 1); setState(idStatus, 3); if ( getState(idModus).val === 0 ) { // Lautlos setState(idSirene, true); } } } });
}
-
Die Trigger nicht in eine Verzweigung packen, denn der Code ausserhalb der Trigger wird nur einmal bei Skriptstart ausgeführt.
function pruefe(motion) { // Übergabe: Trigger war "MOTION" // Hier die Prüfung mit allen Verzweigungen rein } $('channel[state.id=*.STATE](functions="funcLock")').on(function (obj) { if (obj.state.val) pruefe(false); }); $('channel[state.id=*.MOTION](functions="funcSecurity")').on(function (obj) { if (obj.state.val) pruefe(true); });
-
Herzlichen Dank,
auf die Idee bin ich keinesfalls gekommen.
Werde ich gleich mal ausprobieren
Gesendet von meinem SM-G955F mit Tapatalk