Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Telegram Menü Übersicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Telegram Menü Übersicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      minim last edited by

      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 Reply Last reply Reply Quote 0
      • lobomau
        lobomau last edited by

        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]
        
        1 Reply Last reply Reply Quote 1
        • M
          minim last edited by

          Danke dir

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          786
          Online

          31.9k
          Users

          80.2k
          Topics

          1.3m
          Posts

          2
          3
          545
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo