NEWS
Telegram mehrfach Nachricht und Logikproblem
-
Hi,
folgende Situation. Ich habe 2 Türkontakte. Einen am Türgitter und einem an der Wohnungstür. Wenn sich ein Zustand des Contactevents ändert prüfe ob beide Türen offen sind. Wenn das der Fall ist schick mir nach 10 Sekunden eine Nachricht. Funktioniert auch. Aber meisstens ist es der Fall das man erst die Wohnungstür und dann das Gitter öffnet. Gibt also 2 Nachrichten per Telegram. Hier ist mein Skript:
Wenn ich jetzt eine Objekt ID oben ersetze durch

bekomme ich gar kein debug. Er wird keine Veränderung des Zustands erkannt.Was mache ich falsch :) ?
Danke im vorraus
-
Hi,
folgende Situation. Ich habe 2 Türkontakte. Einen am Türgitter und einem an der Wohnungstür. Wenn sich ein Zustand des Contactevents ändert prüfe ob beide Türen offen sind. Wenn das der Fall ist schick mir nach 10 Sekunden eine Nachricht. Funktioniert auch. Aber meisstens ist es der Fall das man erst die Wohnungstür und dann das Gitter öffnet. Gibt also 2 Nachrichten per Telegram. Hier ist mein Skript:
Wenn ich jetzt eine Objekt ID oben ersetze durch

bekomme ich gar kein debug. Er wird keine Veränderung des Zustands erkannt.Was mache ich falsch :) ?
Danke im vorraus
@bastian888
Deine 2 Events haben den selben Namen, könnte schon mal ein Problem sein. Dann setzte mal ein stop timeout vor den Timeout.
Deine Logik ist auch eher unlogisch. Du prüfst 2 mal auf nicht war und das Ergebnis UND. Ich würde zu erst UND und dann nicht wahr prüfen. -
@Jan1 Vielen Dank für die schnelle Antwort.
Was bringt mir der stop timeout davor ?
Und wie überprüfe ich erst UND und dann beide nicht wahr ?Hier nochmal der JS Code
var timeout; on({id: new RegExp('zigbee\\.0\\.00158d00032b7626\\.contact' + "|" + 'zigbee\\.0\\.00158d00031b3589\\.contact'), change: "ne"}, function (obj) { timeout = setTimeout(function () { if (getState("zigbee.0.00158d00031b3589.contact").val == false && getState("zigbee.0.00158d00032b7626.contact").val == false) { sendTo("telegram.1", "send", { text: 'Türgitter ist offen' }); } }, 10000); }); -
@Jan1 Vielen Dank für die schnelle Antwort.
Was bringt mir der stop timeout davor ?
Und wie überprüfe ich erst UND und dann beide nicht wahr ?Hier nochmal der JS Code
var timeout; on({id: new RegExp('zigbee\\.0\\.00158d00032b7626\\.contact' + "|" + 'zigbee\\.0\\.00158d00031b3589\\.contact'), change: "ne"}, function (obj) { timeout = setTimeout(function () { if (getState("zigbee.0.00158d00031b3589.contact").val == false && getState("zigbee.0.00158d00032b7626.contact").val == false) { sendTo("telegram.1", "send", { text: 'Türgitter ist offen' }); } }, 10000); }); -
@Jan1
Ja immer zwei Nachrichten. Habe mal einen anderen State genommen und bekomme trotzdem zwei Meldungen.
Denke der triggert halt weil die Türen mit ein paar Sekunden Unterschied geöffnet werden. -
@Jan1
Ja immer zwei Nachrichten. Habe mal einen anderen State genommen und bekomme trotzdem zwei Meldungen.
Denke der triggert halt weil die Türen mit ein paar Sekunden Unterschied geöffnet werden.@bastian888 sagte:
Denke der triggert halt weil die Türen mit ein paar Sekunden Unterschied geöffnet werden.
Ja, wenn innerhalb der 10 s Verzögerung der 2. Kontakt triggert, laufen 2 Timer. Das kann man durch ein stop timeout vor dem Ausführen timeout verhindern.
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