Telegram-Messenger zur Interaktion mit der CCU(2)

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

lukasp
Beiträge: 19
Registriert: 18.12.2015, 10:43

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von lukasp » 09.05.2016, 13:08

Indigo hat geschrieben: Dazu muss man die updateID aus der Serverantwort herausfilter, diese mit 1 addieren und den Wert mittels dieses Befehls als Offset setzen:
https://api.telegram.org/botAPI/getUpda ... pdate_id+1

Solltest du irgendwann einen Webhook verwenden ist das nicht nötig. Dieser achtet selbst darauf dass Nachrichten nur einmal geliefert werden.
Danke für deine Antwort. Habe jetzt das letzte OFFSET genommen und es mit +1 upgedatet, aber die letzte Nachricht bleibt doch noch drin, so das mein Skript mir per Telegram die Hilfe weiterhin zuschickt.
Mache ich noch was falsch? Oder habe ich einen Denkfehler?

Danke und Grüße,
Lukas

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von Indigo » 09.05.2016, 13:14

Was bekommst du denn als Antwort wenn du den getUpdates Befehl im Browser ausführst? ggf. haben sich mehrere Nachrichten deinerseits aufgestaut die erst alle "abgearbeitet" werden müssen. Das kann man gut im Browser sehen da dort dann alle Nachrichten aufgelistet werden. Dort kann man sich auch leicht die updateID der letzten Nachricht suchen und als Grundlage für den neuen Offset nehmen.

lukasp
Beiträge: 19
Registriert: 18.12.2015, 10:43

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von lukasp » 09.05.2016, 13:26

Folgendes bekomme ich ausgegeben:

Code: Alles auswählen

{"ok":true,"result":[{"update_id":87326067,
"message":{"message_id":96,"from":{"id":XXXXXXXX,"first_name":"Lukas","last_name":"XXX","username":"XXX"},"chat":{"id":XXXXXXXX,"first_name":"Lukas","last_name":"XXX","username":"XXX","type":"private"},"date":1462792039,"text":"Hilfe"}}]}
Es ist auch nur noch diese Zeile vorhanden.

Merci

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von Indigo » 09.05.2016, 13:44

Da findest du die update_id 87326067.
Wenn du jetzt den Offset auf 87326068 setzt wirst du diese Nachricht bei einem getUpdates Befehl nicht mehr als Antwort bekommen.

lukasp
Beiträge: 19
Registriert: 18.12.2015, 10:43

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von lukasp » 09.05.2016, 13:48

Alles klar, nun habe ich meinen (denk)Fehler entdeckt, ich muss den Offset-Wert vorher addieren, bevor ich diesen in der URL anwende :-)

Ich danke dir sehr für deine Hilfe, manchmal steht man halt auf dem Schlauch!

Einen schönen Tag noch und bis demnächst

Gruß,
Lukas

thebiglebowski@gmx.de
Beiträge: 18
Registriert: 13.11.2013, 19:56

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von thebiglebowski@gmx.de » 11.05.2016, 12:57

Hi,

vielen Dank für die coole Beschreibung!
Hat mir sehr geholfen das nachzubauen.
Habe das mit Webhook und viruteller Tastatur implementiert.
Funktioniert super!

Gruß
Christian
Gruß
Christian

131 Kanäle in 38 Geräten:

2x HM-LC-Sw1-FM, 1x HM-LC-Sw4-SM, 1x HM-Sec-RHS, 8x HM-CC-RT-DN, 2x HM-ES-PMSw1-Pl, 1x HM-WDS100-C6-O, 2x HM-CC-VG-1, 11x HM-LC-Bl1PBU-FM, 1x HM-LC-Sw4-DR, 1x HM-LC-Sw1PBU-FM, 1x HM-SCI-3-FM, 1x HM-OU-LED16, 1x HM-WDS30-T-O, 4x HM-TC-IT-WM-W-EU, 1x HM-CC-TC

Indigo
Beiträge: 356
Registriert: 10.02.2015, 20:32
Danksagung erhalten: 1 Mal

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von Indigo » 11.05.2016, 19:49

Hi,

Schön zu hören das es dir gelungen ist. Ich hatte schon befürchtet es ist zu unübersichtlich geworden.

FrankOL
Beiträge: 6
Registriert: 03.03.2016, 11:46

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von FrankOL » 17.06.2016, 23:02

