Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  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.7k

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

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

Telegram Button Script

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
41 Beiträge 15 Kommentatoren 23.6k Aufrufe 21 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • dslraserD Offline
    dslraserD Offline
    dslraser
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #16

    das mit der Tastatur weiß ich leider nicht…

    1 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      robsdobs
      schrieb am zuletzt editiert von
      #17

      Es ist möglich eine gesendete Message zu editieren und damit beispielsweise die Tastatur zu entfernen. (es gibt ein zeitliches Limit)

      Dafür benötigst du die message ID der Meldung. Im Github gibt es einen Pull request der zwei neue Datenpunkte hinzufügt, welche die chat ID und message ID der zuletzt gesendeten Meldung enthält.

      Bis dahin kannst du auch die message ID der letzten empfangenen Meldung nehmen und eins dazu addieren. Solange du nicht mehrere Nutzer hast funktioniert das.

      Scripte: http://forum.iobroker.net/viewtopic.php?f=23&t=2799&p=119565#p119565,

      1 Antwort Letzte Antwort
      0
      • B Offline
        B Offline
        bishop
        schrieb am zuletzt editiert von
        #18

        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.

        4663_screenshot_20180226-170734.png

        1 Antwort Letzte Antwort
        0
        • J Offline
          J Offline
          jan.beres
          schrieb am zuletzt editiert von
          #19

          Hallo,

          Ich brauche mal wieder eure Hilfe da ich leider noch gar keinen Plan von Scripten habe.

          Ich möchte gerne im Telegramm Unterpunkte haben, sodass ich zb. Erst auf LED drücken muss und dann die Farben auswählen kann.

          Bis jetzt sieht es so aus:

          sendTo('telegram.0', {

          text: 'Bitte wähle ein Button',

          reply_markup: {

          keyboard: [

          ['Wohnwand An', 'Wohnwand Aus'],

          ['Arbeitszimmerlicht An', 'Arbeitszimmerlicht Aus'],

          ['LED An', 'LED Aus'],

          ['LED Blau'],

          ['LED Rot'],

          ['LED Grün'],

          ['LED Gelb'],

          ['LED Weiß'],

          ],

          resize_keyboard: true,

          one_time_keyboard: true

          }

          });

          Vielen Dank im Vorraus

          Jan

          1 Antwort Letzte Antwort
          0
          • P Offline
            P Offline
            Pascal51882
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • B Offline
              B Offline
              Bielefelder81
              schrieb am zuletzt editiert von
              #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 :D

              1 Antwort Letzte Antwort
              0
              • B Offline
                B Offline
                bishop
                schrieb am zuletzt editiert von
                #22

                Versuch mal

                one_time_keyboard: false

                Gruß

                1 Antwort Letzte Antwort
                0
                • E Offline
                  E Offline
                  excalibur270
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • R Offline
                    R Offline
                    Rocket85
                    schrieb am zuletzt editiert von
                    #24

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

                    Vielen DANK!

                    1 Antwort Letzte Antwort
                    0
                    • R Offline
                      R Offline
                      robson
                      schrieb am zuletzt editiert von 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 Antworten Letzte Antwort
                      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
                        schrieb am zuletzt editiert von
                        #26

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

                        1 Antwort Letzte Antwort
                        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
                          schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                          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
                            schrieb am zuletzt editiert von
                            #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 Antwort Letzte Antwort
                            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
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              1
                              • R Offline
                                R Offline
                                robson
                                schrieb am zuletzt editiert von 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 :grin:

                                1 Antwort Letzte Antwort
                                0
                                • R Offline
                                  R Offline
                                  robson
                                  schrieb am zuletzt editiert von 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 Antwort Letzte Antwort
                                  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
                                    schrieb am zuletzt editiert von
                                    #32

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

                                    1 Antwort Letzte Antwort
                                    0
                                    • hollywootH Offline
                                      hollywootH Offline
                                      hollywoot
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      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
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        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
                                          schrieb am zuletzt editiert von
                                          #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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          900

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe