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.
    • 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
                        • dslraser
                          dslraser Forum Testing Most Active @Crazy32 last edited by dslraser

                          @Crazy32
                          bei den Wochentagen = 0/1/2/3/4/5
                          könntest Du das auch auf eine Abfrage reduzieren.
                          Wochentag < 6
                          (falls Wochentag als Nummer kleiner als 6)

                          Crazy32 1 Reply Last reply Reply Quote 1
                          • Crazy32
                            Crazy32 @dslraser last edited by Crazy32

                            @dslraser sagte in Doppelte Benachrichtigung bei Telegram:

                            @Crazy32
                            bei den Wochentagen = 0/1/2/3/4/5
                            könntest Du das auch auf eine Abfrage reduzieren.
                            Wochentag < 6
                            (falls Wochentag als Nummer kleiner als 6)

                            Ich habe es auf <=5 gesetzt, danke. Ist ja doch etwas übersichtlicher.

                            @Jan1 sagte in Doppelte Benachrichtigung bei Telegram:

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

                            Heute Morgen hatte ich wieder meine zwei Meldungen in Telegram, dass die Lampe ausgeschaltet wurde, die erste um 07.12 Uhr und die zweite um 07.16 Uhr. In den Ereignissen der Fritzbox ist um 07.12 Uhr die Meldung "Anmeldung an der FRITZ!Box Benutzeroberfläche von IP-Adresse 192.168.178.11". Die IP ist von meinem Raspi.

                            Gerade gesehen, im ioBroker Log ist eine Warnung von 07.12 Uhr zu sehen. Das würde mit der ersten Schaltzeit passen. Ich kann das aber nicht deuten.

                            Anmerkung 2020-03-02 094841.png

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

                              @Crazy32
                              lol... 😁

                              Das bedeutet, das der Javascript-Adapter was dagegen hat das du die Werte im Skript mit 0 und 1 steuert. Hat aber keine Auswirkungen außer das es im Log mies aussieht.

                              Kann vielleicht jemand mit dieser Hardware ein Github Issue im entsprechenden Adapter anlegen, dass da true und false und nicht 0 und 1 gesetzt wird?

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

                                @ticaki
                                Das hatte ich ja auch schon vermutete, dass der Adapter an der Stelle nicht sauber programmiert ist, weil true und false funktioniert und der Adapter schaltet das auf 1 und 0 um.

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

                                  @ticaki @Jan1
                                  Und das heißt jetzt für meine doppelten Benachrichtigungen?

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

                                    @Crazy32
                                    Erst mal gar nichts und Du schon mal wieder auf true und false umstellen und kannst, da 1 und 0 Fehler bringt.

                                    Für die doppelten Telegramme hab ich ja schon ein Blockly gepostet und ich hab zu der Variante hier noch nichts gelesen.

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

                                      @Jan1 sagte in Doppelte Benachrichtigung bei Telegram:

                                      @Crazy32
                                      Für die doppelten Telegramme hab ich ja schon ein Blockly gepostet und ich hab zu der Variante hier noch nichts gelesen.

                                      Stimmt. Ich hatte es getestet und mein Script wieder aktiviert weil bei Deinem Script die Meldung falsch war. Es hat mir "Lampe an" gemeldet, obwohl sie aus war. Ich habe aber anscheinend die Rückmeldung vergessen, sorry.

                                      Ich glaube aber das ich die Ursache gefunden habe. Eben habe ich in ioBroker unter "State" bei der DECT 200 Den Wert von Hand geändert. Beim Aufrufen des Objektes steht bei State "0". Wenn ich auf die "0" klicke geht da ein kleines Kästchen auf, in dem ein Haken ist. Ich nehme den Haken raus und bestätige. Daraufhin steht bei State nicht mehr die 0, sondern "false". Nach 2 Minuten ändert sich der Wert wieder von "false" auf "0" und ich bekomme die nächste Meldung.
                                      Also scheint das doch was mit der Änderung von 0/false und 1/true zu tun zu haben, oder?

                                      Und um noch mal auf Dein Script zurückzukommen. Wenn ich das richtig verstehe schickt Dein Script eine Meldung raus, sobalt sich der Status ändert. Der DECT Adapter ändert 2x den Status, einmal beim Schalten und 2 Minuten später nochmal, allerdings 2x auf Aus oder An, je nachdem. Dein Script sendet immer abwechselnd die Meldung An oder Aus, was normalerweise ja auch so ist. Daher bekomme ich bei Deinem Script doppelte, falsche Meldungen und bei meinem doppelte, aber immerhin richtige Meldungen über den Zustand der Lampe.

                                      Puh, was für ein Durcheinander. Ich hoffe, dass es jemand versteht 😄

                                      T J 2 Replies Last reply Reply Quote 0
                                      • T
                                        ticaki Developer @Crazy32 last edited by

                                        @Crazy32

                                        die Sache mit 0/false 1/true mit "geändert" ist undefiniert. kann sich richtig verhalten oder auch net. Ich würds abchecken, dann ist man sich sicher.

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

                                          @Crazy32
                                          Das mit 0 und 1 ist mittlerweile bekannt und wohl ein Fehler im Adapter.
                                          Mein Blockly ist eigentlich Deins gewesen, nur mit den Optimierungen drin, folglich muss das im schlechtesten Fall das Selbe machen wie Deins😉

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            BlizzardT last edited by

                                            Hallo,
                                            der letzte Beitrag ist zwar schon etwas älter, aber ich glaube mein Problem passt hier ganz gut dazu:
                                            Ich habe mir ein Skript gebaut, das mich benachrichtigen soll, wenn in einem Raum die Luftfeuchtigkeit über 60% steigt (Notwendigkeit zum Lüften), damit ich dann eine Meldung per Telegram bekomme. Das funktioniert grundsätzlich auch super, leider bekomme ich die Meldungen jetzt immer mehrfach. Gibt es eine Möglichkeit hier eine Art Sperre einzufügen, die nach dem Senden der Nachricht erst wieder sendet, wenn die Luftfeuchtigkeit wieder über die 60% steigt und nicht immer wieder, solange die Luftfeuchtigkeit noch über 60% liegt? Anbei ein Bild meines Skriptes für das Bad (Habe hier schon eine Verzögerung eingebaut, da beim Duschen ja die Luftfeuchtigkeit auf jeden Fall über die 60% steigt):

                                            d7df1ada-8a99-4a30-ac2b-e97d5cb0338a-image.png

                                            Für die anderen Räume ist das Skript identisch aufgebaut, jedoch ohne die Verzögerung.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            866
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            8
                                            43
                                            2706
                                            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