Hallo,

ich benutze das Script von Manu.
Das triggern übernimmt ein Raspberry Pi.
Das versenden von Nachrichten aus einem Programm funktioniert.
Allerdings bekomme ich jetzt jede Minute diesen Text aus dem Programm zugeschickt.
Außerdem antwortet das Script nicht auf Meldungen die von Telegram kommen, z.B. "Hallo Bot".
Bin noch ziemlicher Anfänger auf diesem Gebiet, hat jemand eine Idee wo ich ein Problem habe?

Gruß
Frank

dtp
Beiträge: 10672
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 327 Mal
Danksagung erhalten: 503 Mal

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von dtp » 19.07.2016, 13:50

Übrigens, mit dem Telegram- und dem text2command-Adapter scheint es auch eine gute Lösung für den ioBroker zu geben. Damit braucht man dann die CCU nicht weiter belasten. Hab's aber noch nicht getestet.

EDIT: Hab's gestern Abend mal eingerichtet. Funktioniert super.

Einfach mit dem BotFather einen neuen Bot (z.B. ioBroker) einrichten und dann den API-Key in den Telegram-Adapter eintragen. Zusätzlich noch den text2command-Adapter installieren und als Instanz im Telegram-Adapter eintragen. Im text2command-Adapter kann man dann die gewünschten Aktionen, die z.B. auf der CCU durchgeführt werden sollen, definieren. Fertig.

So kann ich z.B. die Uhrzeit abfragen.
Telegram ioBroker Bot.PNG
Aber es geht natürlich noch viel mehr; dank Sprachunterstützung der Telegram-App auch per Sprachbefehl.

Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Jant
Beiträge: 4
Registriert: 05.10.2016, 22:06

Re: Telegram-Messenger zur Interaktion mit der CCU(2)

Beitrag von Jant » 05.10.2016, 22:42

Moin zusammen,

ich brauche bitte eure Hilfe!!
Ich bin seit Wochen damit beschäftigt das Telegram Script fehlerfrei zum laufen zu bekommen aber irgendwie gelingt es mir nicht.
Ich bin eigentlich größtenteils bei dem Standard Script geblieben, habe natürlich nur meine Geräte und an zwei Stellen Custom Keyboards eingefügt.
Wie ihr sicher an einigen Stellen, z.B. meiner Fenster Statusabfrage, erkennt, bin ich ein totaler Script newbie und habe daher keine Idee woher mein Fehler kommen kann.

Das Script läuft immer für ein paar Tage ohne Probleme. Dann führt es aber zum Absturz der CCU2. Und ab dann geht es auch nicht mehr. Ich kann die CCU Neustarten so oft ich will. Sobald ich das Script ausführe hängt sich der ReGaHss weg. Das die Neustarts nichts mehr nützen spricht ja eigentlich gegen das Problem mit mehr als 200 Variablen in Scripten.
Nun kann ich das Script nur wieder zum Laufen bringen, wenn ich das Programm lösche, es neu anlege, das Original Script von hier kopiere und dann nach und nach meine Anpassungen einfüge.
Selbst wenn ich nach dem fertigstellen des Scripts die funktionsfähige Version in einer Textdatei sichere und das Script dann ein paar Tage später,nachdem die CCU sich zerlegt hat, 1:1 kopiere und die WebUI die Fehlerprüfung durchführen lasse, hängt die CCU sich wieder auf. Dann bleibt nur der Neubau des Scripts.

Ich hoffe ich konnte das Problem einigermaßen verständlich beschreiben.
Es hört sich etwas verrückt an aber genau so verhält es sich.

Hier mein Script. Ich hoffe ich habe alles wichtige gexxxxt:

Code: Alles auswählen

! ### Telegram-Bot Version 0.1.3 ###
!
! ########## Info START ##########
! - das Script erstellt automatisch die benötigten SysVars, wenn diese nicht vorhanden sind.  !!!NICHT selber erstellen!!!
! - Du benötigst UNBEDINGT einen eingerichteten CUxD-Timer und einen CUxD-Exec.
! - der CUxd-Timer läuft komplett im Hintergrund ohne extra Programm und wird lediglich beim nächsten Aufruf dieses Scripts auf Status geprüft.
! ########## Info ENDE ##########
! ########## Config START ##########

