NEWS

Telegram Menü dynamisch aus Aufzählung generieren.


  • 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


  • 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

  • Forum Testing Most Active

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


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


  • 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 🙂


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

    Viele Grüße

    addEnumsAndTest.gif

  • Developer

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


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


  • @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?


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


  • @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
        }
    });
    

  • @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 ?


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


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

  • Most Active

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


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


  • @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?? 🤓


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


  • @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 🙂

Suggested Topics

2.4k
Online

35.3k
Users

41.2k
Topics

567.1k
Posts