Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. JavaScript restart, Telegram Output wird überflutet

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    209

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    7.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

JavaScript restart, Telegram Output wird überflutet

JavaScript restart, Telegram Output wird überflutet

Scheduled Pinned Locked Moved Solved JavaScript
javascript
12 Posts 4 Posters 1.5k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • H Offline
    H Offline
    homecineplexx
    wrote on last edited by homecineplexx
    #1

    Hallo
    ich hab mir über Telegram ein recht einfaches Menü aufgebaut um gewisse Sachen ohne Probleme von der Ferne zu steuern.
    Allerdings bei jedem neustart von ioBroker, JavaScript Instanz oder beim Anlegen eines neuen globalen Skripts (wird die JavaScript Instanz restartet), werden alle Skripts gestoppt und neu gestartet und dadurch erhalte ich sinnlos viele Nachricht mit 'Bitte wähle einen Button:'. Könnte ich das irgendwie umgehen?

    sendTo('telegram.0', {
            user: 'Christian',
            text: 'Bitte wähle einen Button',
            reply_markup: {
                keyboard: [
                   ['Hauptmenü'],
                   ['Bewässerung-Info'],
                   ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                   ['Vorgarten', 'Garten', 'Oben'],
                ],
                resize_keyboard: true,
                one_time_keyboard: true
            }
        });
    
    1 Reply Last reply
    0
    • H Offline
      H Offline
      homecineplexx
      wrote on last edited by
      #5

      @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

      obj.state.val

      DANKE
      der Ansatz mit dem Trigger war gut, hat mir aber nicht so super gefallen, vor allem nachdem du erwähnt hast, dass es bei Telegram eh schon quasi einen Trigger gibt.
      Habs nun so gelöst:

      on({id: "telegram.0.communicate.requestRaw", change: "ne"}, function (obj) {
          var value = JSON.parse(obj.state.val);
          
          if (value.text === 'Bewässerung') {
              sendTo('telegram.0', {
              user: 'Christian',
              text: 'Bitte wähle einen Button',
              reply_markup: {
                  keyboard: [
                     ['Hauptmenü'],
                     ['Bewässerung-Info'],
                     ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                     ['Vorgarten', 'Garten', 'Oben'],
                  ],
                  resize_keyboard: true,
                  one_time_keyboard: true
              }
          });    
          }
      });
      
      DutchmanD 1 Reply Last reply
      1
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        wrote on last edited by
        #2

        das problem hier ist, wie leider durch vielen so übernommen, das du deine action mit einem script start ausloest das ist grundlegend "not best practise" !

        Dadurch das du keinen trigger hast, startet der Inhalt des scriptes bei jedem script start.
        Also baue es bitte um zu einem trigger, also ein object erstellen und dieses Sender wen du die Nachricht schicken möchtest.

        Brauchst du ein Beispiel ?

        1 Reply Last reply
        0
        • H Offline
          H Offline
          homecineplexx
          wrote on last edited by
          #3

          @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

          Also baue es bitte um zu einem trigger,

          Danke vorerst mal für die Hilfe.
          Wenn du ein gutes hast, wäre ich natürlich nicht abgeneigt, denn ich bin mit sicherheit nicht der einzige der danach fragen wird.
          BITTESCHÖN

          DutchmanD 1 Reply Last reply
          0
          • H homecineplexx

            @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

            Also baue es bitte um zu einem trigger,

            Danke vorerst mal für die Hilfe.
            Wenn du ein gutes hast, wäre ich natürlich nicht abgeneigt, denn ich bin mit sicherheit nicht der einzige der danach fragen wird.
            BITTESCHÖN

            DutchmanD Offline
            DutchmanD Offline
            Dutchman
            Developer Most Active Administrators
            wrote on last edited by
            #4

            @homecineplexx said in JavaScript restart, Telegram Output wird überflutet:

            @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

            Also baue es bitte um zu einem trigger,

            Danke vorerst mal für die Hilfe.
            Wenn du ein gutes hast, wäre ich natürlich nicht abgeneigt, denn ich bin mit sicherheit nicht der einzige der danach fragen wird.
            BITTESCHÖN

            gutes weis ich nicht aber lass es uns probieren ok !

            also dein code senden eine message wen das script gestartet wird :

            sendTo('telegram.0', {
                    user: 'Christian',
                    text: 'Bitte wähle einen Button',
                    reply_markup: {
                        keyboard: [
                           ['Hauptmenü'],
                           ['Bewässerung-Info'],
                           ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                           ['Vorgarten', 'Garten', 'Oben'],
                        ],
                        resize_keyboard: true,
                        one_time_keyboard: true
                    }
                });
            

            jetzt erstellen wir uns ein object (ich mache es hier im script, geht auch Manuel !

            createState("mein_trigger", function () {
            });
            

            jetzt mochten ich einen event auslösen wen dieser state sich ändert :

              on({id: "javascript.0.mein_trigger"/*mein_trigger*/, change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
              });
            

            so und jetzt mal der code wo ich den trigger kombinieren mit deinem code um die Nachricht zu schicken.
            Ich :

            • erstelle erst den state
            • warte dan auf ein event (Änderung des states)
            • schicke die Nachricht
            createState("mein_trigger", function () {
            });
            
            on({id: "javascript.0.mein_trigger"/*mein_trigger*/, change: "ne"}, function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
                sendTo('telegram.0', {
                    user: 'Christian',
                    text: 'Bitte wähle einen Button',
                    reply_markup: {
                        keyboard: [
                           ['Hauptmenü'],
                           ['Bewässerung-Info'],
                           ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                           ['Vorgarten', 'Garten', 'Oben'],
                        ],
                        resize_keyboard: true,
                        one_time_keyboard: true
                    }
                });
            });
            

            so hoffe das hilft dem Verständnis, ab jetzt kann das script nämlich immer an bleiben und nur wen der state sich ändert wird der Inhalt ausgeufert. Ein restart, script start usw wird es nicht mehr auslosen !

            Tip : ich sehe das dies ein telegram menu ist, du kannst auch den state "request" von telegram umerwachten, da kommt nämlich die nachreicht rein die du zum bot schickst, und diese dan auswerten

            NegaleinN 1 Reply Last reply
            0
            • H Offline
              H Offline
              homecineplexx
              wrote on last edited by
              #5

              @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

              obj.state.val

              DANKE
              der Ansatz mit dem Trigger war gut, hat mir aber nicht so super gefallen, vor allem nachdem du erwähnt hast, dass es bei Telegram eh schon quasi einen Trigger gibt.
              Habs nun so gelöst:

              on({id: "telegram.0.communicate.requestRaw", change: "ne"}, function (obj) {
                  var value = JSON.parse(obj.state.val);
                  
                  if (value.text === 'Bewässerung') {
                      sendTo('telegram.0', {
                      user: 'Christian',
                      text: 'Bitte wähle einen Button',
                      reply_markup: {
                          keyboard: [
                             ['Hauptmenü'],
                             ['Bewässerung-Info'],
                             ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                             ['Vorgarten', 'Garten', 'Oben'],
                          ],
                          resize_keyboard: true,
                          one_time_keyboard: true
                      }
                  });    
                  }
              });
              
              DutchmanD 1 Reply Last reply
              1
              • H homecineplexx

                @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

                obj.state.val

                DANKE
                der Ansatz mit dem Trigger war gut, hat mir aber nicht so super gefallen, vor allem nachdem du erwähnt hast, dass es bei Telegram eh schon quasi einen Trigger gibt.
                Habs nun so gelöst:

                on({id: "telegram.0.communicate.requestRaw", change: "ne"}, function (obj) {
                    var value = JSON.parse(obj.state.val);
                    
                    if (value.text === 'Bewässerung') {
                        sendTo('telegram.0', {
                        user: 'Christian',
                        text: 'Bitte wähle einen Button',
                        reply_markup: {
                            keyboard: [
                               ['Hauptmenü'],
                               ['Bewässerung-Info'],
                               ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                               ['Vorgarten', 'Garten', 'Oben'],
                            ],
                            resize_keyboard: true,
                            one_time_keyboard: true
                        }
                    });    
                    }
                });
                
                DutchmanD Offline
                DutchmanD Offline
                Dutchman
                Developer Most Active Administrators
                wrote on last edited by
                #6

                @homecineplexx

                darf ich dir feedback geben ?

                Sehr gut !!!! Du hast mein "Allgemeines" Beispiel und tips darin direkt umgesetzt auf deine persönliche situation.
                Chapeau, schnell verstanden und gemacht.... alles jetzt nach wünsch ?

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  homecineplexx
                  wrote on last edited by
                  #7

                  natürlich darfst du und danke...ich arbeite ja auch schon etwas länger damit. nur oft fehlt einem einfach die idee, was es eventuell wo geben könnte.

                  also bitte.....Verbesserungen sind jederzeit gern willkommen

                  DutchmanD 1 Reply Last reply
                  0
                  • H homecineplexx

                    natürlich darfst du und danke...ich arbeite ja auch schon etwas länger damit. nur oft fehlt einem einfach die idee, was es eventuell wo geben könnte.

                    also bitte.....Verbesserungen sind jederzeit gern willkommen

                    DutchmanD Offline
                    DutchmanD Offline
                    Dutchman
                    Developer Most Active Administrators
                    wrote on last edited by
                    #8

                    @homecineplexx said in JavaScript restart, Telegram Output wird überflutet:

                    also bitte.....Verbesserungen sind jederzeit gern willkommen

                    Gibt nix zu verbessern hast alles richtig gemacht 🙂

                    1 Reply Last reply
                    0
                    • H Offline
                      H Offline
                      homecineplexx
                      wrote on last edited by
                      #9

                      hatte gerade wieder ein problem...obwohl ichs jetzt so gemacht habe, kommen die "bitte button wählen" dennoch doppelt. hab ich dann das jeweilige skript gestoppt und gestartet hat es gepaßt.
                      irgendwie kommts mir so vor wie wenn die skripte dann teilweise dennoch doppelt laufen

                      1 Reply Last reply
                      0
                      • DutchmanD Dutchman

                        @homecineplexx said in JavaScript restart, Telegram Output wird überflutet:

                        @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

                        Also baue es bitte um zu einem trigger,

                        Danke vorerst mal für die Hilfe.
                        Wenn du ein gutes hast, wäre ich natürlich nicht abgeneigt, denn ich bin mit sicherheit nicht der einzige der danach fragen wird.
                        BITTESCHÖN

                        gutes weis ich nicht aber lass es uns probieren ok !

                        also dein code senden eine message wen das script gestartet wird :

                        sendTo('telegram.0', {
                                user: 'Christian',
                                text: 'Bitte wähle einen Button',
                                reply_markup: {
                                    keyboard: [
                                       ['Hauptmenü'],
                                       ['Bewässerung-Info'],
                                       ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                                       ['Vorgarten', 'Garten', 'Oben'],
                                    ],
                                    resize_keyboard: true,
                                    one_time_keyboard: true
                                }
                            });
                        

                        jetzt erstellen wir uns ein object (ich mache es hier im script, geht auch Manuel !

                        createState("mein_trigger", function () {
                        });
                        

                        jetzt mochten ich einen event auslösen wen dieser state sich ändert :

                          on({id: "javascript.0.mein_trigger"/*mein_trigger*/, change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                          });
                        

                        so und jetzt mal der code wo ich den trigger kombinieren mit deinem code um die Nachricht zu schicken.
                        Ich :

                        • erstelle erst den state
                        • warte dan auf ein event (Änderung des states)
                        • schicke die Nachricht
                        createState("mein_trigger", function () {
                        });
                        
                        on({id: "javascript.0.mein_trigger"/*mein_trigger*/, change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            sendTo('telegram.0', {
                                user: 'Christian',
                                text: 'Bitte wähle einen Button',
                                reply_markup: {
                                    keyboard: [
                                       ['Hauptmenü'],
                                       ['Bewässerung-Info'],
                                       ['Brunnenpumpe-On', 'Brunnenpumpe-Off'],
                                       ['Vorgarten', 'Garten', 'Oben'],
                                    ],
                                    resize_keyboard: true,
                                    one_time_keyboard: true
                                }
                            });
                        });
                        

                        so hoffe das hilft dem Verständnis, ab jetzt kann das script nämlich immer an bleiben und nur wen der state sich ändert wird der Inhalt ausgeufert. Ein restart, script start usw wird es nicht mehr auslosen !

                        Tip : ich sehe das dies ein telegram menu ist, du kannst auch den state "request" von telegram umerwachten, da kommt nämlich die nachreicht rein die du zum bot schickst, und diese dan auswerten

                        NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        Global Moderator
                        wrote on last edited by
                        #10

                        @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

                        gutes weis ich nicht aber lass es uns probieren ok !

                        Hallo Dutchman!

                        Sehe ich das richtig, dass dieser Code eigentlich in jedes Script sollte, das eine ausführbare Funktion hat?

                        createState("mein_trigger", function () {
                        });
                         
                        on({id: "javascript.0.mein_trigger"/*mein_trigger*/, change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                        

                        und dies gehört dann bei jedem Script angepasst?

                        createState("mein_trigger", function () {
                        });
                        

                        mein_trigger nenn ich dann zB Pelletsofen

                        Für jedes Script also ein eigenes Objekt erstellen?

                        ° Node.js: 20.17.0 NPM: 10.8.2
                        ° Proxmox, Ubuntu 22.04.3 LTS
                        ° Fixer ---> iob fix

                        DutchmanD 1 Reply Last reply
                        0
                        • NegaleinN Negalein

                          @Dutchman said in JavaScript restart, Telegram Output wird überflutet:

                          gutes weis ich nicht aber lass es uns probieren ok !

                          Hallo Dutchman!

                          Sehe ich das richtig, dass dieser Code eigentlich in jedes Script sollte, das eine ausführbare Funktion hat?

                          createState("mein_trigger", function () {
                          });
                           
                          on({id: "javascript.0.mein_trigger"/*mein_trigger*/, change: "ne"}, function (obj) {
                              var value = obj.state.val;
                              var oldValue = obj.oldState.val;
                          

                          und dies gehört dann bei jedem Script angepasst?

                          createState("mein_trigger", function () {
                          });
                          

                          mein_trigger nenn ich dann zB Pelletsofen

                          Für jedes Script also ein eigenes Objekt erstellen?

                          DutchmanD Offline
                          DutchmanD Offline
                          Dutchman
                          Developer Most Active Administrators
                          wrote on last edited by Dutchman
                          #11

                          @Negalein said in JavaScript restart, Telegram Output wird überflutet:

                          Sehe ich das richtig, dass dieser Code eigentlich in jedes Script sollte, das eine ausführbare Funktion hat?

                          ja, also damit erstellt man sich einen state (wie gesagt geht auch Manuel) und löst das script aus wen sich der state ändert 😉

                          das hier nicht vergessen zu ändern 🙂 :

                          id: "javascript.0.mein_trigger"/*mein_trigger*/
                          

                          @Negalein said in JavaScript restart, Telegram Output wird überflutet:

                          Für jedes Script also ein eigenes Objekt erstellen?

                          jup, Vorteil du kannst es von alles aus auslösen (script, Alexa, yahka, was du möchtest)

                          1 Reply Last reply
                          1
                          • F Offline
                            F Offline
                            Freaknet
                            wrote on last edited by
                            #12

                            Hey,
                            hab das selbe Problem, das mich Telegram mit Meldungen überflutet 😞

                            Bin dadurch auf diesen Tread gestoßen und hab versucht meine Scripte damit anzupassen, leider ohne Erfolgt.

                            Ich habe die Scripte wie folgt angepasst (Beispiel):

                            createState("Hue Lampen", function () {
                            });

                            on({id: "javascript.0.Hue Lampen", change: "ne"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            sendTo('telegram.0', {
                            text: 'Bitte Hue Lampe wählen',
                            reply_markup: {
                            keyboard: [
                            ['Hue Küche An', 'Hue Küche Aus'],
                            ['Hue Esszimmer An', 'Hue Esszimmer Aus'],
                            ['Hue Wohnzimmer An', 'Hue Wohnzimmer Aus'],
                            ['Hue Haustür An', 'Hue Haustür Aus'],
                            ['Hue Erker An', 'Hue Erker Aus'],
                            ['Stehlampe An', 'Stehlampe Aus'],
                            ['Übersicht', ''],
                            ],
                            resize_keyboard: true,
                            one_time_keyboard: false
                            }
                            });
                            });

                            Leider wird nur einmal Hue Lampen vom Telegram akzeptiert und komme ins Menü, danach komme ich nicht mehr in das Sub-Menü, sobald ich auf Übersicht wieder gewechselt bin.

                            Kann es sein, dass ich in text2command etwas anderes einstellen muss damit der State von Hue Lampe bei jedem drücken auf den Button wechselt?
                            Hab aktuell als Objekt-ID den erzeugten State von Hue Lampe mit "Schreibe Text in Zustand" ausgewählt. Vorher hatte ich das Javascript von der Lampe drin mit "Schalte irgendwas ein oder aus".

                            Vielleicht kann mir jemand sagen was ich noch ändern muss ausser dem Script.
                            Danke schonmal im Voraus

                            Grüße
                            Freaknet

                            1 Reply Last reply
                            0
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            100

                            Online

                            32.4k

                            Users

                            81.3k

                            Topics

                            1.3m

                            Posts
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            ioBroker Community 2014-2025
                            logo
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Recent
                            • Tags
                            • Unread 0
                            • Categories
                            • Unreplied
                            • Popular
                            • GitHub
                            • Docu
                            • Hilfe