string chatid = "xxx"; ! chat_id des Empfängers
string botAPI = "xxx"; ! API des eingerichteten Test-Bots 
 
var url = "https://api.telegram.org/bot"#botAPI#"/getUpdates";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";

var cuxd_dev="CUX2801003:10";  ! Adresse des benutzten CUxD-Exec-Devices für Telegram  !!!und NUR dafür!!!
var cuxd_rand="CUX2801003:16";  ! Adresse des benutzten CUxD-Exec-Devices für die Zufallszahl
var cuxd_timer="CUX2800001:1";  ! Adresse des benutzten CUxD-Timer-Devices für den Timer
var password="xxx";  ! Passwort für sichere Abfragen (z.B. Ausgabe der verfügbaren Befehle)

var heizung="BidCos-RF.MEQ0272050:1";  ! Beispiel-Aktor für Status- und Schalt-Befehle

integer timerTAN_max = "300"; ! maximale Gültigkeit der TAN in Sekunden

! ########## Config ENDE ##########
! ########## Script START ##########
! +++++ Deklaration weiterer interner Variablen +++++
string message; string message_tmp; string message_index; string message_state;

integer timerTAN = dom.GetObject("CUxD."#cuxd_timer#".TIMER_GET").State();
if (timerTAN > 0) {
   var mTAN  = dom.GetObject("Telegram-TAN-Jan").Value();
}
else { 
   dom.GetObject("Telegram-TAN-Jan").State(""); 
   var mTAN = "";
}

! ### Telegram-Meldungen START ###
string  svName = "Telegram-Text-Jan";
object  svObj  = dom.GetObject(svName);

if (!svObj){   
    object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

    svObj = dom.CreateObject(OT_VARDP);

    svObjects.Add(svObj.ID());

    svObj.Name(svName);
    svObj.ValueType(ivtString);
    svObj.ValueSubType(istChar8859);
   
    svObj.DPInfo("Telegram-Text der übertragen der soll");
    svObj.ValueUnit("");
    svObj.State("");
    svObj.Internal(false);
    svObj.Visible(true);

    dom.RTUpdate(false);
}
else {
   string message = dom.GetObject("Telegram-Text-Jan").Value(); 
   string custk = dom.GetObject("Telegram-ck-Jan").Value();
   if (message != "") {
      ! +++++ Umwandlung von Sonderzeichen gem. UTF-8 (Code by dtp)+++++
      foreach(message_index,message.Split(" ")){message_tmp = message_tmp + message_index + "%20";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("Ä")){message_tmp = message_tmp + message_index + "%C3%84";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("Ö")){message_tmp = message_tmp + message_index + "%C3%96";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("Ü")){message_tmp = message_tmp + message_index + "%C3%9C";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ä")){message_tmp = message_tmp + message_index + "%C3%A4";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ö")){message_tmp = message_tmp + message_index + "%C3%B6";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ü")){message_tmp = message_tmp + message_index + "%C3%BC";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ß")){message_tmp = message_tmp + message_index + "%C3%9F";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("°")){message_tmp = message_tmp + message_index + "%C2%B0";}
      message = message_tmp; message_tmp = "";
      ! Kürzen der Nachricht um die jeweils am Ende angefügten Umwandlungscodes
      message = message.Substr(0, message.Length()-51);
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message#"' -d chat_id="#chatid#" -d parse_mode=html -d disable_notification=0 -d reply_markup="#custk#"");
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k -L " # url #"?offset="# ausgabe_update_id);
      message = "";
      custk = "";
      dom.GetObject("Telegram-Text-Jan").State(""); 
      dom.GetObject("Telegram-ck-Jan").State(""); 
   }
}
! ### Telegram-Meldungen Ende ###

