NEWS
SOLVED Telegram - Nachrichten kommen doppelt an
-
Hallo und Frohe Ostern
Ich schaue mit gerade den Telegram Adapter an und finde nicht heraus warum alle Nachrichten doppelt gesendet werden:
Wenn ich in einem Script sendTo('telegram', "hallo"); schreibe denke ich das beim Start des Script ein einzelnes Hallo gesendet wird, doch finde ich im Dialog schon zweimal Hallo.
Als weiteres Beispiel habe ich ein simples Script welches eigentlich nur ein "ECHO" bringen soll. Allerdings gekomme ich immer die Antwort 2x. Habe ich da irgendwo einen Denkfehler ?
Malc
on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) { var stateval = getState('telegram.0.communicate.request').val; // Statevalue in Variable schreiben var user = stateval.substring(1,stateval.indexOf("]")); // user aus Statevalue extrahieren var cmd = stateval.substring(stateval.indexOf("]")+1,stateval.length); // CMD/Text aus Statevalue extrahieren sendTo("telegram", "send", { text: "user [" + user + "] cmd [" + cmd + "]" }); })
-
@madjack84
Etwas spät aber vielleicht auch für andere relevant. Ich hatte auch das Problem das meine Scripte manchmal mehrmals an Telegram gesendet haben. Der Grund dafür war, das der Status z. B. bei einem Knopf (switch.click) zwei mal gesetzt wird. Einmal auf "true" und dann gleich wieder auf "false" das führt dazu das die Scripte auch zwei mal ausgeführt werden wenn man auf diesen State (".click") lauscht.on(ZIGBEE_BUTTON + '.click', function() { if (getState(ZIGBEE_BUTTON + '.click').val != true) { return; } ... weiterer code ... setState(TELEGRAM_MESSAGE, message); });
-
Ich habe mal die erste Instanz gestoppt und noch eine weitere angelegt. Bei der habe ich das gleiche Problem
! on({id: 'telegram.1.communicate.request', change: 'any'}, function (obj) {
! var stateval = getState('telegram.0.communicate.request').val; // Statevalue in Variable schreiben
! var user = stateval.substring(1,stateval.indexOf("]")); // user aus Statevalue extrahieren
! var cmd = stateval.substring(stateval.indexOf("]")+1,stateval.length); // CMD/Text aus Statevalue extrahieren
! sendTo("telegram", "send", {
! text: "user [" + user + "] cmd [" + cmd + "]"
! });
! }) -
Wenn du bei sendTo mürbsten adaptetnamen angibst dann wird der send Befehl an jede Instanz gegeben. Wenn du also mehr als eine Instanz hast geht es mehrfach raus. Sonst bei sendTo die instanz angeben (zB telegram.0) dann wird es nur an diese gegeben.
-
Ich hatte nur zum test eine weitere Instanz aktiv. Die andere war zu dem Zeitpunkt ausgeschaltet.
Ich habe mal ein Log eingefügt. (Nur eine Instanz vorhanden und aktiv) :
telegram.0 2018-04-01 14:42:17.596 debug Message sent telegram.0 2018-04-01 14:42:17.596 debug Request: {"message_id":141,"from":{"id":999999999,"is_bot":true,"first_name":"999","username":"999999999_bot"},"chat":{"id":463645855,"first_name":"999999999_bot","last_name":"New","type":"private"},"date":15 telegram.0 2018-04-01 14:42:17.588 debug Message sent telegram.0 2018-04-01 14:42:17.576 debug Request: {"message_id":140,"from":{"id":999999999,"is_bot":true,"first_name":"999","username":"999999999_bot"},"chat":{"id":463645855,"first_name":"999999999_bot","last_name":"New","type":"private"},"date":15 telegram.0 2018-04-01 14:42:17.536 debug Send message to "999999999": user [999999999_bot] cmd [1] telegram.0 2018-04-01 14:42:17.536 debug Send message to "999999999_bot": user [999999999_bot] cmd [1] telegram.0 2018-04-01 14:42:17.517 debug Got message from 999999999_bot: 1
-
Ich sehe GOT "2" und zweimal SEND "2"
telegram.0 2018-04-01 14:46:54.252 debug Send message to "9999": user [9999] cmd [2] telegram.0 2018-04-01 14:46:54.252 debug Send message to "9999": user [9999] cmd [2] telegram.0 2018-04-01 14:46:54.224 debug Got message from 9999: 2
Mein Script hat aber nur einen Eintrag:
sendTo("telegram", "send", { text: "user [" + user + "] cmd [" + cmd + "]" });
Irgendwas übersehe ich da
-
Ich habe mal auf einem anderen Rechner Telegram installiert und das erste System abgeschaltet.
- Da kommen keine 2 Nachrichten!
-Dann auf den ersten Telegramm deinstalliert, installiert. Aber es kommen immer zwei
Wo kann ich nur suchen?
Malc
-
Schreib doch einfach „sendTo(„telegram.0“. , …)“
Geht das dann einmal oder sich doppelt?
-
Ich hatte letztens auch massiv Probleme damit. Immer wenn ich den Telegram Adapter neu gestartet hatte oder nach einem Update kam alles doppelt. Im Log tauchte dann immer eine Warnung auf, das der Bot doppelt läuft.
Die Lösung war dann IOBroker mal komplett neu zu starten und das Problem war damit erstmal beseitigt.
-
Ich habe den IOBroker neu gestartet, da war das Problem noch vorhanden.
Nach und nach habe ich alle Scripte einzeln dekativiert, und wirklich, auf einmal ist das Problem weg. Auch wenn wieder alle Scripte laufen.
Ich verstehe es nicht, keine bewusste Änderung. Da hilft wohl nur beobachten.
Malc
-
Je nachdem was genau deine Skripte tun kann es vorkommen das trotz restart eines Skriptes im JavaScript Adapter ein altes noch läuft. Kann vorkommen vor allem wenn man eigene Netzwerk oder serielle Verbindungen aufmacht. Hat dein Skript sowas?
-
Je nachdem was genau deine Skripte tun kann es vorkommen das trotz restart eines Skriptes im JavaScript Adapter ein altes noch läuft. Kann vorkommen vor allem wenn man eigene Netzwerk oder serielle Verbindungen aufmacht. Hat dein Skript sowas? `
Bewusst habe ich weder Netzwerk oder serielles drin. Eigentlich nur Aktion bei Signaländerungen ohne Verwendung spezieller Geräte.
-
Nun habe ich das Problem wieder. Auf einmal wird das Telegrammevent doppelt ausgeführt. Ich habe iobroker / server neustart durchgeführt.
Das was ich bisher herausgefunden habe ist das der Stop eines beliebigen Scriptes dafür sorgt dass das eigentlich Script wieder nur einmal ausgeführt wird. Sehr merkwürdig.
Malc
-
Hallo!
Ich habe einen Zusammenhang gefunden, es ist es (m)ein Anfängerfehler
Ich hatte das Telegramscript unter Global abgelegt….. :lol:
Nun habe ich das Script unter Common gelegt und alles arbeitet wie erwartet.
Ah jetzt ja. Jedes Commonscript lädt jedes Globale hinzu. Macht Sinn und nun verstehe ich es auch!
Asche auf mein Haupt.
Malc
-
Moin.
Ich habe zur Zeit das gleiche Problem, also es wird immer zweimal die gleiche Nachricht gesendet. Ich habe den Javascript Adapter und den Telegram Adapter neu gestartet. Keine Lösung. Ich habe die Skripte gelöscht und neu geschrieben, keine Besserung. Ich habe mit Blockly das Skript erstellt.
Es macht auch keinen Unterschied ob bei "Telegram" alle Instanzen oder telegram.0 steht.
Das skript ist unter common gespeichert.
OK LÖSUNG meines Problems selbst gefunden.
Der "Wert" bei anerkannt ist steht nun auf "update", dann bekomme ich nur eine Nachricht. JUHU
8050_blockly_steckdose.jpg -
Nun habe ich ein weiteres Problem.
Wie kann ich dem Skript sagen, es möge bitte nur die Information der Schaltzustände schreiben, wenn sich etwas ändert.
Beim ändern von "ist wahr" auf "wurde geändert" schreibt das Skript immer einmal mehr, dass die Steckdose an oder aus ist.
-
Wieder durch Selbstexperimente herausgefunden.
"Anerkannt ist" auf "Befehl" setzen.
8050_blockly_steckdose_2.jpg -
Hallo zusammen, habe auch mehrfache Messages.
Verwende kein Blockly sondern direkt das Skript mit nem Menü.
Gefühlt kommt die Nachricht mehrfach an wenn man die Telegram Nachricht am Telefon nicht abruft also am Home screen einfach weg wischt ohne Telegram zu ändern.Kennt das jmd?
-
@madjack84
Etwas spät aber vielleicht auch für andere relevant. Ich hatte auch das Problem das meine Scripte manchmal mehrmals an Telegram gesendet haben. Der Grund dafür war, das der Status z. B. bei einem Knopf (switch.click) zwei mal gesetzt wird. Einmal auf "true" und dann gleich wieder auf "false" das führt dazu das die Scripte auch zwei mal ausgeführt werden wenn man auf diesen State (".click") lauscht.on(ZIGBEE_BUTTON + '.click', function() { if (getState(ZIGBEE_BUTTON + '.click').val != true) { return; } ... weiterer code ... setState(TELEGRAM_MESSAGE, message); });
-
@FallenAtticus danke für den nachvollziehbaren Tip, aber ich fürchte das ist es nicht. Bei Betätigung eines Soft Buttons in Telegram wird das Telegram Skript mit einer Codierung erneut aufgerufen (korrekt)... Leider werden manche Messages/Responses aber zwei Mal angezeigt ... Es handelt sich dabei nicht um click Events eines HW Schalters
-
Ich habe das Problem auch jetzt seit einigen Tagen.
Habe schon einiges ausprobiert mit neu starten von iobroker oder neu einrichten des Skriptes hat aber alles eider nicht funktioniert, weiß einer mittlerweile wie man das genau lösen kann?