Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Telegram Menü dynamisch aus Aufzählung generieren.

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Telegram Menü dynamisch aus Aufzählung generieren.

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

      Hi,
      ich habe eine kleines Script gebastelt welches mir ein Menü für Telegram baut hierfür werden die enums(Aufzählungen) in IOBroker verwendet.
      In Telegram kann ich dann im Menü navigieren und bestimmt Funktionen ausführen tiggern.
      Vielleicht kann es ja noch jemand gebrauchen...

      Es muss der Telegramadapter installiert sein und die Aufzählungen entsprechend konfiguriert.
      Zur Zeit gehen nur boolesche Schalter. Das Skript liegt in der index.js Datei diese müsst ihr einfach nur in euren IOBroker einfügen(copy & paste) und die Zeile 284 anpassen in der die Enums ausgewählt werden welche ihr entsprechend verwendet wollt.

      Ich möchte anmerken das ich IOBroker noch nicht so lange verwende und ich mich noch zurecht finden muss
      genauso beherrsche ich kein JavaScript hab es nur für dieses Projekt ein wenig angeeignet, Verbesserungsvorschläge nehme ich gerne an da ich vermute , dass man so einige Sachen in JavaScript besser umsetzen kann 😉
      Ich hatte auch versucht mir ein npm paket zu erstellen und die eigentlichen Klassen in unterschiedliche Dateien zu separieren, bin dann aber an der
      Integration beim IoBroker gescheitert und hab dann alles in einer Datei gelassen. Was mir nicht unbedingt gefällt , vielleicht könnte mir dabei jemand helfen?
      oder müsste man daraus ein Adapter basteln?
      https://github.com/Nahasapeemapetilon/MyTelegramMenu

      Viele Grüße

      dslraser N 2 Replies Last reply Reply Quote 1
      • N
        Nahasapee last edited by

        Hi ,
        ich hab mal kleines Update eingeschoben,
        das Skript überarbeitet und versucht in ES6 umzugestalten.

        Desweiteren ist mir gelungen ein npm package zu erstellen
        mit der die Handhabung des Skriptes einfach sein sollte.

        man muss es einfach nur noch im ioBroker -Verzeichnis installieren mit:

        npm install mytelegrammenu
        

        alles weitere steht auf github.

        Außerdem werden jetzt unterschiedliche Telegram User vom Menü unterstützt.
        Verbesserungsvorschläge sind herzlich Willkommen !! 😉
        Viele Grüße

        AlCalzone 1 Reply Last reply Reply Quote 0
        • dslraser
          dslraser Forum Testing Most Active @Nahasapee last edited by

          @Nahasapee

          Schöne Idee.
          Das mit dem Script habe ich noch nicht so ganz verstanden... Was muss hier wie in die letzte Zeile ?
          Ein "echtes" Beispiel wäre schön.

          let MyTelegramMenu = require('mytelegrammenu');
          let myEnumList =   ['functions','rooms'];
          let telegramMenu = new MyTelegramMenu(this,myEnumList);
          
          

          Installiert habe ich noch nichts, nur gelesen bisher...
          Gestartet wird mit menue ?
          Ich frage deshalb, weil ich ein recht umfangreiches und individuelles Telegram Menü habe, mit dem ich fast alles steuern kann und auch Zustände und Rückmeldungen bekomme.
          Mein Menü startet mit Menü, also mit ü, das dürfte sich dann ja nicht in die Quere kommen, oder ?

          N 1 Reply Last reply Reply Quote 0
          • N
            Nahasapee @dslraser last edited by

            @dslraser
            Hi, danke 🙂

            @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

            Gestartet wird mit menue ?

            mein Menü tiggert mit:

            /menue 
            

            3eb29ac9-d310-468f-bd94-53cb51b0dfce-image.png

            @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

            Das mit dem Script habe ich noch nicht so ganz verstanden... Was muss hier wie in die letzte Zeile ?
            Ein "echtes" Beispiel wäre schön.

            Das ist mein "echtes" Beispiel, genauso habe ich es gerade bei mir im Broker, du müsstest lediglich die Liste in der zweiten Zeile anpassen, wenn das Menü aus einer anderen Aufzählung generiert werden soll.

            Zum besseren Verständnis bei mir gibt es zur Zeit 5 Aufzählungslisten:

            • Funktion
            • Erdgeschoss
            • Obergeschoss
            • Customs
            • TV
              75d4bbc8-b937-4e7a-8a35-91bb0c560bf0-image.png

            wenn ich jetzt aus allen 5 mein Menü generieren wollte
            müssten alle 5 Namen rein

            let myEnumList =   ['functions','rooms','obergeschoss','customs'];
            

            Die Namen die in die Liste müssen, findet man unter Objekte im ioBroker, unter Aufzählung zeigt er nur die Übersetzung an:

            b749c16d-6ee6-475a-920b-be0a2bcf74ab-image.png

            Alle SubMenüs werden dann aus den entsprechenden Unterpositionen generiert.

            @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

            Ich frage deshalb, weil ich ein recht umfangreiches und individuelles Telegram Menü habe, mit dem ich fast alles steuern kann und auch Zustände und Rückmeldungen bekomme.

            Rückmeldungen gibt mein Menü leider noch nicht, es setzt nur "stumpf" die Taster.
            Einen Rückmeldemodus werde ich aber bei Gelegenheit ergänzen, da ich gern meine Fensterkontakte abfragen möchte.

            @dslraser sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

            Mein Menü startet mit Menü, also mit ü, das dürfte sich dann ja nicht in die Quere kommen, oder ?

            ich glaub jetzt zwar nicht, aber falls du es testen solltest vielleicht lieber doch das andere Script von deinen Menü temporär deaktivieren.
            Viele Grüße

            1 Reply Last reply Reply Quote 0
            • N
              Nahasapee last edited by

              Hi,
              ich habe mal ein kleines Update eingespielt.

              • paar kleine Fehler wurden behoben
              • die untere Navigationsleiste hat neue Icons bekommen
                e282ffb9-53aa-455d-b7e1-b281dd1fbb38-image.png
              • Konfigurationsmöglichkeiten hinzugefügt
                • Sprache(DE,EN)
                • welche Auswahllisten verwendet werden sollen
                • welche Telegraminstanz im IoBroker verwendet werden soll
                • soll das Menü über Telegramm Rückmeldung geben, ob ein State geschaltet wurde
                • desweiteren sind die Anzahl an Köpfe in Spalte/Zeile steuerbar
                • z.b. 2x3 : 5c286e19-24e8-43cb-aba6-736fc06062cb-image.png
                • z.b. 3x2 00795a06-b2d4-4683-9403-6b6a7fa4d503-image.png
              • boolesche States werden unterstützt (Switch und Buttons)
              • Nummerische States können gesteuert werden z.B. Rollopositionen
              • falls states schreibgeschützt sind, erfolgt eine Ausgabe des momentanen Wertes

              Hier mal eine kleine Animation vom Menü und Navigation

              • iobrokerTelegramMenu2.gif

              Das wars erst mal Viele Grüße 🙂

              1 Reply Last reply Reply Quote 1
              • N
                Nahasapee last edited by

                Hi ,
                hier noch mal kleines HowTo Video, wie man neue Räume ins Menü einfügt.

                Viele Grüße

                addEnumsAndTest.gif

                1 Reply Last reply Reply Quote 0
                • AlCalzone
                  AlCalzone Developer @Nahasapee last edited by

                  @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                  man muss es einfach nur noch im ioBroker -Verzeichnis installieren mit:
                  npm install mytelegrammenu

                  alles weitere steht auf github.

                  Besser ist es, das Paket stattdessen in den Einstellungen des Skript-Adapters als zusätzliches Modul zu vermerken. Damit geht man sicher, dass es bei Upgrades etc. nicht verloren geht und auch nach Restore von Backups immer wieder installiert wird.

                  N 1 Reply Last reply Reply Quote 0
                  • N
                    Nahasapee @AlCalzone last edited by

                    @AlCalzone vielen Dank für den Hinweis, ich hab es angepasst.

                    Ich hab kleines Update eingeschoben man kann nun
                    einen Report erstellen über die momentanen Zustände der gesamten Schalter im Menüpunkt.

                    createReport2.gif

                    BBTown 1 Reply Last reply Reply Quote 0
                    • BBTown
                      BBTown @Nahasapee last edited by

                      @Nahasapee
                      erst einmal vielen Dank für das Teilen deines Scriptes und vor allem für deine sehr, sehr anschauliche Beschreibung.

                      Allerdings, obgleich ich mich an Deine Anleitung gehalten habe scheint irgendwo ein Schritt zu fehlen?!

                      Wenn ich in telegram "/menu" eingebe, dann erhalte ich anstelle des erwarteten Menus die Meldung:
                      "Ich verstehe "#menu" nicht"

                      Anbei mein Script

                      const MyTelegramMenu = require('mytelegrammenu');                         
                      const options = {
                                      'enumList': ['rooms','functions'],                                  
                                      'locale':'de',
                                      'telegramInstance': 'telegram.0',
                                      'feedbackToTelegram': true,
                                      'MenuRows': 3,
                                      'MenuCols': 2
                                       }
                      const telegramMenu = new MyTelegramMenu(this,options);
                      

                      Wo liegt mein Fehler?

                      N FredF 2 Replies Last reply Reply Quote 0
                      • N
                        Nahasapee @BBTown last edited by

                        @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                        "Ich verstehe "#menu" nicht"

                        Hi, BBTown
                        also das kommt nicht von meinem Skript, wenn da was reinkommt was es nicht versteht
                        ignoriert es das normalerweise.
                        Vermutlich Anwortet nur irgendein anderes Skript auf den Befehl (vielleicht text2command) oder sowas
                        und klappt so das Menü wieder ein?

                        Ist es eventuell unten da?

                        379afd38-7fe0-4c25-9648-9fdac929b53a-image.png

                        Das Einrichten vom Bot und den Telegramadapter hast du aber hinbekommen?(botfather ect.)
                        ->https://nodei.co/npm/iobroker.telegram/

                        PS. was steht im log?

                        Viele Grüße

                        BBTown 1 Reply Last reply Reply Quote 0
                        • BBTown
                          BBTown @Nahasapee last edited by BBTown

                          @Nahasapee
                          Ja, einen Bot habe ich und ich habe auch bereits mit eigenen Menus und Buttons herumgespielt.

                          Kann es sein, dass der Punkt bzw. ein Script fehlt um das ganze überhaupt in meinen Bot zu schicken?
                          Wo wird denn z.B. definiert, dass der Aufruf mit "/menu" erfolgt und nicht bspw. mit "Enums" oder mit "BBTown"?

                          [Nachtrag]
                          braucht es nicht noch ggf. etwas in diese Richtung?

                          sendTo('telegram.0', {
                              text:   'Press button',
                              reply_markup: {
                                  keyboard: [
                                      ['Line 1, Button 1', 'Line 1, Button 2'],
                                      ['Line 2, Button 3', 'Line 2, Button 4']
                                  ],
                                  resize_keyboard:   true,
                                  one_time_keyboard: true
                              }
                          });
                          
                          N 2 Replies Last reply Reply Quote 0
                          • N
                            Nahasapee @BBTown last edited by

                            @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                            Wo wird denn z.B. definiert, dass der Aufruf mit "/menu" erfolgt

                            das macht das Package im "Hintergrund" 😉
                            wenn du es genau wissen willst hier:

                            https://github.com/Nahasapeemapetilon/MyTelegramMenu/blob/dbf3aa854234b7236949942976bae0ec7d65e01b/lib/mytelegrammenu.js#L35

                            ist das npm package korrekt installiert und was sagt das log wenn du das Script ausführst ?

                            BBTown 1 Reply Last reply Reply Quote 0
                            • BBTown
                              BBTown @Nahasapee last edited by

                              @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                              ist das npm package korrekt installiert

                              meinst Du das hier?
                              8ba76e4d-fd3b-4d6f-bc9f-f8b995dc76ff-grafik.png

                              N 1 Reply Last reply Reply Quote 0
                              • N
                                Nahasapee @BBTown last edited by

                                @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                braucht es nicht noch ggf. etwas in diese Richtung?

                                nein macht alles das Skript im Hintergrund

                                BBTown 1 Reply Last reply Reply Quote 0
                                • FredF
                                  FredF Most Active Forum Testing @BBTown last edited by

                                  @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                  "Ich verstehe "#menu" nicht"

                                  Ich verhindere das indem ich im text2command den namen angebe.
                                  Tanken z.B.
                                  4254d05c-6cf8-49e3-80b7-d6e62c27a075-grafik.png

                                  BBTown 1 Reply Last reply Reply Quote 0
                                  • N
                                    Nahasapee @BBTown last edited by

                                    @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                    meinst Du das hier?

                                    ja,

                                    ich hab es aber bei mir manuell installiert und nicht geprüft, ob das mit der automatischen installation klappt...test ich gleich mal

                                    text2command hab ich bei mir leider auch nicht laufen und kenne mich da jetzt nicht sonderlich aus.

                                    aber gucke ich auch gleich noch mal rein.

                                    nichtsdestotrotz wäre mal nen log ganz gut was er bei dir sagt
                                    😉

                                    BBTown 1 Reply Last reply Reply Quote 0
                                    • BBTown
                                      BBTown @Nahasapee last edited by BBTown

                                      @Nahasapee
                                      so, ich bin einen halben Schritt weiter.
                                      Ich Depp habe die ganze Zeit "/menu" und nicht "/menue" getippt.

                                      Nun bekomme ich die Rückmeldung: "Bitte wählen:"
                                      und habe folgende Fehler im Log

                                      
                                      javascript.0	2019-07-20 20:58:46.540	warn	Object "enum.functions" does not exist
                                      javascript.0	2019-07-20 20:58:46.540	warn	Object "enum.rooms" does not exist
                                      javascript.0	2019-07-20 20:58:14.007	warn	Object "enum.functions" does not exist
                                      javascript.0	2019-07-20 20:58:14.007	warn	Object "enum.rooms" does not exist
                                      javascript.0	2019-07-20 20:57:26.317	warn	Object "enum.functions" does not exist
                                      javascript.0	2019-07-20 20:57:26.317	warn	Object "enum.rooms" does not exist
                                      javascript.0	2019-07-20 20:57:03.402	warn	Object "enum.functions" does not exist
                                      javascript.0	2019-07-20 20:57:03.401	warn	Object "enum.rooms" does not exist
                                      javascript.0	2019-07-20 20:55:37.221	warn	Object "enum.functions" does not exist
                                      javascript.0	2019-07-20 20:55:37.221	warn	Object "enum.rooms" does not exist
                                      

                                      026bc98e-95d1-4195-aa9e-1ef8981a13b8-grafik.png

                                      2745ff38-70b5-4087-abee-fce318fba742-grafik.png

                                      1 Reply Last reply Reply Quote 0
                                      • BBTown
                                        BBTown @FredF last edited by

                                        @FredF sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                        @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                        "Ich verstehe "#menu" nicht"

                                        Ich verhindere das indem ich im text2command den namen angebe.
                                        Tanken z.B.
                                        4254d05c-6cf8-49e3-80b7-d6e62c27a075-grafik.png

                                        tztztz ... soll man denn auf "scriptEnabled" verweisen?? 🤓

                                        1 Reply Last reply Reply Quote 0
                                        • BBTown
                                          BBTown @Nahasapee last edited by

                                          @Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                          ich hab es aber bei mir manuell installiert

                                          falls Du das hier meinst

                                          npm install mytelegrammenu
                                          

                                          das habe ich auch durchgeführt

                                          1 Reply Last reply Reply Quote 0
                                          • N
                                            Nahasapee last edited by Nahasapee

                                            @BBTown sagte in Telegram Menü dynamisch aus Aufzählung generieren.:

                                            Ich Depp habe die ganze Zeit "/menu" und nicht "/menue" getippt.

                                            das sollte ich vielleicht mal ändern zu /menü

                                            starte mal deine Javascript instanz neu, bisschen merkwürdig,dass er deine Auflistung nicht kennt
                                            f2895aae-c8a4-486f-b474-2dbee8a14344-image.png

                                            Deine Auflistungen sind ja schön prall gefüllt, da freu ich mich schon auf nen test, wenn es läuft 🙂

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            989
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            7
                                            48
                                            4073
                                            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