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. Skripten / Logik
  4. Telegram Menü Übersicht

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Telegram Menü Übersicht

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 565 Aufrufe 1 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.
  • M Offline
    M Offline
    minim
    schrieb am zuletzt editiert von
    #1

    Momentan habe ich ein Skript gefunden womit ich etwas anfangen konnte.

    sendTo('telegram.0', {
        text:   'Bitte wähle ein Button',
        reply_markup: {
            keyboard: [
                ['Externe IP'],
                ['Gastzugang Ein', 'Gastzugang Aus'],
                ['Internet erneut verbinden', 'FRITZBox neustarten'],
            ],
            resize_keyboard:   true,
            one_time_keyboard: true
        }
    });
    
    

    Aber text2command Adapter kann ich das nicht hinzufügen wie in diesem Video ab Minute 8:40 –> https://www.youtube.com/watch?v=mRvVRK4gD_w&t=4s.

    Und ich möchte über Telegram abfragen können ob zum Beispiel das Gast-WLAN eingeschaltet ist. Wie könnte ich das machen?

    1 Antwort Letzte Antwort
    0
    • lobomauL Offline
      lobomauL Offline
      lobomau
      schrieb am zuletzt editiert von
      #2

      Fuer AN/AUS Objekte kannst gut das folgende Script benutzen. Das Schoene es funktioniert ohne text2command. Du kannst das Script direkt ohne Anpassung ausprobieren. Trigger Wort an telegram ist "Menu". Danach musst du die einzelnen Objekte fuer dich anpassen, damit es richtig funktioniert.:

      `//https://forum.iobroker.net/viewtopic.php?f=21&t=12246&p=130544&hilit=telegram+setstate#p130544
      
      var Devices = [
          { Name: 'Licht Ankleide',         Ort: "Obergeschoss",   an: true, aus: false, Objekt: "hue.0.Philips_hue.Ankleide.on"/*Ankleide.on*/,                   Beschreibung: "Steckdose an der der KVM-Switch angeschlossen ist"},
          { Name: 'Licht Hängeschrank',     Ort: "Erdgeschoss",    an: true, aus: false, Objekt: "hs100.0.192_168_178_71.state"/*tp-link*/, Beschreibung: "Licht Hängeschrank schalten"},
          { Name: 'Licht Schrank',          Ort: "Erdgeschoss",    an: true, aus: false, Objekt: "hue.0.Philips_hue.Schrank.on"/*Schrank.on*/, Beschreibung: "Licht Schrank schalten"},
          { Name: 'Licht Lichterkette',     Ort: "Erdgeschoss",    an: true, aus: false, Objekt: "hue.0.Philips_hue.Lichterkette.on"/*Philips_hue.Lichterkette.on*/, Beschreibung: "TV Lichterkette ausschalten"},
          { Name: 'Licht Gartenhaus',       Ort: "Erdgeschoss",    an: true, aus: false, Objekt: "hue.1.Philips_hue.sonoff_Gartenhaus.on"/*Philips_hue.sonoff_Gartenhaus.on*/, Beschreibung: "Licht Gartenhaus"},
          { Name: 'Gartenpumpe',            Ort: "Erdgeschoss",    an: true, aus: false, Objekt: "hm-rpc.1.000855699C4XXX.4.STATE"/*Gartenpumpe:4.STATE*/, Beschreibung: "Gartenpumpe"},
          { Name: 'TV AUS',                 Ort: "Erdgeschoss",    an: true, aus: false, Objekt: "lgtv11.0.turnOff"/*Switch TV OFF*/, Beschreibung: "LG TV ausschalten"},
          { Name: 'Cam Wansview',           Ort: "Erdgeschoss",    an: true, aus: false, Objekt: 'javascript.0.scriptEnabled.common.Cam.wansview_snapshot'/*scriptEnabled common Cam cam-wansview snapshot*/, Beschreibung: "Cam Wansview Foto"},
          { Name: 'Cam Edimax',             Ort: "Erdgeschoss",    an: true, aus: false, Objekt: 'javascript.0.scriptEnabled.common.Cam.Edimax_Bildspeicherung'/*scriptEnabled common Cam Edimax snapshot*/, Beschreibung: "Cam Edimax Foto"},
          { Name: 'Steckdose Media',        Ort: "Keller",         an: true, aus: false, Objekt: "g-homa.0.4CEXXX.state"/*Schaltzustand des Geräts*/,       Beschreibung: "Steckdose Hobbyraum für Multimedia"},
          { Name: 'Zirkulationspumpe',      Ort: "Keller",         an: true, aus: false, Objekt: "hm-rpc.0.MEQ0756XXX.1.STATE"/*Zirkulationspumpe:1.STATE*/,  Beschreibung: "Zirkulationspumpe für Warmwasser"},
          { Name: 'Steckdose Trockner',     Ort: "Keller",         an: true, aus: false, Objekt: "hm-rpc.0.LEQ0183XXX.1.STATE"/*Steckdose:1.STATE*/,       Beschreibung: "Steckdose Trockner im Waschraum"},
          { Name: 'Denon Receiver',         Ort: "Keller",         an: true, aus: false, Objekt: "denon.0.zoneMain.powerZone"/*Main Zone Power State*/, Beschreibung: "Denon AN-AUS schalten"},
          { Name: 'Cam FDT',                Ort: "Garage",          an: true, aus: false, Objekt: "javascript.0.scriptEnabled.common.Cam.FDT_Bildspeicherung"/*scriptEnabled.common.Cam.Bildspeicherung_FDT*/, Beschreibung: "Cam FDT Foto"},
          { Name: 'Alarm Aussen',           Ort: "Alarm",          an: true, aus: false, Objekt: "javascript.0.Variablen.AlarmAussenSchalten"/*Variablen.AlarmAussenSchalten*/, Beschreibung: "Alarm Aussen schalten"},
          { Name: 'Alarm Innen',            Ort: "Alarm",          an: true, aus: false, Objekt: "javascript.0.Variablen.AlarmInnenSchalten"/*Variablen.AlarmInnenSchalten*/, Beschreibung: "Alarm Innen schalten"},
      
      ];
      
      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() ==="MENU") {
              //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);
          }
       });` [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
      

      Host: NUC8i3 mit Proxmox:

      • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
      • Slave: Pi4
      1 Antwort Letzte Antwort
      1
      • M Offline
        M Offline
        minim
        schrieb am zuletzt editiert von
        #3

        Danke dir

        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

        557

        Online

        32.6k

        Benutzer

        82.3k

        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