Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Doppelte Benachrichtigung bei Telegram

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Doppelte Benachrichtigung bei Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • Crazy32
      Crazy32 @Jan1 last edited by

      @Jan1 sagte in Doppelte Benachrichtigung bei Telegram:

      @Crazy32
      "selbst in Deiner Version nicht falsch."

      Schön gesagt 😄 Ok, schaue ich auch nach.

      1 Reply Last reply Reply Quote 0
      • C
        CruziX last edited by

        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

        J Crazy32 2 Replies Last reply Reply Quote 0
        • J
          Jan1 @CruziX last edited by

          @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 😉

          1 Reply Last reply Reply Quote 0
          • Crazy32
            Crazy32 @CruziX last edited by

            @CruziX

            Damit habe ich aber nicht die Ursache beseitigt. Ich will ja wissen woran es liegt, damit ich in Zukunft die Scripte sauber schreiben kann.

            J C 2 Replies Last reply Reply Quote 0
            • J
              Jan1 @Crazy32 last edited by

              @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.

              1 Reply Last reply Reply Quote 0
              • C
                CruziX @Crazy32 last edited by

                @Crazy32 sagte in Doppelte Benachrichtigung bei Telegram:

                @CruziX

                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 ^^

                1 Reply Last reply Reply Quote 0
                • M
                  Michi68 last edited by

                  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

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    Jan1 @Michi68 last edited by

                    @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.

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki Developer @Jan1 last edited by

                      @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.

                      J 1 Reply Last reply Reply Quote 0
                      • J
                        Jan1 @ticaki last edited by

                        @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.

                        1 Reply Last reply Reply Quote 0
                        • M
                          Michi68 last edited by

                          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.

                          J 1 Reply Last reply Reply Quote 0
                          • J
                            Jan1 @Michi68 last edited by

                            @Michi68
                            Eben, im Sekunden Bereich würde ich da auch wegen true und false, oder eben prellen den Fehler suchen. Hier liegen Minuten dazwischen.

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              ticaki Developer @Jan1 last edited by ticaki

                              @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 true

                              Es 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".

                              J 1 Reply Last reply Reply Quote 0
                              • J
                                Jan1 @ticaki last edited by

                                @ticaki
                                Schauen wir mal was bei dem Umbau rauskommt. In Blockly gibts das und ist vorheriger Wert.

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Michi68 last edited by

                                  so ich noch mal habe das jetzt mal getestet

                                  01.png

                                  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.

                                  02.png

                                  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.

                                  03.png

                                  Also liegt da schon mal nicht der Fehler

                                  J T 2 Replies Last reply Reply Quote 0
                                  • J
                                    Jan1 @Michi68 last edited by Jan1

                                    @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.

                                    1 Reply Last reply Reply Quote 0
                                    • T
                                      ticaki Developer @Michi68 last edited by

                                      @Michi68
                                      Ist alles möglich. Der Topicersteller sollte eine Logausgabe ins Skript einbauen und prüfen ob es 2 mal aufgerufen wird und am besten "state.from" ins log schreiben.

                                      J 1 Reply Last reply Reply Quote 0
                                      • J
                                        Jan1 @ticaki last edited by

                                        @ticaki
                                        Hab bei mir jetzt noch mal nach dem on/off DP geschaut und da stimmt vom Adapter schon was nicht, zumindest ist es verwirrend. Der DP ist als Logikwert deklariert und bietet beim manuellen setzten eben nur true und false an, was auch funktioniert. Das wird aber nach einer gewissen Zeit in 0 und 1 gewandelt, was zwar immer noch boolen ist, aber als Deklaration für den DP eher eine Zahl.
                                        Das sollte aber auch nicht das Problem des doppelten Senden sein, sondern eher eine unschöne Eigenschaft des Adapter die aber trotzdem funktioniert.

                                        1 Reply Last reply Reply Quote 0
                                        • Crazy32
                                          Crazy32 last edited by

                                          Wow, so viele Antworten. Gestern Abend hatte ich das Phänomen, dass die Lampe ausgeschaltet wurde und die Meldung "Lampe aus" kam. Kurze Zeit später wieder die zweite Meldung, allerdings mit der Meldung "Lampe an", obwohl die Lampe aus war. Seltsam. Ich habe jetzt mal die Werte von "wahr" und "falsch" auf "1" und "0" geändert.
                                          Das Script für die Lampenschaltung habe ich so gelassen, weil ich mit der Cron-Funktion leicht Probleme hatte, da hat sich die Lampe minütlich ein- und ausgeschaltet. Mit der Cron-Funktion komme ich noch nicht so ganz klar. Ich poste jetzt nochmal meine aktuelle Konfiguration und schaue was passiert.
                                          @ticaki Das mit der Logausgabe ist eine gute Idee, da weiß ich aber auch noch nicht wie das geht...

                                          Anmerkung 2020-03-01 142511.png Anmerkung 2020-03-01 142534.png

                                          J dslraser 2 Replies Last reply Reply Quote 0
                                          • J
                                            Jan1 @Crazy32 last edited by

                                            @Crazy32
                                            Beim CRON hast wohl die Minuten drin und nicht nur die Wochentage, somit heißt Dein CRON jede Minute von Montag bis Freitag. Schau doch einfach was da steh und genau das macht er. 0 und 1 hatte ich ja getestet und da ist der Adapter etwas seltsam aufgebaut.
                                            Wenn die Meldung auf Telegram kommt, dass die Lampe aus ist und diese aber an bleibt, dann stimmt bei Dir was ganz anderes nicht, denn das sollte nur kommen wenn die Lampe aus ist.

                                            Die Log Meldungen bekommst mit dem Debugblock, wobei das auch nicht wirklich nötig ist, da ja ein Telegram im Fall des Trigger geschickt wird. Die Debug Blöcke kann man aber überall verteilen und sie mit nem eindeutigen Namen versehen, dann taucht genau der Name auch im Log auf und man weiß wann was passiert. Dein Blockly ist eigentlich wirklich ne sehr einfache Geschichte und deshalb wundert es mich, dass das so rum zickt.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            840
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            8
                                            43
                                            2708
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo