Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Telegram Button Script

NEWS

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

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

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

Telegram Button Script

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
41 Posts 15 Posters 23.6k Views 21 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    Pascal51882
    wrote on last edited by
    #20

    Das geht doch relativ einfach.

    Einfach ein Unter Script erstellen in dem du dann die Farben ändern kannst.

    Dann kannst du das Script z.B Farben nennen und auf Farben einen Trigger setzen.

    Es macht wahrscheinlich sinn die Farbwahl neben An/Aus zu platzieren.

    1 Reply Last reply
    0
    • B Offline
      B Offline
      Bielefelder81
      wrote on last edited by
      #21

      @bishop:

      Ist es auch möglich den button im telegram zu bekommen ohne etwas eingeben zu müssen am anfang?

      Also direkt bei öffnen des bot channels.

      Screenshot_20180226-170734.png `
      Das würde mich auch interessieren 😄

      1 Reply Last reply
      0
      • B Offline
        B Offline
        bishop
        wrote on last edited by
        #22

        Versuch mal

        one_time_keyboard: false

        Gruß

        1 Reply Last reply
        0
        • E Offline
          E Offline
          excalibur270
          wrote on last edited by
          #23

          Hi. Gibt es eine Möglichkeit die Antworten nur an den Empfänger zu senden der die anfrage gestellt hat? Jetzt ist es so:Sohn stellt Anfrage und auch ich bekomme die Antwort.

          1 Reply Last reply
          0
          • R Offline
            R Offline
            Rocket85
            wrote on last edited by
            #24

            Könnte jemand so nett sein und das Original Script wieder einstellen? Der LINK funktioniert leider nicht mehr!

            Vielen DANK!

            1 Reply Last reply
            0
            • R Offline
              R Offline
              robson
              wrote on last edited by robson
              #25

              Hallo zusammen,

              ich brauche eure Hilfe.
              Ich versuche ein einfaches Inline Keyboard-Skript zum Laufen zu bringen (welches keinen Sinn macht und für mich zum Testen gedacht ist).
              Sobald sich der Status meines Fensterkontaktes ändert (von true auf false), soll Telegram mir dies mit dem Inline-Keyboard und den Tasten 1, 2, 3, 4 anzeigen. Sobald ich dann eine Taste drücke, soll Telegram mir anzeigen "Du hast Taste x gedrückt".

              Das funktioniert leider nicht 😞 Was mache ich falsch?

              var TFK = 'hm-rpc.0.OEQ0392670.1.STATE'; //ID Tür-Fensterkontakt
              
              on({id: TFK, val: false, ack: true}, function (obj) {
                  var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                  var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                  var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
              
                  sendTo('telegram', {
                      chatId: '12345',
                      text: 'Tippe auf eine Zahl:',
                      reply_markup: {
                          inline_keyboard: [
                              [{ text: '1', callback_data: '%1'}],
                              [{ text: '2', callback_data: '%2'}],
                              [{ text: '3', callback_data: '%3'}], 
                              [{ text: '4', callback_data: '%4'}],
                          ]
                       }
                  });
              
                  if (befehl === "%1") {
                      sendTo('telegram', {
                          chatId: '12345',
                          text: "Taste 1 gedrückt",
                      });
                  }
                  if (befehl === "%2") {
                      sendTo('telegram', {
                          chatId: '12345',
                          text: "Taste 2 gedrückt",
                      });
                  }
                  if (befehl === "%3") {
                      sendTo('telegram', {
                          chatId: '12345',
                          text: "Taste 3 gedrückt",
                      });
                  }
                  if (befehl === "%4") {
                      sendTo('telegram', {
                          chatId: '12345',
                          text: "Taste 4 gedrückt",
                      });
                  }
              });
              

              @dslraser
              Könntest du dein Script bitte noch mal posten? Der Thread, den du oben verlinkt hast, exisistert anscheinend nicht mehr. Danke.

              dslraserD 4 Replies Last reply
              0
              • R robson

                Hallo zusammen,

                ich brauche eure Hilfe.
                Ich versuche ein einfaches Inline Keyboard-Skript zum Laufen zu bringen (welches keinen Sinn macht und für mich zum Testen gedacht ist).
                Sobald sich der Status meines Fensterkontaktes ändert (von true auf false), soll Telegram mir dies mit dem Inline-Keyboard und den Tasten 1, 2, 3, 4 anzeigen. Sobald ich dann eine Taste drücke, soll Telegram mir anzeigen "Du hast Taste x gedrückt".

                Das funktioniert leider nicht 😞 Was mache ich falsch?

                var TFK = 'hm-rpc.0.OEQ0392670.1.STATE'; //ID Tür-Fensterkontakt
                
                on({id: TFK, val: false, ack: true}, function (obj) {
                    var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                    var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                    var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                
                    sendTo('telegram', {
                        chatId: '12345',
                        text: 'Tippe auf eine Zahl:',
                        reply_markup: {
                            inline_keyboard: [
                                [{ text: '1', callback_data: '%1'}],
                                [{ text: '2', callback_data: '%2'}],
                                [{ text: '3', callback_data: '%3'}], 
                                [{ text: '4', callback_data: '%4'}],
                            ]
                         }
                    });
                
                    if (befehl === "%1") {
                        sendTo('telegram', {
                            chatId: '12345',
                            text: "Taste 1 gedrückt",
                        });
                    }
                    if (befehl === "%2") {
                        sendTo('telegram', {
                            chatId: '12345',
                            text: "Taste 2 gedrückt",
                        });
                    }
                    if (befehl === "%3") {
                        sendTo('telegram', {
                            chatId: '12345',
                            text: "Taste 3 gedrückt",
                        });
                    }
                    if (befehl === "%4") {
                        sendTo('telegram', {
                            chatId: '12345',
                            text: "Taste 4 gedrückt",
                        });
                    }
                });
                

                @dslraser
                Könntest du dein Script bitte noch mal posten? Der Thread, den du oben verlinkt hast, exisistert anscheinend nicht mehr. Danke.

                dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                wrote on last edited by
                #26

                @robson
                kann ich später machen, bin unterwegs.

                1 Reply Last reply
                1
                • R robson

                  Hallo zusammen,

                  ich brauche eure Hilfe.
                  Ich versuche ein einfaches Inline Keyboard-Skript zum Laufen zu bringen (welches keinen Sinn macht und für mich zum Testen gedacht ist).
                  Sobald sich der Status meines Fensterkontaktes ändert (von true auf false), soll Telegram mir dies mit dem Inline-Keyboard und den Tasten 1, 2, 3, 4 anzeigen. Sobald ich dann eine Taste drücke, soll Telegram mir anzeigen "Du hast Taste x gedrückt".

                  Das funktioniert leider nicht 😞 Was mache ich falsch?

                  var TFK = 'hm-rpc.0.OEQ0392670.1.STATE'; //ID Tür-Fensterkontakt
                  
                  on({id: TFK, val: false, ack: true}, function (obj) {
                      var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                      var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                      var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                  
                      sendTo('telegram', {
                          chatId: '12345',
                          text: 'Tippe auf eine Zahl:',
                          reply_markup: {
                              inline_keyboard: [
                                  [{ text: '1', callback_data: '%1'}],
                                  [{ text: '2', callback_data: '%2'}],
                                  [{ text: '3', callback_data: '%3'}], 
                                  [{ text: '4', callback_data: '%4'}],
                              ]
                           }
                      });
                  
                      if (befehl === "%1") {
                          sendTo('telegram', {
                              chatId: '12345',
                              text: "Taste 1 gedrückt",
                          });
                      }
                      if (befehl === "%2") {
                          sendTo('telegram', {
                              chatId: '12345',
                              text: "Taste 2 gedrückt",
                          });
                      }
                      if (befehl === "%3") {
                          sendTo('telegram', {
                              chatId: '12345',
                              text: "Taste 3 gedrückt",
                          });
                      }
                      if (befehl === "%4") {
                          sendTo('telegram', {
                              chatId: '12345',
                              text: "Taste 4 gedrückt",
                          });
                      }
                  });
                  

                  @dslraser
                  Könntest du dein Script bitte noch mal posten? Der Thread, den du oben verlinkt hast, exisistert anscheinend nicht mehr. Danke.

                  dslraserD Offline
                  dslraserD Offline
                  dslraser
                  Forum Testing Most Active
                  wrote on last edited by dslraser
                  #27

                  @robson

                  ich habe zwei verschiedene Scripte, mit diesem hier lässt sich die Temperatur abfragen (geht natürlich auch für Batterien usw., wenn man es anpast)
                  Schlagworte habe ich hier z.B. warm oder kalt oder temperatur (ich glaube klein und grosBuchstaben waren egal. Also einfach eins dieser Wörter bei Telegram eintragen und absenden. (Geräte mit den xxx durch eigene ersetzen)
                  Und noch was, dieses Script ist nicht von mir.

                  on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
                      var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                      var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                      var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                  
                       if (befehl.search(/(?=.*(\bTEMPERATUR\b|\bWARM\b|\bKALT\b)).+/ig) != -1) {
                          sendTo('telegram', {
                              user: benutzer,
                              text: 'Für welchen Raum möchtest du die Temperatur abfragen?',
                              reply_markup: {
                                  inline_keyboard: [
                                      [{ text: 'alle Räume', callback_data: '%Tempalle'}],
                                      [{ text: 'Flur', callback_data: '%TempFlur'}],
                                      [{ text: 'Wohnzimmer', callback_data: '%TempWohnzimmer'}],
                                      [{ text: 'Badezimmer', callback_data: '%TempBadezimmer'}], 
                                      [{ text: 'Gästezimmer', callback_data: '%TempGaestezimmer'}],
                                      [{ text: 'Schlafzimmer', callback_data: '%TempSchlafzimmer'}],
                                      [{ text: 'Aussen', callback_data: '%TempAussen'}],
                                  ]
                               }
                          });
                      }    
                      
                  // Auswahl alle Räume oder einzeln.
                      else if (befehl === "%Tempalle") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Temperatur alle Räume angefragt",
                              answerCallbackQuery: {
                              text: 'Flur ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + 
                              '°C\nWonzimmer ' + getState("hm-rpc.xxx.1.ACTUAL_TEMPERATURE").val + 
                              '°C\nBadezimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + 
                              '°C\nGästezimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + 
                              '°C\nSchlafzimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val +
                              '°C\nAussen ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      } 
                      else if (befehl === "%TempFlur") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Flurtemperatur angefragt",
                              answerCallbackQuery: {
                              text: 'Flur ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      } 
                      else if (befehl === "%TempSchlafzimmer") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Schlafzimmertemperatur angefragt",
                              answerCallbackQuery: {
                              text: 'Schlafzimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      }
                      else if (befehl === "%TempGaestezimmer") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Gästezimmertemperatur angefragt",
                              answerCallbackQuery: {
                              text: 'Gästezimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      }
                      else if (befehl === "%TempWohnzimmer") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Wohnzimmertemperatur angefragt",
                              answerCallbackQuery: {
                              text: 'Wohnzimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      }
                      else if (befehl === "%TempBadezimmer") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Badezimmertemperatur angefragt",
                              answerCallbackQuery: {
                              text: 'Badezimmer ' + getState("hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      
                   }
                      else if (befehl === "%TempAussen") {
                              sendTo('telegram', {
                              user: benutzer,
                              text: "Aussentemperatur angefragt",
                              answerCallbackQuery: {
                              text: 'Aussen ' + getState("hm-rpc.0.xxx.ACTUAL_TEMPERATURE").val + '°C',
                              showAlert: true
                              }
                          });
                      }
                  });
                  
                  

                  sieht dann am PC so aus (Handy ist so ähnlich

                  Bildschirmfoto 2019-02-22 um 12.53.04.png

                  und beim Klick auf alle Räume sieht es dann so aus

                  Bildschirmfoto 2019-02-22 um 12.53.15.png

                  1 Reply Last reply
                  1
                  • R robson

                    Hallo zusammen,

                    ich brauche eure Hilfe.
                    Ich versuche ein einfaches Inline Keyboard-Skript zum Laufen zu bringen (welches keinen Sinn macht und für mich zum Testen gedacht ist).
                    Sobald sich der Status meines Fensterkontaktes ändert (von true auf false), soll Telegram mir dies mit dem Inline-Keyboard und den Tasten 1, 2, 3, 4 anzeigen. Sobald ich dann eine Taste drücke, soll Telegram mir anzeigen "Du hast Taste x gedrückt".

                    Das funktioniert leider nicht 😞 Was mache ich falsch?

                    var TFK = 'hm-rpc.0.OEQ0392670.1.STATE'; //ID Tür-Fensterkontakt
                    
                    on({id: TFK, val: false, ack: true}, function (obj) {
                        var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                        var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                        var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                    
                        sendTo('telegram', {
                            chatId: '12345',
                            text: 'Tippe auf eine Zahl:',
                            reply_markup: {
                                inline_keyboard: [
                                    [{ text: '1', callback_data: '%1'}],
                                    [{ text: '2', callback_data: '%2'}],
                                    [{ text: '3', callback_data: '%3'}], 
                                    [{ text: '4', callback_data: '%4'}],
                                ]
                             }
                        });
                    
                        if (befehl === "%1") {
                            sendTo('telegram', {
                                chatId: '12345',
                                text: "Taste 1 gedrückt",
                            });
                        }
                        if (befehl === "%2") {
                            sendTo('telegram', {
                                chatId: '12345',
                                text: "Taste 2 gedrückt",
                            });
                        }
                        if (befehl === "%3") {
                            sendTo('telegram', {
                                chatId: '12345',
                                text: "Taste 3 gedrückt",
                            });
                        }
                        if (befehl === "%4") {
                            sendTo('telegram', {
                                chatId: '12345',
                                text: "Taste 4 gedrückt",
                            });
                        }
                    });
                    

                    @dslraser
                    Könntest du dein Script bitte noch mal posten? Der Thread, den du oben verlinkt hast, exisistert anscheinend nicht mehr. Danke.

                    dslraserD Offline
                    dslraserD Offline
                    dslraser
                    Forum Testing Most Active
                    wrote on last edited by
                    #28

                    @robson
                    Dann hier noch das zweite Script, bei diesem Script das Wort menü an Telegram senden. Dieses Skript kannst Du beliebig mit Räumen und Geräten erweitern und auch Geräte damit schalten. Das ist oben im Skript und ich denke selbsterklärend. (in dem Skript sind nur Beispiele für drei Räume und einige Geräte)
                    Und noch was, dieses Script ist nicht von mir.

                    var Devices = [
                        { Name: 'Kaminlampe',        Ort: "Wohnzimmer",     an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE",                       Beschreibung: "Steckdose an der die Kaminlampe im Wohnzimmer angeschlossen ist"},
                        { Name: 'Fensterlampe',      Ort: "Wohnzimmer",     an: true, aus: false, Objekt: "hue.0.Philips_hue.Fensterlampe.on",          Beschreibung: "Fensterlampe Wohnzimmer"},
                        { Name: 'Tischlampe',        Ort: "Wohnzimmer",     an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE",                       Beschreibung: "Steckdose an der die Tischlampe im Wohnzimmer angeschlossen ist"},
                        { Name: 'Schranklampe',      Ort: "Wohnzimmer",     an: true, aus: false, Objekt: "hm-rpc.0.xxx.3.STATE",                       Beschreibung: "Steckdose an der die Schranklampe im Wohnzimmer angeschlossen ist"},
                        { Name: 'Deckenlampe',       Ort: "Wohnzimmer",     an: true, aus: false, Objekt: "hue.0.Philips_hue.Deckenlampe.on",           Beschreibung: "Deckenlampe Wohnzimmer"},
                        { Name: 'Licht komplett',    Ort: "Wohnzimmer",     an: true, aus: false, Objekt: "hue.0.Philips_hue.Wohnzimmer.on",            Beschreibung: "Licht Wohnzimmer komplett"},
                        { Name: 'Fernseher',         Ort: "Wohnzimmer",     an: 2,    aus: 0,     Objekt: "harmony.0.Wohnzimmer.activities.Fernsehen",  Beschreibung: "Fernseher Wohnzimmer über Harmony"},
                        { Name: 'Flurlicht',         Ort: "Flur",           an: true, aus: false, Objekt: "hue.0.Philips_hue.Flur-Kellertreppe.on",     Beschreibung: "Flur Treppenlicht"},
                        { Name: 'Schlafzimmerlicht', Ort: "Schlafzimmer",   an: true, aus: false, Objekt: "hue.0.HueBridge.Schlafzimmer.on",            Beschreibung: "Schlafzimmer Licht"},
                    ];
                    
                    function DistinctKeyValues(Array, Key) {
                        var unique = {};
                        var distinct = [];
                    
                        for( var i in Array ){
                            if (!Array[i].selection) { continue; }
                            if( typeof(unique[Array[i][Key]]) == "undefined"){
                                distinct.push(Array[i][Key]);
                            }
                            unique[Array[i][Key]] = 0;
                        }
                    return distinct;
                    }
                    
                    function ArrayDeselectKeyValues(Array, Key, Value) {
                        for( var i in Array ) {
                            if (Array[i][Key] != Value) {
                                Array[i].selection = false;
                            }
                        }    
                    return Array;
                    }
                    
                    function Array2ID(Array, Key, Value) {
                        for( var i in Array ) {
                            if (Array[i][Key] == Value) {
                                break;
                            }
                        }
                    return i;
                    }
                    
                    function Key2Keyboard(Array, Key) {
                        Distinct = [], OuterArray = []; 
                        Distinct = DistinctKeyValues(Array, Key);
                    
                        for( var i in Distinct ){
                            InnerArray = [];
                            item = {};
                            item.text          = Distinct[i];
                            item.callback_data = "___" + Key + ","+ Distinct[i];
                            InnerArray.push(item);
                            OuterArray.push(InnerArray);
                        }
                    return OuterArray;    
                    }
                    
                    function SwitchKeyboard(Array, Key, Value) {
                        Distinct = [], OuterArray = []; 
                        Distinct = ['an', 'aus'];
                    
                        for( var i in Distinct ){
                            InnerArray = [];
                            item = {};
                            item.text          = Distinct[i];
                            item.callback_data = "___" + Key + ","+ Distinct[i];
                            InnerArray.push(item);
                            OuterArray.push(InnerArray);
                        }
                    return OuterArray;    
                    }
                    
                    function MenuFrageKey(Frage, Key, Array) {
                        MenuFrage(Frage, Array, Key2Keyboard(Array, Key));
                    }
                    
                    function MenuFrageDevice(ID, Array) {
                        Objekt = Array[ID].Objekt;
                        Status=getState(Objekt).val;
                        if (Status === Array[ID].an) {
                            MenuFrage("Status von " + Array[ID].Name + ": eingeschaltet.\nWas wollen Sie tun?",Array, SwitchKeyboard(Array, '*'+Array[ID].Name, Array[ID].Name));
                        } 
                        else {
                            MenuFrage("Status von " + Array[ID].Name + ": ausgeschaltet.\nWas wollen Sie tun?",Array, SwitchKeyboard(Array, '*'+Array[ID].Name, Array[ID].Name));
                        }
                    }
                    
                    function MenuFrage(Frage, Array, KeyboardArray) {
                        sendTo('telegram.0', {
                            chatId: getState("telegram.0.communicate.requestChatId").val,
                            text:   Frage,
                            reply_markup: {
                                inline_keyboard: KeyboardArray,
                                resize_keyboard:   false, 
                                one_time_keyboard: true
                            }
                        });
                    return;    
                    }
                    
                    function MenuAntwortDeselect(Array, Key, Value) {
                        MenuAntwort(Array, Key, Value);
                        ArrayDeselectKeyValues(Array, Key, Value);
                    }
                    
                    function MenuAntwort(Array, Key, Value) {
                        sendTo('telegram.0', {
                            chatId: getState("telegram.0.communicate.requestChatId").val,
                            text: Key + ': ' + Value,
                            editMessageText: {
                                options: {
                                    chat_id: getState("telegram.0.communicate.requestChatId").val,
                                    message_id: getState("telegram.0.communicate.requestMessageId").val,
                                }
                            }
                        });
                    return Array;
                    }
                    
                    on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
                        command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
                        console.log("Received: " + command);
                    
                        // Menü beginnen
                        if (command.toUpperCase() ==="MENÜ") {
                            //Reset previous selections
                            for( var i in Devices ){
                                Devices[i].selection=true;
                            }
                            MenuFrageKey('Wo willst du etwas tun?', 'Ort', Devices);
                        }
                        // Antwort verarbeiten
                        else if (command.startsWith("___")) {
                                command = command.slice(3,command.length); 
                            var KeyVal = command.split(",");
                            var Key   = KeyVal[0];
                            var Value = KeyVal[1];
                    
                            if (Key == 'Ort') {
                                MenuAntwortDeselect(Devices, Key, Value);
                                MenuFrageKey('Welches Gerät willst du steuern', 'Name', Devices);
                            }
                            else if (Key == 'Name') {
                                MenuAntwortDeselect(Devices, Key, Value);
                                ID=Array2ID(Devices, Key, Value);
                                MenuFrageDevice(ID, Devices);
                            }
                            else if (Key.startsWith("*")) {
                                Key=Key.slice(1,Key.length);
                                ID=Array2ID(Devices, 'Name', Key);
                                setState(Devices[ID].Objekt, Devices[ID][Value]);
                                MenuAntwort(Devices, Devices[ID].Name, Value);
                            }
                            else {
                                console.log("Else: ___" + command);
                            }
                        }
                        else {
                                console.log("Else: " + command);
                        }
                     });
                     
                    

                    Sieht dann so aus

                    Bildschirmfoto 2019-02-22 um 13.04.33.png

                    Bildschirmfoto 2019-02-22 um 13.04.44.png

                    Bildschirmfoto 2019-02-22 um 13.04.54.png

                    1 Reply Last reply
                    1
                    • R robson

                      Hallo zusammen,

                      ich brauche eure Hilfe.
                      Ich versuche ein einfaches Inline Keyboard-Skript zum Laufen zu bringen (welches keinen Sinn macht und für mich zum Testen gedacht ist).
                      Sobald sich der Status meines Fensterkontaktes ändert (von true auf false), soll Telegram mir dies mit dem Inline-Keyboard und den Tasten 1, 2, 3, 4 anzeigen. Sobald ich dann eine Taste drücke, soll Telegram mir anzeigen "Du hast Taste x gedrückt".

                      Das funktioniert leider nicht 😞 Was mache ich falsch?

                      var TFK = 'hm-rpc.0.OEQ0392670.1.STATE'; //ID Tür-Fensterkontakt
                      
                      on({id: TFK, val: false, ack: true}, function (obj) {
                          var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
                          var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
                          var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
                      
                          sendTo('telegram', {
                              chatId: '12345',
                              text: 'Tippe auf eine Zahl:',
                              reply_markup: {
                                  inline_keyboard: [
                                      [{ text: '1', callback_data: '%1'}],
                                      [{ text: '2', callback_data: '%2'}],
                                      [{ text: '3', callback_data: '%3'}], 
                                      [{ text: '4', callback_data: '%4'}],
                                  ]
                               }
                          });
                      
                          if (befehl === "%1") {
                              sendTo('telegram', {
                                  chatId: '12345',
                                  text: "Taste 1 gedrückt",
                              });
                          }
                          if (befehl === "%2") {
                              sendTo('telegram', {
                                  chatId: '12345',
                                  text: "Taste 2 gedrückt",
                              });
                          }
                          if (befehl === "%3") {
                              sendTo('telegram', {
                                  chatId: '12345',
                                  text: "Taste 3 gedrückt",
                              });
                          }
                          if (befehl === "%4") {
                              sendTo('telegram', {
                                  chatId: '12345',
                                  text: "Taste 4 gedrückt",
                              });
                          }
                      });
                      

                      @dslraser
                      Könntest du dein Script bitte noch mal posten? Der Thread, den du oben verlinkt hast, exisistert anscheinend nicht mehr. Danke.

                      dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      wrote on last edited by
                      #29

                      @robson

                      und hier noch angepasst an Batterien, sieht dann so aus

                      Bildschirmfoto 2019-02-22 um 13.12.32.png

                      Bildschirmfoto 2019-02-22 um 13.12.48.png

                      1 Reply Last reply
                      1
                      • R Offline
                        R Offline
                        robson
                        wrote on last edited by robson
                        #30

                        @dslraser
                        Vielen Dank für deine ausführlichen Posts!
                        Ich hoffe, dass das Wetter bald wieder schlechter wird, damit ich mich an das Thema weiter ransetzen kann 😁

                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          robson
                          wrote on last edited by robson
                          #31

                          @dslraser
                          Hast du eine Ahnung, warum ich bei answerCallbackQuery immer den Telegram-User eingeben muss, damit ich eine Telegram-Ausgabe erhalte? Die ChatId funktioniert hier komischerweise nicht (ansonsten immer zuverlässig).

                          Es geht also nur

                              else if (befehl === "%TempAlle") {
                                      sendTo('telegram', {
                                      user: benutzer,
                                      text: "Temperatur alle Räume angefragt",
                                      answerCallbackQuery: {
                           ....
                          });
                          

                          Anstatt

                              else if (befehl === "%TempAlle") {
                                      sendTo('telegram', {
                                      chatId: 12345,
                                      text: "Temperatur alle Räume angefragt",
                                      answerCallbackQuery: {
                          ....
                          });
                          
                          dslraserD 1 Reply Last reply
                          0
                          • R robson

                            @dslraser
                            Hast du eine Ahnung, warum ich bei answerCallbackQuery immer den Telegram-User eingeben muss, damit ich eine Telegram-Ausgabe erhalte? Die ChatId funktioniert hier komischerweise nicht (ansonsten immer zuverlässig).

                            Es geht also nur

                                else if (befehl === "%TempAlle") {
                                        sendTo('telegram', {
                                        user: benutzer,
                                        text: "Temperatur alle Räume angefragt",
                                        answerCallbackQuery: {
                             ....
                            });
                            

                            Anstatt

                                else if (befehl === "%TempAlle") {
                                        sendTo('telegram', {
                                        chatId: 12345,
                                        text: "Temperatur alle Räume angefragt",
                                        answerCallbackQuery: {
                            ....
                            });
                            
                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            wrote on last edited by
                            #32

                            @robson
                            Ich gebe gar keinen Benutzer an, ich bin aber auch alleiniger Benutzer.

                            1 Reply Last reply
                            0
                            • hollywootH Offline
                              hollywootH Offline
                              hollywoot
                              wrote on last edited by
                              #33

                              Moin!
                              Erstmal vielen Dank für sämtliche Codeschnipsel - das hat schon gewaltig geholfen.

                              Aber nun meine Frage:
                              Gibt es die Möglichkeit die Buttons nach Betätigung verschwinden zu lassen?

                              dslraserD 1 Reply Last reply
                              0
                              • hollywootH hollywoot

                                Moin!
                                Erstmal vielen Dank für sämtliche Codeschnipsel - das hat schon gewaltig geholfen.

                                Aber nun meine Frage:
                                Gibt es die Möglichkeit die Buttons nach Betätigung verschwinden zu lassen?

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                wrote on last edited by
                                #34

                                @hollywoot
                                ich mache das meiste mittlerweile über ein eigenes komplettes Telegram Menü (sehr umfangreich, alles ohne Text To Command), oder auch über den Adapter iQontrol.

                                hollywootH 1 Reply Last reply
                                0
                                • dslraserD dslraser

                                  @hollywoot
                                  ich mache das meiste mittlerweile über ein eigenes komplettes Telegram Menü (sehr umfangreich, alles ohne Text To Command), oder auch über den Adapter iQontrol.

                                  hollywootH Offline
                                  hollywootH Offline
                                  hollywoot
                                  wrote on last edited by
                                  #35

                                  @dslraser
                                  Ich plane mithilfe von ioBroker und Telegram eine Art "Pagingsystem" für die Arbeit zu basteln.
                                  Da wäre es hilfreich wenn man die eingehenden Störungen "quittieren" kann und dann natürlich die Buttons verschwinden oder ausgegraut werden.
                                  Aber ich denke, das ist wohl etwas viel verlangt.

                                  mit iQontrol habe ich mich bislang absolut gar nicht beschäftigt - ist es aufwändig?

                                  dslraserD 1 Reply Last reply
                                  0
                                  • hollywootH hollywoot

                                    @dslraser
                                    Ich plane mithilfe von ioBroker und Telegram eine Art "Pagingsystem" für die Arbeit zu basteln.
                                    Da wäre es hilfreich wenn man die eingehenden Störungen "quittieren" kann und dann natürlich die Buttons verschwinden oder ausgegraut werden.
                                    Aber ich denke, das ist wohl etwas viel verlangt.

                                    mit iQontrol habe ich mich bislang absolut gar nicht beschäftigt - ist es aufwändig?

                                    dslraserD Offline
                                    dslraserD Offline
                                    dslraser
                                    Forum Testing Most Active
                                    wrote on last edited by
                                    #36

                                    @hollywoot
                                    Ich habe nicht so ganz verstanden was Du vor hast.
                                    iQontrol ist recht schnell eingerichtet und funktioniert bei bei mir schon sehr gut.

                                    Hier mal meine Startseite von iQontrol
                                    Screenshot_20190627-140735_Chrome.jpg

                                    Screenshot_20190627-140742_Chrome.jpg

                                    hollywootH 1 Reply Last reply
                                    0
                                    • dslraserD dslraser

                                      @hollywoot
                                      Ich habe nicht so ganz verstanden was Du vor hast.
                                      iQontrol ist recht schnell eingerichtet und funktioniert bei bei mir schon sehr gut.

                                      Hier mal meine Startseite von iQontrol
                                      Screenshot_20190627-140735_Chrome.jpg

                                      Screenshot_20190627-140742_Chrome.jpg

                                      hollywootH Offline
                                      hollywootH Offline
                                      hollywoot
                                      wrote on last edited by hollywoot
                                      #37

                                      @dslraser
                                      Sorry, ich versuch's mal verständlicher auszudrücken.
                                      Ich arbeite in der technischen Abteilung eines mittelständischen Unternehmens.
                                      Wir haben hier diverse Hochregalgassen, Papiermaschinen, Fördertechnikstrecken, usw.
                                      All diese Geräte/Strecken werden von uns überwacht.
                                      Sobald eine Störung vorliegt, meldet ein Pagingsystem diese Störung an einen Pager. Dieser piept dann wie blöd und es steht dort etwas wie "Störung Strecke XY". Dann watschelt man da hin und behebt die Störung.
                                      Funktioniert soweit schon recht zuverlässig seit knapp 20 Jahren.

                                      Nunja ... der große Nachteil: Es basiert auf einer Funkfrequenz (keine Ahnung welche).
                                      Entfernt man sich also zu weit vom Sender, empfängt der Empfänger keine Meldungen mehr und sie werden in die Luft geschossen.
                                      Deshalb der Plan, das Ganze mal mittels WLAN/ioBroker/Telegram anzugehen. Als Aktoren würden z.B. ESP's oder Raspberrys/Arduinos diesen.
                                      Alles gut und schön.
                                      Wenn ich jetzt eine Störungsmeldung per Telegram bekomme, kann ich mittels der Buttons darauf reagieren.
                                      Ich hätte gerne, dass wenn ich einen dieser Buttons drücke, dass er aus dem Chatverlauf verschwindet. Nicht die ganze Meldung, sondern nur der Button.
                                      Sollte das nicht gehen, andere Vorschläge? 🙂

                                      dslraserD 1 Reply Last reply
                                      0
                                      • hollywootH hollywoot

                                        @dslraser
                                        Sorry, ich versuch's mal verständlicher auszudrücken.
                                        Ich arbeite in der technischen Abteilung eines mittelständischen Unternehmens.
                                        Wir haben hier diverse Hochregalgassen, Papiermaschinen, Fördertechnikstrecken, usw.
                                        All diese Geräte/Strecken werden von uns überwacht.
                                        Sobald eine Störung vorliegt, meldet ein Pagingsystem diese Störung an einen Pager. Dieser piept dann wie blöd und es steht dort etwas wie "Störung Strecke XY". Dann watschelt man da hin und behebt die Störung.
                                        Funktioniert soweit schon recht zuverlässig seit knapp 20 Jahren.

                                        Nunja ... der große Nachteil: Es basiert auf einer Funkfrequenz (keine Ahnung welche).
                                        Entfernt man sich also zu weit vom Sender, empfängt der Empfänger keine Meldungen mehr und sie werden in die Luft geschossen.
                                        Deshalb der Plan, das Ganze mal mittels WLAN/ioBroker/Telegram anzugehen. Als Aktoren würden z.B. ESP's oder Raspberrys/Arduinos diesen.
                                        Alles gut und schön.
                                        Wenn ich jetzt eine Störungsmeldung per Telegram bekomme, kann ich mittels der Buttons darauf reagieren.
                                        Ich hätte gerne, dass wenn ich einen dieser Buttons drücke, dass er aus dem Chatverlauf verschwindet. Nicht die ganze Meldung, sondern nur der Button.
                                        Sollte das nicht gehen, andere Vorschläge? 🙂

                                        dslraserD Offline
                                        dslraserD Offline
                                        dslraser
                                        Forum Testing Most Active
                                        wrote on last edited by
                                        #38

                                        @hollywoot
                                        🙄 da muss ich mal drüber nachdenken🙄🌞🙈

                                        1 Reply Last reply
                                        0
                                        • Paulchen67P Offline
                                          Paulchen67P Offline
                                          Paulchen67
                                          wrote on last edited by
                                          #39

                                          Seit dem letzten Update des Telegram Adapters verschwinden die
                                          Inline Keyboards sobald sie betätig werden. Hat jemand eine Ahnung
                                          wie das verhindert werden kann?

                                          ioBroker mit Ubuntu auf Intel NUC
                                          piVCCU auf Raspberry Pi 3

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          763

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe