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/MyTelegramMenuViele 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 -
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
@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
wenn ich jetzt aus allen 5 mein Menü generieren wollte
müssten alle 5 Namen reinlet 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:
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
- 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 :
- z.b. 3x2
- 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
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
-
@Nahasapee sagte in Telegram Menü dynamisch aus Aufzählung generieren.:
man muss es einfach nur noch im ioBroker -Verzeichnis installieren mit:
npm install mytelegrammenualles 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. -
@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?
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: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?
-
@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 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.
-
@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 Logjavascript.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
-
@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.
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
Deine Auflistungen sind ja schön prall gefüllt, da freu ich mich schon auf nen test, wenn es läuft