NEWS
[Gelöst] Telegram schickt Nachrichten doppelt oder noch öfter
-
Hallo,
habe folgendes Script laufen.
//Telegram schick Push-Meldung wenn Markise ganz eingefahren ist on({id: "hm-rpc.0.NEQ1320295.1.LEVEL", val: 0}, function (obj) { //Text wird an Telegram verschickt sendTo("telegram", "send", { text: 'Markise ist ganz eingefahren.' }); }); //Telegram schick Push-Meldung wenn Markise ausfährt on({id: "hm-rpc.0.NEQ1320295.1.DIRECTION", val: 1}, function (obj) { //Text wird an Telegram verschickt sendTo("telegram", "send", { text: 'Markise fährt raus.' }); }); //Telegram schick Push-Meldung wenn Markise einfährt on({id: "hm-rpc.0.NEQ1320295.1.DIRECTION", val: 2}, function (obj) { //Text wird an Telegram verschickt sendTo("telegram", "send", { text: 'Markise fährt ein.' }); }); //Telegram schick Push-Meldung wenn Markise ganz ausgefahren ist on({id: "hm-rpc.0.NEQ1320295.1.LEVEL", val: 100}, function (obj) { //Text wird an Telegram verschickt sendTo("telegram", "send", { text: 'Markise ist ganz ausgefahren.' }); });
Situation:
Markise ist eingefahren, somit ist Level auf 0.
Wenn jetzt die Markise ausgefahren wird, also auf Level 100 gehen soll wird aber erst
mal noch die Nachricht "Markise ist ganz eingefahren" geschickt.
Dann kommen 4-5 Meldungen "Markise fährt aus".
1 Mal wäre ja richtig weil der STATE DIRECTION auf 1 geht für ausfahren.
Wenn die Markise bei 100% ist, also ganz ausgefahren kommt die Meldung
"Markise ist ganz ausgefahren" 2 Mal was ja auch nicht richtig ist.
Beim Einfahren läuft es auch so ab.
Wie kann ich die Mehrfachmeldungen abstellen das es, wenn die Markise eingefahren ist, so aussieht?
"Markise fährt aus"
"Markise ist ganz ausgefahren"
Markise fährt ein"
Markise ist ganz eingefahren.
Gruss
Paulchen
-
Hilft es eventuell, wenn du nur auf Änderungen triggerst?
on({id: "hm-rpc.0.NEQ1320295.1.LEVEL", change: "ne"}, function (obj)
Dann einfach den aktuellen Wert abfragen und entsprechend reagieren. Vielleicht kann man ja auch val: 0 und change: "ne" kombinieren. Wissen tu ich es aber leider nicht
-
Vielleicht kann man ja auch val: 0 und change: "ne" kombinieren. `
Ja, die Triggerbedingung sollte um, change: 'ne'
ergänzt werden.
-
Hatte ich auch öfter mal. Js oder Telegramm Adapter Neustart hat es bei mir immer gelöst. Ist aber seit ca diesem Jahr nicht mehr aufgetreten sind deine Versionen aktuell?
Gesendet von meinem SM-G930F mit Tapatalk
-
Hilft es eventuell, wenn du nur auf Änderungen triggerst?
on({id: "hm-rpc.0.NEQ1320295.1.LEVEL", change: "ne"}, function (obj)
Dann einfach den aktuellen Wert abfragen und entsprechend reagieren. Vielleicht kann man ja auch val: 0 und change: "ne" kombinieren. Wissen tu ich es aber leider nicht `
Dann kann ich aber eingefahren oder ausgefahren nicht definieren.
Ich muss ja Level 100 abfragen und da kommt ja auch doppelte Meldung.
-
Dann kann ich aber eingefahren oder ausgefahren nicht definieren.
Ich muss ja Level 100 abfragen und da kommt ja auch doppelte Meldung. `
Wenn man beides kombinieren kann, was ja laut Paul53 geht, dann musst du an der Logik nichts ändern und lediglich das , change: "ne" jeweils mit einbauen. Die doppelten Meldungen kommen ja eventuell nur durch ein Update des Wertes aber eben nicht durch eine Änderung. Damit sollten die dann nicht mehr auftreten.
Ansonsten hätte ich halt in der Callback-function den Wert auf 0, 100 oder was auch immer überprüft und nur dann eine Nachricht geschickt.
Oder du speicherst dir einfach den Zustand, bei dem du zuletzt eine Nachricht geschickt hast, fragst den vor dem Senden ab und sendest eben nur dann, wenn sich der Status unterscheidet.
Sollte alles machbar sein, falls das Problem nach 'change: "ne"' immer noch besteht.
-
Dann versuche es mal mit 2 on()
function sendTxt(txt) { sendTo("telegram", "send", { text: txt }); } on("hm-rpc.0.NEQ1320295.1.LEVEL", function (dp) { if(dp.state.val == 0) sendTxt('Markise ist ganz eingefahren.'); if(dp.state.val == 100) sendTxt('Markise ist ganz ausgefahren.'); }); on("hm-rpc.0.NEQ1320295.1.DIRECTION", function(dp) { if(dp.state.val == 1) sendTxt('Markise fährt raus.'); if(dp.state.val == 2) sendTxt('Markise fährt ein.'); });
-
Danke für eure Hilfe.
die Erweiterung mit
, change: 'ne'
hat es gebracht.
Wie stelle ich diesen Thread jetzt auf gelöst?
-
Wie stelle ich diesen Thread jetzt auf gelöst? `
Im Betreff des ersten Beitrags.