NEWS
Test Adapter telegram-menu v.1.6.x
-
@fritzke316 hi danke fĂŒr das Feedback.
Das umbenennen setzte ich mit auf meine todo Liste.
Den anderen Punkt schaue ich mir auch noch mal an.Evtl. nehme ich die User komplett raus, und auch den Global User, und man erstellt nur noch Gruppen, in denen man wie beim Global User nur noch die einzelnen User hinzufĂŒgt
@michael-roling Ja genau etwa so hÀtte ich mir das auch gedacht, dann ist man immer flexibel und kann die User einfach von einer Gruppe in die andere schieben wie man grad lust hat :)
-
Ich habe mal wieder ein wenig am Adapter gearbeitet.
Ab jetzt kann man nur noch Gruppen erstellen, in der man zwingenderweise User eintragen muss.
Wenn ihr die neue Version installiert fĂŒllt dieses bitte direkt aus.- Man kann diese Gruppen umbenennen. Deren Name hat aber fĂŒr den Ablauf keine Bedeutung. Ist nur fĂŒr die Ăbersicht.
Als nÀchstes wÀre der Plan einzelne Daten aus anderen Gruppen importieren zu können.
Ich bin wie immer auf euer Feedback gespannt.
-
Ich habe mal wieder ein wenig am Adapter gearbeitet.
Ab jetzt kann man nur noch Gruppen erstellen, in der man zwingenderweise User eintragen muss.
Wenn ihr die neue Version installiert fĂŒllt dieses bitte direkt aus.- Man kann diese Gruppen umbenennen. Deren Name hat aber fĂŒr den Ablauf keine Bedeutung. Ist nur fĂŒr die Ăbersicht.
Als nÀchstes wÀre der Plan einzelne Daten aus anderen Gruppen importieren zu können.
Ich bin wie immer auf euer Feedback gespannt.
@michael-roling Hi, hab den Adapter auch mal getestet. Ich finde es gut, einen Adapter fĂŒr ein Telegram-MenĂŒ bereitzustellen, da doch viele Script-Lösungen unterwegs sind, welche aber fĂŒr einen normalen User kaum handlebar sind.
Ich finde die Konfiguration etwas umstĂ€ndlich. Evtl. könntest mit jsonConfig eine ĂŒbersichtlichere UI erstellen?
Des Weiteren könntest dir mal die callback-Funktion von Telegram anschauen. Dadurch lassen sich m.M. gute UntermenĂŒs erstellen, wie auch einen ZurĂŒck-Button, mit welchem man immer in das vorherige MenĂŒ gelangt.
Ich habe mal mit JS etwas herumgespielt. Vielleicht bringt dich das auf die eine oder andere Idee?!Eine weiterer Vorschlag wĂ€re, mit einer Art GerĂ€testeuerung zu arbeiten. Bedeutet es gibt Standard-Texte wie "Ein", "Aus", ... welche sich auf das zuvor ausgewĂ€hlte GerĂ€t und deren Datenpunkte beziehen. Beispiel: Ich wĂ€hle "Zisterne" im MenĂŒ und bekomme ein UntermenĂŒ mit "Ein", Aus" / Ich wĂ€hle Lampe1 und bekomme ein UntermenĂŒ mit "Ein", "Aus", usw.
Hierzu muss man sich das GerĂ€t (in dem Fall Zisterne) merken bis ein anderes GerĂ€t ĂŒber ein MenĂŒ gewĂ€hlt wird.
Callback-Funktion:
const adapterName = 'telegram.0'; on({ id: `${adapterName}.communicate.request`, change: 'any' }, (obj) => { const val = obj.state.val; const username = val.substring(1, val.indexOf("]")); const text = val.substring(val.indexOf("]") + 1).trim(); const chatId = getState(`${adapterName}.communicate.requestChatId`).val; if (text === '/menu') { const keyboard = { inline_keyboard: [ [ { text: 'First Level 1 Option', callback_data: 'menu:firstLevel1' }, { text: 'First Level 2 Option', callback_data: 'menu:firstLevel2' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'Please select an option:', reply_markup: JSON.stringify(keyboard) }); } else if (text.startsWith('menu:')) { const callbackData = text.split(':')[1]; if (callbackData === 'firstLevel1') { const keyboard = { inline_keyboard: [ [ { text: 'Second Level 1 Option', callback_data: 'submenu:firstLevel1:secondLevel1' }, { text: 'Second Level 2 Option', callback_data: 'submenu:firstLevel1:secondLevel2' } ], [ { text: 'Back to Main Menu', callback_data: 'menu:back' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected First Level 1. Please select a sub-option:', reply_markup: JSON.stringify(keyboard) }); } else if (callbackData === 'firstLevel2') { sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected First Level 2.' }); } else if (callbackData.startsWith('submenu:firstLevel1:')) { const subCallbackData = callbackData.split(':')[2]; if (subCallbackData === 'secondLevel1') { const keyboard = { inline_keyboard: [ [ { text: 'Back to First Level 1', callback_data: 'submenu:firstLevel1:back' }, { text: 'Back to Main Menu', callback_data: 'menu:back' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected Second Level 1. Please select an option:', reply_markup: JSON.stringify(keyboard) }); } else if (subCallbackData === 'secondLevel2') { sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected Second Level 2.' }); } } else if (callbackData === 'back') { const keyboard = { inline_keyboard: [ [ { text: 'First Level 1 Option', callback_data: 'menu:firstLevel1' }, { text: 'First Level 2 Option', callback_data: 'menu:firstLevel2' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'Please select an option:', reply_markup: JSON.stringify(keyboard) }); } } }); -
@michael-roling Hi, hab den Adapter auch mal getestet. Ich finde es gut, einen Adapter fĂŒr ein Telegram-MenĂŒ bereitzustellen, da doch viele Script-Lösungen unterwegs sind, welche aber fĂŒr einen normalen User kaum handlebar sind.
Ich finde die Konfiguration etwas umstĂ€ndlich. Evtl. könntest mit jsonConfig eine ĂŒbersichtlichere UI erstellen?
Des Weiteren könntest dir mal die callback-Funktion von Telegram anschauen. Dadurch lassen sich m.M. gute UntermenĂŒs erstellen, wie auch einen ZurĂŒck-Button, mit welchem man immer in das vorherige MenĂŒ gelangt.
Ich habe mal mit JS etwas herumgespielt. Vielleicht bringt dich das auf die eine oder andere Idee?!Eine weiterer Vorschlag wĂ€re, mit einer Art GerĂ€testeuerung zu arbeiten. Bedeutet es gibt Standard-Texte wie "Ein", "Aus", ... welche sich auf das zuvor ausgewĂ€hlte GerĂ€t und deren Datenpunkte beziehen. Beispiel: Ich wĂ€hle "Zisterne" im MenĂŒ und bekomme ein UntermenĂŒ mit "Ein", Aus" / Ich wĂ€hle Lampe1 und bekomme ein UntermenĂŒ mit "Ein", "Aus", usw.
Hierzu muss man sich das GerĂ€t (in dem Fall Zisterne) merken bis ein anderes GerĂ€t ĂŒber ein MenĂŒ gewĂ€hlt wird.
Callback-Funktion:
const adapterName = 'telegram.0'; on({ id: `${adapterName}.communicate.request`, change: 'any' }, (obj) => { const val = obj.state.val; const username = val.substring(1, val.indexOf("]")); const text = val.substring(val.indexOf("]") + 1).trim(); const chatId = getState(`${adapterName}.communicate.requestChatId`).val; if (text === '/menu') { const keyboard = { inline_keyboard: [ [ { text: 'First Level 1 Option', callback_data: 'menu:firstLevel1' }, { text: 'First Level 2 Option', callback_data: 'menu:firstLevel2' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'Please select an option:', reply_markup: JSON.stringify(keyboard) }); } else if (text.startsWith('menu:')) { const callbackData = text.split(':')[1]; if (callbackData === 'firstLevel1') { const keyboard = { inline_keyboard: [ [ { text: 'Second Level 1 Option', callback_data: 'submenu:firstLevel1:secondLevel1' }, { text: 'Second Level 2 Option', callback_data: 'submenu:firstLevel1:secondLevel2' } ], [ { text: 'Back to Main Menu', callback_data: 'menu:back' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected First Level 1. Please select a sub-option:', reply_markup: JSON.stringify(keyboard) }); } else if (callbackData === 'firstLevel2') { sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected First Level 2.' }); } else if (callbackData.startsWith('submenu:firstLevel1:')) { const subCallbackData = callbackData.split(':')[2]; if (subCallbackData === 'secondLevel1') { const keyboard = { inline_keyboard: [ [ { text: 'Back to First Level 1', callback_data: 'submenu:firstLevel1:back' }, { text: 'Back to Main Menu', callback_data: 'menu:back' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected Second Level 1. Please select an option:', reply_markup: JSON.stringify(keyboard) }); } else if (subCallbackData === 'secondLevel2') { sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'You selected Second Level 2.' }); } } else if (callbackData === 'back') { const keyboard = { inline_keyboard: [ [ { text: 'First Level 1 Option', callback_data: 'menu:firstLevel1' }, { text: 'First Level 2 Option', callback_data: 'menu:firstLevel2' } ] ] }; sendTo(`${adapterName}`, 'send', { chatId: chatId, text: 'Please select an option:', reply_markup: JSON.stringify(keyboard) }); } } });@schmakus Hi vielen Dank fĂŒr dein Feedback.
Die Konfiguration möchte ich nicht mit jsonConfig machen, habe das zwar in meinen anderen Adapter damit gemacht. Ich denke so bin ich doch um einiges flexibler.
Wegen der Ăbersicht, da hast du sicherlich Recht, es ist immer Luft nach oben. Was stört dich denn am meisten? Bisher habe ich erstmal die PrioritĂ€t aufs funktionelle gelegt.
Mit den Menus werde ich mir noch mal anschauen, genau wie die GerÀtesteuerung. Ist sicherlich eine coole Idee. -
@schmakus Hi vielen Dank fĂŒr dein Feedback.
Die Konfiguration möchte ich nicht mit jsonConfig machen, habe das zwar in meinen anderen Adapter damit gemacht. Ich denke so bin ich doch um einiges flexibler.
Wegen der Ăbersicht, da hast du sicherlich Recht, es ist immer Luft nach oben. Was stört dich denn am meisten? Bisher habe ich erstmal die PrioritĂ€t aufs funktionelle gelegt.
Mit den Menus werde ich mir noch mal anschauen, genau wie die GerĂ€testeuerung. Ist sicherlich eine coole Idee.@michael-roling Erstmal Dankeschön fĂŒr den Adapter, so ist es relativ einfach ein MenĂŒ zu erstellen.
WÀre es möglich die Nachricht "Eintrag wurde nicht gefunden!" zu unterbinden?
Ich habe diverse Blockly Scripte mit Commands zu laufen, da ist klar das der Adapter den Command natĂŒrlich nicht finden kann đ -
@michael-roling Erstmal Dankeschön fĂŒr den Adapter, so ist es relativ einfach ein MenĂŒ zu erstellen.
WÀre es möglich die Nachricht "Eintrag wurde nicht gefunden!" zu unterbinden?
Ich habe diverse Blockly Scripte mit Commands zu laufen, da ist klar das der Adapter den Command natĂŒrlich nicht finden kann đ -
@michael-roling Erstmal Dankeschön fĂŒr den Adapter, so ist es relativ einfach ein MenĂŒ zu erstellen.
WÀre es möglich die Nachricht "Eintrag wurde nicht gefunden!" zu unterbinden?
Ich habe diverse Blockly Scripte mit Commands zu laufen, da ist klar das der Adapter den Command natĂŒrlich nicht finden kann đ -
@spike2 so ich habe etwas hoch geladen. Jetzt kann man in den Settings den Text einstellen!
@michael-roling Ahh super, werde ich morgen ausprobieren. Vielen Dank schon mal đ
-
@spike2 so ich habe etwas hoch geladen. Jetzt kann man in den Settings den Text einstellen!
@michael-roling sagte in Test Adapter telegram-menu v.0.2.x:
Jetzt kann man in den Settings den Text einstellen!
wenn das damit gemeint ist, dann funktioniert es super.

PS: gibt es eine Möglichkeit, das
truefalsealseinausweiterzugeben?
Seh da schon das Problem bei der Chefin ;) -
@michael-roling sagte in Test Adapter telegram-menu v.0.2.x:
Jetzt kann man in den Settings den Text einstellen!
wenn das damit gemeint ist, dann funktioniert es super.

PS: gibt es eine Möglichkeit, das
truefalsealseinausweiterzugeben?
Seh da schon das Problem bei der Chefin ;)@negalein hi, nein das ist damit nicht gemeint đ.
Es geht um den Text der gesendet wird wenn der Eintrag nicht gefunden wird.
Da du sicherlich Switch nutzt, muss ich mir etwas dazu ĂŒberlegen.
Bei einem normalen Set geht das so schon. -
@negalein hi, nein das ist damit nicht gemeint đ.
Es geht um den Text der gesendet wird wenn der Eintrag nicht gefunden wird.
Da du sicherlich Switch nutzt, muss ich mir etwas dazu ĂŒberlegen.
Bei einem normalen Set geht das so schon.@michael-roling Funktioniert super, Vielen Dank dafĂŒr :)
-
@negalein hi, nein das ist damit nicht gemeint đ.
Es geht um den Text der gesendet wird wenn der Eintrag nicht gefunden wird.
Da du sicherlich Switch nutzt, muss ich mir etwas dazu ĂŒberlegen.
Bei einem normalen Set geht das so schon.@michael-roling so ich habe auch dieses endlich hinzugefĂŒgt. Nun kannst du Values Ă€ndern indem du dieses am Ende in den Text einfĂŒgst - change{"true":"an", "false":"aus"}, oder nach deinen WĂŒnschen verĂ€nderst
-
Neuerung:
- wenn man werte setzt werden diese immer als bestÀtigt gesetzt, möchte man aber den Wert als unbestÀtigt setzen , zum Beispiel um andere Adapter zu steuern, muss dieses angegeben werden, siehe Doku.
- Es können einzelne Elemente aus anderen Gruppen ĂŒbernommen werden
-
@schmakus
ich bin gerade damit angefangen submenus in den Adapter zu integrieren, nutzt du in irgendeiner Art diese Menus schon per skript?
Bisher habe ich schon ein Menu mit on und off, so kann ich Datenpunkt mit dem selben Menu schalten. Das gleiche kann man schnell mit ja und nein machen.Vielleicht hast du ja noch andere ideen. Das submenu als navigation zu nutzen, macht in meinen augen wenig Sinn.
Update!
Ich habe jetzt noch ein Menu gebaut in dem man Prozente setzen kann einmal von 0-100 im 10er Schritt und einmal im 20ziger Schritt. Das kann man gut fĂŒr Rollos nutzen. -
@schmakus
ich bin gerade damit angefangen submenus in den Adapter zu integrieren, nutzt du in irgendeiner Art diese Menus schon per skript?
Bisher habe ich schon ein Menu mit on und off, so kann ich Datenpunkt mit dem selben Menu schalten. Das gleiche kann man schnell mit ja und nein machen.Vielleicht hast du ja noch andere ideen. Das submenu als navigation zu nutzen, macht in meinen augen wenig Sinn.
Update!
Ich habe jetzt noch ein Menu gebaut in dem man Prozente setzen kann einmal von 0-100 im 10er Schritt und einmal im 20ziger Schritt. Das kann man gut fĂŒr Rollos nutzen.@michael-roling sagte in Test Adapter telegram-menu v.0.3.x:
@schmakus
ich bin gerade damit angefangen submenus in den Adapter zu integrieren, nutzt du in irgendeiner Art diese Menus schon per skript?
Bisher habe ich schon ein Menu mit on und off, so kann ich Datenpunkt mit dem selben Menu schalten. Das gleiche kann man schnell mit ja und nein machen.Vielleicht hast du ja noch andere ideen. Das submenu als navigation zu nutzen, macht in meinen augen wenig Sinn.
Update!
Ich habe jetzt noch ein Menu gebaut in dem man Prozente setzen kann einmal von 0-100 im 10er Schritt und einmal im 20ziger Schritt. Das kann man gut fĂŒr Rollos nutzen.Hi, ich verwende SubmenĂŒs fĂŒr Ein/Aus, Hochdimmen/Runterdimmen und wie du auch erwĂ€hnt hast mit Werten fĂŒr RolllĂ€den oder Dimm-Level von Lampen.
Bei jedem SubmenĂŒ habe ich einen ZurĂŒck-Button, um wieder auf z.B. meine LampenĂŒbersicht zu kommen. -
@michael-roling sagte in Test Adapter telegram-menu v.0.3.x:
@schmakus
ich bin gerade damit angefangen submenus in den Adapter zu integrieren, nutzt du in irgendeiner Art diese Menus schon per skript?
Bisher habe ich schon ein Menu mit on und off, so kann ich Datenpunkt mit dem selben Menu schalten. Das gleiche kann man schnell mit ja und nein machen.Vielleicht hast du ja noch andere ideen. Das submenu als navigation zu nutzen, macht in meinen augen wenig Sinn.
Update!
Ich habe jetzt noch ein Menu gebaut in dem man Prozente setzen kann einmal von 0-100 im 10er Schritt und einmal im 20ziger Schritt. Das kann man gut fĂŒr Rollos nutzen.Hi, ich verwende SubmenĂŒs fĂŒr Ein/Aus, Hochdimmen/Runterdimmen und wie du auch erwĂ€hnt hast mit Werten fĂŒr RolllĂ€den oder Dimm-Level von Lampen.
Bei jedem SubmenĂŒ habe ich einen ZurĂŒck-Button, um wieder auf z.B. meine LampenĂŒbersicht zu kommen. -
Neuerung:
- wenn man werte setzt werden diese immer als bestÀtigt gesetzt, möchte man aber den Wert als unbestÀtigt setzen , zum Beispiel um andere Adapter zu steuern, muss dieses angegeben werden, siehe Doku.
- Es können einzelne Elemente aus anderen Gruppen ĂŒbernommen werden
Hi. Erstmal danke fĂŒr den Adapter. Find ich um einiges Ăbersichtlicher als mit Java oder Blockly.
Nun hab ich aktuell 2 Fragen:
-
Bei mir wird beim Umschalten der states eines Switches die Werte nicht mit Ack:true eingetragen. Man sieht dass sich der Wert auf True/false verĂ€ndert aber nicht gesetzt wird. Ist da evt. aktuell ein bug oder mach ich nur was falsch? đ
-
wie kann man denn solch ein UntermenĂŒ als Antwort kreieren oder ist das noch nicht in der aktuellen Git version?
-
Hi. Erstmal danke fĂŒr den Adapter. Find ich um einiges Ăbersichtlicher als mit Java oder Blockly.
Nun hab ich aktuell 2 Fragen:
-
Bei mir wird beim Umschalten der states eines Switches die Werte nicht mit Ack:true eingetragen. Man sieht dass sich der Wert auf True/false verĂ€ndert aber nicht gesetzt wird. Ist da evt. aktuell ein bug oder mach ich nur was falsch? đ
-
wie kann man denn solch ein UntermenĂŒ als Antwort kreieren oder ist das noch nicht in der aktuellen Git version?
@markus-frankl
zu eins, ich habe das gerade noch mal getestet , funktioniert wie es soll. Mach mal bitte ein paar Screenshots davon.
zu zwei, richtig das ist noch nicht auf github verfĂŒgbar. -
-
@markus-frankl
zu eins, ich habe das gerade noch mal getestet , funktioniert wie es soll. Mach mal bitte ein paar Screenshots davon.
zu zwei, richtig das ist noch nicht auf github verfĂŒgbar.Danke schon mal fĂŒr die Antwort. Hier auf den Screenshots sollte man es ziemlich gut sehen. Wenn ich den Datenpunkt via iQontrol oder manuell auf bestĂ€tigt wahr/falsch setze, schaltet die Lampe auch Korrekt. Der Datenpunkt links âonâ ist der um den es geht.

-
Danke schon mal fĂŒr die Antwort. Hier auf den Screenshots sollte man es ziemlich gut sehen. Wenn ich den Datenpunkt via iQontrol oder manuell auf bestĂ€tigt wahr/falsch setze, schaltet die Lampe auch Korrekt. Der Datenpunkt links âonâ ist der um den es geht.

@markus-frankl
eigentlich sollte immer ack.true gesetzt werden.
wenn du möchtest das ack:false gesetzt wird , einfach ack:false hinter das change{...} eintragen
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden
