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); });
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden