NEWS
Doppelte Benachrichtigung bei Telegram
-
Kann sein das es umständlich ist, ich lerne ja noch.
Nach meinem Verständnis ist das Script logisch
Ich gehe nochmal in mich und schaue mir das nochmal in Ruhe an. Kann auch sein, dass ich unbewusst Überschneidungen eingebaut habe. Die könnten ja der Grund für die Mehrfachbenachrichtigungen sein..
Wie gesagt, ich schaue nochmal und melde mich bestimmt wieder -
@Crazy32
Ist ja auch kein Vorwurf
So wie Du das hast ist das schon logisch, nur eben sehr ums Eck und da brauch ich schon ne Weile bis ich sehe wo was und wann aus und angeschaltet wird.
Wenn das oben so nicht funktioniert, dann probier das mal so:
Bei den Zeit Bausteinen blick ich auch nicht immer voll durch, aber die zweite Variante habe ich bei mir so laufen und das funktioniert. -
Habe ich auch nicht als Vorwurf aufgefasst
Ich bin ja froh über Hilfe. Ich schaue mir das an, wird aber wohl erst am WE sein
-
@Crazy32
Kannst auch mal in der Fritz bei den Ereignissen schauen, ob der Trigger mehr fach auslöst, sprich die Steckdose den Zustand ungewollt wechselt, dann liegt es nämlich daran und nicht am Script, denn das macht nur was vorgegeben wird und ist selbst in Deiner Version nicht falsch. -
@Jan1 sagte in Doppelte Benachrichtigung bei Telegram:
@Crazy32
"selbst in Deiner Version nicht falsch."Schön gesagt
Ok, schaue ich auch nach.
-
Als Workaround kannst du auch einen Timout von 1 Sekunden nehmen und deine telegram ausgabe darein packen.
Dann noch einen Stop Timeout Block vor eben diesen Timeout packen und es sollte auch nur einmal kommen -
@CruziX
Das kommt dann wenn es danach immer noch prellt, denn eigentlich sollte das auch ohne sauber funktionieren, wenn der Trigger nur einmal kommt und da hier schon ein wenig Zeit zwischen den Meldungen liegt, sollte das nicht am Prellen der Steckdose liegen, sonst würde die Telegram Meldung sofort 2 mal geschickt werden und das macht sie komischer weiße nicht.Aber vollkommen richtig, so kann man das auch umgehen, nur erst mal versuchen zu lösen, bevor man es umgeht
-
Damit habe ich aber nicht die Ursache beseitigt. Ich will ja wissen woran es liegt, damit ich in Zukunft die Scripte sauber schreiben kann.
-
@Crazy32
Da was er schreibt ist schon alles richtig und man baut das zur Sicherheit auch meist ein. Das schadet auf alle Fälle nie und das baust Du später auch mit ein wenn es ohne laufen würde, weil das einfach sicherer ist. Was aber auch richtig ist, bei Dir scheint noch was anderes nicht ganz zu passen und das sollte auch mal geprüft werden.
Setzt das am WE einfach mal um und schau was passiert, wenn noch Fragen offen sind geht es hier weiter. -
@Crazy32 sagte in Doppelte Benachrichtigung bei Telegram:
Damit habe ich aber nicht die Ursache beseitigt. Ich will ja wissen woran es liegt, damit ich in Zukunft die Scripte sauber schreiben kann.
Daher auch Workaround ^^
-
Hallo ,
das erste was mir auffällt ist das du true und fals nimmst müsste aber 1 und 0 sein wenn ich das richtig in Erinnerung habe, geht auch aber wird vom Adapter später wieder zurück auf 0 oder 1 gesetzt. Würde für mich das doch recht späte zweite nachsenden erklären. Ist aber nur geraten.Gruß Michael
-
@Michi68
Ganz unrecht hast nicht, da ich aber auch eine DECT Dose habe, ein Script das damit läuft und ich ebenfalls zufällig in dem Script ein Telegram verschicke, hab ich mal nachgesehen was ich da drin habe und bei mir läuft das mit true und false, obwohl der Adapter in dem DP 1 oder 0 stehen hat. Somit ist das wohl egal. -
@Jan1
Das mit true und 1 liefert eine Grund warum der State 2 mal geändert wird.Gibt es in Blockly nicht die Möglichkeit diesen Code umzusetzen?
if (!obj.state.val != !obj.oldState.val) { telegram verschicken}
die beiden "nicht" um den Wert in true/false umzuwandeln.
-
@ticaki
Man kann auch einfach 1 und 0 schreiben, wobei das doppelte Senden zeitlich schon zu weit auseinander liegt um das als Grund fest zu machen und ein ähnliches Script läuft bei mir mit true und false.Muss er mal testen, ob es mit 0 und 1 klappt, schaden tust auf alle Fälle auch nicht.
-
wegen der langen zeit zwischen den beiden Nachrichten Tippe ich ja darauf, hab auch 2 AVM Steckdosen am laufen und weiß daher das die auch mit true oder false geschaltet werden können, hatte aber auch mal Stress damit weshalb ich das dann geändert habe, weiß aber nicht mehr wieso ich Stress hatte. Hatte auch schon mal das Problem das Telegram 2 Nachrichten hintereinander gesendet hat aber die kamen innerhalb von 1-2 Sekunden da hilf dann ein einfaches Timeout drum zusetzen von 3-4 Sekunden. Aber 1-3 Minuten ist schon sehr viel Zeit.
-
@Michi68
Eben, im Sekunden Bereich würde ich da auch wegen true und false, oder eben prellen den Fehler suchen. Hier liegen Minuten dazwischen. -
@Jan1
Da hast du recht, aber... gehen wir das logisch an: Er setzt den Wert auf true und bekommt eine "true" Nachricht. Ein X Zeitspanne später bekommt er eine weitere true nachricht. Was nur geht wenn der Wert zwar geändert wurde aber noch immer true ist.True = ist alles was nicht false ist
False = 0/false/''Folglich sollte er den alten Übergabe wert in True oder False ändern und das mit dem neuen Wert, der ebenfalls in true oder false geändert wurde, überprüfen und nur auslösen, wenn die beiden sich unterscheiden.
Die einfachste Version einen Wert in Javascript in einen Logikwert zu ändern ist in "nicht" bzw. "!" zu benutzen.
nicht true == nicht "ich bin true" -> ist true
nicht true == nicht 1 -> ist true
nicht true == nicht true -> ist trueEs sollte zwar auch ohne das "nicht" gehen. Aber dann wäre 2 == 1 false wohingegen !(2) == !(1) true ergibt.
In einem Beispiel von dir fragst du im geposteten Code "state.val" ab... finde das leider in Blockly nicht. Der alte Wert wäre "oldState.val".
-
@ticaki
Schauen wir mal was bei dem Umbau rauskommt. In Blockly gibts das und ist vorheriger Wert. -
so ich noch mal habe das jetzt mal getestet
mit true oder false wie man hier sieht schreib er auch true rein und die Steckdose geht an und die Nachricht wurde mit Telegram versendet.
Nach ca. 2-3 Minuten ändert fritzdect.0 den Wert true in 1 um aber es wurde keine zweite Nachricht verschickt so wie ich es vermutet hatte.
Also liegt da schon mal nicht der Fehler
-
@Michi68
Eigentlich war es klar, da darauf auch nicht getriggert wird. Das =wahr ist unnötig da doppelt und im Bild hast nicht das umgesetzt was ich gepostet habe und als möglichen Fehler auf dem Schirm hatte. Nimm einfach Wert aus dem Trigger Bereich, weil das eben besser für die Laufzeit ist und sich auf den Wert des Trigger bezieht, hatte ich ogben schon erklärt.