Es geht um die Steuerung von 7 Klimageräten, von Daikin diese sind:
DaikinLara mit der IP 192.168.99.36 im Kinderzimmer Lara
DaikinGreta mit der IP 192.168.99.33 im Kinderzimmer Greta
DaikinEltern mit der IP 192.168.99.28 im Elternschlafzimmer
DaikinWZ mit der IP 192.168.99.27 im Wohnzimmer
DaikinWG mit der IP 192.168.99.35 im Wintergarten
DaikinWG2 mit der IP 192.168.99.187 auch im Wintergarten
DaikinFlur mit der IP 192.168.99.185 im Hauseingang
die Steuerung erfolgt über den Aufruf:
http://<Adresse des Gerätes>/aircon/set_control_info?
gefolgt von dem eigentlichen Aufruf: Ausschalten der Anlage: pow=0&mode=1&stemp=28&shum=0&f_rate=A&f_dir=0
oder einschalten der Anlage: pow=1&mode=1&stemp=28&shum=0&f_rate=A&f_dir=0 wobei temp=28 die Steuerung der Temperatur ist. Hier 28 Grad.
Abgefragt wird der Raum der jeweiligen Klimaanlage über in im Raum befindliches Thermostat vom Typ: HM-CC-RT-DN
REQ1182943 Elternschlafzimmer
LEQ0778974 = Hauseingang
LEQ0109312 = Kinderzimmer Greta
LEQ0779036 = Kinderzimmer Lara
LEQ1199918 = Wohnzimmer
LEQ0996640 = Wintergarten
Gesteuert werden soll folgendermaßen:
Ich brauche eine Systemvariable die festlegt ob alle Klimaanlagen an oder aus sein sollen. Geheizt oder gekühlt wird nur wenn diese Systemvariable auf ein steht. Wird die Systemvariable auf aus gestellt werden alle Klimaanlagen ausgeschaltet und bleiben solange aus, bis die Variable wieder auf ein gestellt wird. Dann jeweils eine Systemvariabel für jede Klimaanlage die von Manuell auf Automatik schaltet und je eine Systemvariable die die Temperatur im Raum festlegt.
Die Umschaltung Automatik zu manuell hat folgende Auswirkung: Im Automatik Modus kühlt oder heiz die Anlage selbstständig den Raum auf die in der Systemvariablen eingestellte Temperatur. Im Manuellen Modus kann ich über eine weitere Variable je Anlage festlegen (Eine Multiauswahl Variable), ob die Anlage an, aus, heizen oder kühlen soll. Solange bis ich diese manuell stoppe oder auf Automatik umschalte.
Im Automatik Modus soll die Temperatur folgendermaßen funktionieren: Das Skript fragt das Thermostat im jeweiligen Raum ab. ist dieser 2 Grad unter dem eingestellten Bereich wird geheizt bis 1 Grad über den eingestellten Bereich. Ist die Temperatur 2 Grad über dem eingestellten Bereich soll gekühlt werden, bis 1 Grad unter den eingestellten Bereich.
Außerdem muss folgender Schutz im Skript eingestellt werden: Ist eine Anlage oder ein Thermostat einmal nicht erreichbar, soll die Anlage diese Klimaanlage überspringen, solange bis diese oder das Thermostat wieder erreichbar sind. Außerdem soll eine Pushnachricht über Telegramm an @Tomiliy gesendet werden. einmalig, wenn die Anlage bzw. das Thermostat nicht erreichbar ist und einmalig, wenn es wieder erreichbar ist.
Wurde eine Anlage auf Manuell gestellt, soll diese automatisch nach 8 Stunden wieder auf Automatik gestellt werden.
Außerdem wenn gekühlt werden soll, soll dies ausschließlich mit Sonnenstrom erfolgen.
Dazu soll die Systemvariable: E3DC-Batterie-Status abgefragt werden, diese muss über 50% sein. Außerdem soll die Systemvariable E3DC-Photovoltaik-Leistung und E3DC-Hausverbrauch abgefragt werden. Gekühlt werden darf nur, wenn E3DC-Photovoltaik-Leistung um mindestens 5% höher als E3DC-Hausverbrauch ist oder die E3DC-Batterie-Status über 50% ist. Dieser Wert soll alle 5 Minuten überprüft werden. Für Heizen gilt diese Funktion nicht.
Im Manuellen Modus wird natürlich ebenfalls das jeweilige Thermostat abgefragt ob die Temperatur erreicht ist.
Ich habe bereits ein Skript, weches @Alchy freudndlicherweise für mich geschrieben hat (Dafür immer wieder vielen vielen Dank), welches mir wiedergibt on die jeweilige Anlage in Betrieb ist:
Sinnvollerweise geht der Befehl an die jeweilige Anlage nur raus, wenn diese auch in bzw. nicht in Betrieb ist.
Code: Alles auswählen
! Website Daikin Wifi Controller auslesen - for miwi by alchy v0.3
! +++++++++++++ Setup ++++++++++++++++
var DaikinLara = "http://192.168.99.36/aircon/get_control_info?";
var DaikinGreta = "http://192.168.99.33/aircon/get_control_info?";
var DaikinEltern = "http://192.168.99.28/aircon/get_control_info?";
var DaikinWZ = "http://192.168.99.27/aircon/get_control_info?";
var DaikinWG = "http://192.168.99.35/aircon/get_control_info?";
var DaikinWG2 = "http://192.168.99.187/aircon/get_control_info?";
var DaikinFlur = "http://192.168.99.185/aircon/get_control_info?";
! var url = "http://192.168.178.32/aircon/get_control_info"; ! selbsterklärend
!+++++++ Systemvariablen Setup ++++++
! 1. Vor Benutzung Systemvariable vom Typ Zeichenkette in CCU anlegen,
string USE_SYSVAR = "ja"; ! ja = speichern der Ausgabe des Scriptes in Systemvariable ODER nein = nur Ausgabe im Fenster
string KlimaLara = 'Klima_Lara'; ! hier den Namen dieser Variablen eintragen
string KlimaGreta = 'Klima_Greta'; ! hier den Namen dieser Variablen eintragen
string KlimaEltern = 'Klima_Eltern'; ! hier den Namen dieser Variablen eintragen
string KlimaWG = 'Klima_WG'; ! hier den Namen dieser Variablen eintragen
string KlimaWZ = 'Klima_WZ'; ! hier den Namen dieser Variablen eintragen
string KlimaWG2 = 'Klima_WG2'; ! hier den Namen dieser Variablen eintragen
string KlimaFlur = 'Klima_Flur'; ! hier den Namen dieser Variablen eintragen
! Org string LISTE = "pow,stemp,dh1"; ! Welche Werte möchtest Du in der Variable haben
string LISTE = "pow"; ! Welche Werte möchtest Du in der Variable haben
!++++++++++++++ Setup zu Ende Finger weg +++++++++++++
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinLara#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaLara).State(slist); }else {WriteLine(slist);}
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinGreta#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaGreta).State(slist); }else {WriteLine(slist);}
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinEltern#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaEltern).State(slist); }else {WriteLine(slist);}
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinWZ#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaWZ).State(slist); }else {WriteLine(slist);}
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinWG#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaWG).State(slist); }else {WriteLine(slist);}
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinWG2#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaWG2).State(slist); }else {WriteLine(slist);}
string i ;
string x ;
string tmp1;
string tmp2;
string slist ="";
dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#DaikinFlur#"'");
dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
foreach(x, srueck.Split(",")) {
tmp1 = x.StrValueByIndex("=",0);
tmp2 = x.StrValueByIndex("=",1);
foreach(i, LISTE.Split(",")) {
if ( (i == "pow") && (tmp2 == 1) ){ tmp2 = "true";}
if ( (i == "pow") && (tmp2 == 0) ){ tmp2 = "false";}
if (i == tmp1) { slist = slist #tmp2 #" "; }
}}
if ( USE_SYSVAR == "ja"){ dom.GetObject(KlimaFlur).State(slist); }else {WriteLine(slist);}
Ich hoffe die Anfrage ist nicht unverschämt....
Danke
Thomas