NEWS
Telegram Menü Übersicht
-
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?
-
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]
-
Danke dir