dom.GetObject("CUxD."#cuxd_dev#".CMD_SETS").State(cURL#" -s -k -L " # url);
dom.GetObject("CUxD."#cuxd_dev#".CMD_QUERY_RET").State(1);
string rueckgabe = dom.GetObject("CUxD."#cuxd_dev#".CMD_RETS").State();

integer anfang_chatid = rueckgabe.Find("chat")+12;
integer ende_chatid = rueckgabe.Find("chat")+21;
string ausgabe_chatid = rueckgabe.Substr(anfang_chatid,ende_chatid-anfang_chatid);

if (ausgabe_chatid != chatid) {
   integer anfang_update_id = rueckgabe.Find("update_id")+11;
   integer ende_update_id = rueckgabe.Find("update_id")+20;
   string ausgabe_update_id = rueckgabe.Substr(anfang_update_id,ende_update_id-anfang_update_id);
   ausgabe_update_id=(ausgabe_update_id.ToInteger()+1);  ! update_id um 1 erhöhen (um später die Nachricht zu löschen)
   dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k -L " # url #"?offset="#ausgabe_update_id);
   string rueckgabe= "";
   quit;
}
integer anfang_cpx = rueckgabe.Find("update_id");
if (anfang_cpx != "-1") {
   integer anfang_update_id = rueckgabe.Find("update_id")+11;
   integer ende_update_id = rueckgabe.Find("update_id")+20;
   string ausgabe_update_id = rueckgabe.Substr(anfang_update_id,ende_update_id-anfang_update_id);
   ausgabe_update_id=(ausgabe_update_id.ToInteger()+1);  ! update_id um 1 erhöhen (um später die Nachricht zu löschen)
   integer anfang_text = rueckgabe.Find("text")+7;
   integer ende_text = rueckgabe.Find("}}]}")-1;
   string ausgabe_text = rueckgabe.Substr(anfang_text,ende_text-anfang_text);

   if (ausgabe_text == "Hallo Haus") {
      string message = "Hallo Jan, was kann ich für die tun? Mit Hilfe erhältst du eine Übersicht!";
   }
if (ausgabe_text == "Hilfe") {
      string message = "Na, wie heisst das Zauberwort?";
   }

   if (ausgabe_text == "Hilfe "#password) {
      string message = "<b>Status-Befehle:</b>\nGartenlicht\nFenster EG\nFenster 1.OG\nFenster 2.OG\nAlarmanlage\nTV-Licht\n\n<b>Schalt-Befehle:</b>\nGartenlicht ein|aus\nAlarmanlage ein|aus\nTV-Licht ein|aus\nBewaesserung min.";
   }

   if (ausgabe_text == "Status Gartenlicht") {  
     if (dom.GetObject("BidCos-RF.MEQ1810058:1.STATE").Value() == "true") { string message_state = "eingeschaltet"; } else { string message_state = "ausgeschaltet"; }
      string message = "Das Gartenlicht ist "#message_state;
   }

   if (ausgabe_text == "Status Fenster 1.OG") {  
     if (dom.GetObject("BidCos-RF.JEQ0219257:4.LED_STATUS").Value() == 2) { string message_state = "Alle Fenster im 1.OG sind geschlossen"; } else { 
if (dom.GetObject("BidCos-RF.MEQ0216114:2.STATE").Value() == "true") { string message_state6 = "Das Schlafzimmer Fenster"; } else { string message_state6 = ""; }
if (dom.GetObject("BidCos-RF.LEQ0919607:1.STATE").Value() == "true") { string message_state5 = "Das linke Schlafzimmer Velux Fenster
, "#message_state6; } else { string message_state5 = ""#message_state6; }
if (dom.GetObject("BidCos-RF.LEQ0917807:1.STATE").Value() == "true") { string message_state4 = "Das rechte Schlafzimmer Velux Fenster
"#message_state5; } else { string message_state4 = ""#message_state5; }
if (dom.GetObject("BidCos-RF.MEQ0216116:2.STATE").Value() == "true") { string message_state3 = "Das Kinderzimmer Fenster
"#message_state4; } else { string message_state3 = ""#message_state4; }
if (dom.GetObject("BidCos-RF.LEQ0917980:1.STATE").Value() == "true") { string message_state2 = "Das Badezimmer Fenster
"#message_state3; } else { string message_state2 = ""#message_state3; }
if (dom.GetObject("BidCos-RF.LEQ0918115:1STATE").Value() == "true") { string message_state = "Folgende Fenster sind offen:
Das Arbeitszimmer Fenster
"#message_state2; } else { string message_state = "Folgende Fenster sind offen:
"#message_state2; }
}
      string message = ""#message_state;
   }

   if (ausgabe_text == "Status Fenster EG") {  
     if (dom.GetObject("BidCos-RF.JEQ0219257:3.LED_STATUS").Value() == 2) { string message_state = "Alle Fenster im EG sind geschlossen"; } else { 
if (dom.GetObject("BidCos-RF.MEQ0216084:2.STATE").Value() == "true") { string message_state4 = "Die HWR Tür"; } else { string message_state4 = ""; }
if (dom.GetObject("BidCos-RF.MEQ0216104:2.STATE").Value() == "true") { string message_state3 = "Das Küchenfenster
"#message_state4; } else { string message_state3 = ""#message_state4; }
if (dom.GetObject("BidCos-RF.MEQ0216118:2.STATE").Value() == "true") { string message_state2 = "Die Schiebetür im Wohnzimmer
"#message_state3; } else { string message_state2 = ""#message_state3; }
if (dom.GetObject("BidCos-RF.MEQ0216117:2.STATE").Value() == "true") { string message_state = "Folgende Fenster/Türen sind offen:
Das Wohnzimmer Fenster
"#message_state2; } else { string message_state = "Folgende Fenster sind offen:
"#message_state2; }
}
string message = ""#message_state;
   }

   if (ausgabe_text == "Status Fenster 2.OG") {  
     if (dom.GetObject("BidCos-RF.JEQ0219257:5.LED_STATUS").Value() == 2) { string message_state = "Alle Fenster im 2.OG sind geschlossen"; } else {
if (dom.GetObject("BidCos-RF.LEQ0918971:1.STATE").Value() == "true") { string message_state2 = "Das Dachbodenfenster rechts"; } else { string message_state2 = ""; }
if (dom.GetObject("BidCos-RF.LEQ0919049:1.STATE").Value() == "true") { string message_state = "Folgende Fenster sind offen:
Das Dachbodenfenster links
"#message_state2; } else { string message_state = "Folgende Fenster sind offen:
"#message_state2; }}
      string message = ""#message_state;
   }

 if (ausgabe_text == "Status Alarmanlage") {  
     if (dom.GetObject("Alarm EG").State() == "true") { string message_state = "eingeschaltet"; } else { string message_state = "ausgeschaltet";}
      string message = "Die Alarmanlage ist "#message_state;
   }

      if (ausgabe_text == "Bewaesserung deaktivieren") {
         dom.GetObject("Bewässerung").State(0);
         string message = "Die Bewässerung wurde deaktiviert!";
      }

   if (ausgabe_text == "Danke") {
      string message = "kein Problem!";
   }

   if (ausgabe_text == "getTAN") {
      dom.GetObject("CUxD."#cuxd_rand#".RAND").State(255);
      integer rand = dom.GetObject("CUxD."#cuxd_rand#".RAND").State().ToInteger();
      integer anfang_date = rueckgabe.Find("date")+11;
      integer ende_date = rueckgabe.Find("date")+16;
      string ausgabe_date = rueckgabe.Substr(anfang_date,ende_date-anfang_date);
      integer bTAN=(ausgabe_date.ToInteger()*rand);

string keybtan = ("{%22keyboard%22:[[%22getTAN%22,%22Hilfe%20bitte%22],[%22Gartenlicht%20ein%20"#bTAN#"%22,%22Gartenlicht%20aus%20"#bTAN#"%22],[%22Alarmanlage%20ein%20"#bTAN#"%22,%22Alarmanlage%20aus%20"#bTAN#"%22],[%22TV-Licht%20ein%20"#bTAN#"%22,%22TV-Licht%20aus%20"#bTAN#"%22]],%22one_time_keyboard%22:true}");

      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#bTAN#"' -d chat_id="#chatid#" -d parse_mode=html -d disable_notification=0 -d reply_markup="#keybtan#"");
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k -L " # url #"?offset="# ausgabe_update_id);
      string  svName = "Telegram-TAN-Jan";
      object  svObj  = dom.GetObject(svName);
      if (!svObj){   
         object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);
         svObj = dom.CreateObject(OT_VARDP);
         svObjects.Add(svObj.ID());
         svObj.Name(svName);   
         svObj.ValueType(ivtString);
         svObj.ValueSubType(istChar8859);
         svObj.DPInfo("aktuelle Telegram-TAN");  ! Beschreibung darf nicht leer ("") sein!
         svObj.ValueUnit("");
         svObj.Internal(false);
         svObj.Visible(true);
         dom.RTUpdate(false);
      }
      svObj.State(bTAN);
      dom.GetObject("CUxD."#cuxd_timer#".TIMER_SET").State(timerTAN_max);
      quit;
   }
   ! was jetzt kommt, wird NUR ausgeführt, wenn eine mTAN vorhanden ist
   if (mTAN != "") {

     if (ausgabe_text == "Gartenlicht ein "#mTAN) {
         dom.GetObject("BidCos-RF.MEQ1810058:1.STATE").State(1);
         string message = "Das Gartenlicht ist nun eingeschaltet!";
      }
      if (ausgabe_text == "Gartenlicht aus "#mTAN) {
         dom.GetObject("BidCos-RF.MEQ1810058:1.STATE").State(0);
         string message = "Das Gartenlicht ist nun ausgeschaltet!";
      }
      if (ausgabe_text == "TV-Licht ein "#mTAN) {
         dom.GetObject("BidCos-RF.LEQ0746761:1.STATE").State(1);
         string message = "Das TV-Licht ist nun eingeschaltet!";
      }
      if (ausgabe_text == "TV-Licht aus "#mTAN) {
         dom.GetObject("BidCos-RF.LEQ0746761:1.STATE").State(0);
         string message = "Das TV-Licht ist nun ausgeschaltet!";
      }
      if (ausgabe_text == "Alarmanlage ein "#mTAN) {
         dom.GetObject("Alarm EG").State(1);
         dom.GetObject("Alarm 1.OG").State(1);
         dom.GetObject("Alarm 2.OG").State(1);
         string message = "Die Alarmanlage ist an!";
      }
      if (ausgabe_text == "Alarmanlage aus "#mTAN) {
         dom.GetObject("Alarm EG").State(0);
         dom.GetObject("Alarm 1.OG").State(0);
         dom.GetObject("Alarm 2.OG").State(0);
         string message = "Die Alarmanlage ist aus!";
      }
      if (ausgabe_text == "Bewaesserung 5 "#mTAN) {
dom.GetObject("BidCos-RF.BidCoS-RF:10.PRESS_SHORT").State(1);
         string message = "5 minütige Bewässerung gestartet!";
      }
      if (ausgabe_text == "Bewaesserung 7 "#mTAN) {
dom.GetObject("BidCos-RF.BidCoS-RF:5.PRESS_SHORT").State(1);
         string message = "7 minütige Bewässerung gestartet!";
      }
      if (ausgabe_text == "Bewaesserung 10 "#mTAN) {
dom.GetObject("BidCos-RF.BidCoS-RF:6.PRESS_SHORT").State(1);
         string message = "10 minütige Bewässerung gestartet!";
      }
   }
   else {
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k -L " # url #"?offset="#ausgabe_update_id);
   }
   ! Ende der Schalt-Befehle
   if (message != "") {
      ! +++++ Umwandlung von Sonderzeichen gem. UTF-8 (Code by dtp)+++++
      foreach(message_index,message.Split(" ")){message_tmp = message_tmp + message_index + "%20";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("Ä")){message_tmp = message_tmp + message_index + "%C3%84";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("Ö")){message_tmp = message_tmp + message_index + "%C3%96";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("Ü")){message_tmp = message_tmp + message_index + "%C3%9C";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ä")){message_tmp = message_tmp + message_index + "%C3%A4";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ö")){message_tmp = message_tmp + message_index + "%C3%B6";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ü")){message_tmp = message_tmp + message_index + "%C3%BC";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("ß")){message_tmp = message_tmp + message_index + "%C3%9F";}
      message = message_tmp; message_tmp = "";
      foreach(message_index,message.Split("°")){message_tmp = message_tmp + message_index + "%C2%B0";}
      message = message_tmp; message_tmp = "";
      ! Kürzen der Nachricht um die jeweils am Ende angefügten Umwandlungscodes
      message = message.Substr(0, message.Length()-51);
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d parse_mode='HTML' -d text='"#message#"' -d chat_id="#chatid);
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k -L " # url #"?offset="# ausgabe_update_id);
      message = "";
   }
   else {
      dom.GetObject("CUxD."#cuxd_dev#".CMD_EXEC").State(cURL#" -s -k -L " # url #"?offset="#ausgabe_update_id);
   }

}
Vielen Dank für eure Hilfe!!!!
Gruß Jan

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“