Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Telegram schickt Nachrichten doppelt oder noch öfter

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    [Gelöst] Telegram schickt Nachrichten doppelt oder noch öfter

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

      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

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

        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 🙂

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

          @Mihaeru:

          Vielleicht kann man ja auch val: 0 und change: "ne" kombinieren. `
          Ja, die Triggerbedingung sollte um

          , change: 'ne'
          

          ergänzt werden.

          1 Reply Last reply Reply Quote 0
          • kmxak
            kmxak Most Active last edited by

            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

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

              @Mihaeru:

              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.

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

                @Paulchen67:

                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.

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

                  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.');
                  });
                  
                  
                  1 Reply Last reply Reply Quote 0
                  • Paulchen67
                    Paulchen67 last edited by

                    Danke für eure Hilfe.

                    die Erweiterung mit

                    , change: 'ne'
                    

                    hat es gebracht.

                    Wie stelle ich diesen Thread jetzt auf gelöst?

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

                      @Paulchen67:

                      Wie stelle ich diesen Thread jetzt auf gelöst? `
                      Im Betreff des ersten Beitrags.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      978
                      Online

                      32.1k
                      Users

                      80.7k
                      Topics

                      1.3m
                      Posts

                      4
                      9
                      1240
                      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