Skip to content
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. JavaScript restart, Telegram Output wird überflutet

NEWS

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

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

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.1k

JavaScript restart, Telegram Output wird überflutet

Geplant Angeheftet Gesperrt Verschoben Gelöst JavaScript
javascript
12 Beiträge 4 Kommentatoren 1.6k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • DutchmanD Offline
    DutchmanD Offline
    Dutchman
    Developer Most Active Administrators
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • H Offline
      H Offline
      homecineplexx
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      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
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • H Offline
          H Offline
          homecineplexx
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          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
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • H Offline
              H Offline
              homecineplexx
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              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
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • H Offline
                  H Offline
                  homecineplexx
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  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
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    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
                      schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                      1
                      • F Offline
                        F Offline
                        Freaknet
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        720

                        Online

                        32.4k

                        Benutzer

                        81.4k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe