Steuerung WTH-1 & Wetterstation => Klimaanlage

HMIP lokale Installation

Moderator: Co-Administratoren

Xel66
Beiträge: 14252
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 597 Mal
Danksagung erhalten: 1522 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von Xel66 » 16.11.2023, 21:22

UFI hat geschrieben:
16.11.2023, 21:17
Weiterhin wichtig ist natürlich, dass nur die Aktoren senden und die CCU nicht den Datentransfer initiieren kann.
Nein, das hast Du in den falschen Hals bekommen. Grundsätzlich kann sie das schon, macht dieses bei netzversorgten Aktoren auch und muss es ja auch zum Ansteuern können. Diese Nichtabfragbarkeit betrifft grundsätzlich erst mal nur batteriebetriebene Sensoren. Wobei Thermostate wiederum eine Sondergattung sind, denn sie müssen ja ggf. auch gesteuert werden (Sollwertänderungen etc.). Im Normafall werden eben nur die Temperaturen nicht abgefragt, sondern selbst durch die Thermostate zyklisch und bei Änderungen versandt. Der Großteil dieser Aussendung erfolgt auch im Broadcast (wird auch nicht durch die CCU quittiert und belastet deshalb nicht den Duty Cycle. Wenn Programme wieder drauf getriggert werden, dann kann sich das auch wieder etwas anders gestalten.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

UFI
Beiträge: 12
Registriert: 15.11.2023, 23:44
System: CCU
Hat sich bedankt: 2 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von UFI » 18.11.2023, 14:13

Hallo zusammen,
ich habe inzwischen mit den Informationen aus verschiedenen Foren mal ein wenig rum programmiert. Das folgende Skript zeigt keinen Fehler an und funktioniert auch in dem Fenster "Skript testen" von der Homematic. In dem Testfenster ausgeführt wird auch das ausgeführt was gewünscht ist.
Aber leider funktioniert es nicht in dem Anweisungsteil des Programms.

Habt ihr eine Idee wo dran das liegt?

Code: Alles auswählen

! Gewünschte Einstellungen:
   string ip="192.168.2.29";
   string modus="4";
   string temp="18";
   string geschwindigkeit="A";
   string schwingen="0";

! Parameter der Klimaanlage auslesen
   var abfrage_url = "http://" + ip + "/aircon/get_control_info"; 
   dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#abfrage_url#"'");
   dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
   string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
! Abfrage ob Power 1 oder 0 - gibt das vierte Zeichen nach "pow=" zurück
   string power = srueck.Substr(srueck.Find("pow=")+4,1);

! Wenn an, dann ausmachen
   if (power == "0") { string pow = "1";}
! Wenn aus, dann anmachen
   if (power == "1") { string pow = "0";}

! Befehl Klima 
   string befehl = "/aircon/set_control_info?pow=" + pow +"&mode=" + modus + "&stemp=" + temp + "&shum=0&f_rate=" + geschwindigkeit + "&f_dir=" + schwingen; 

! HHTP Zeile zusammensetzen
   var toggle_url = "http://" + ip  + befehl;

! Ausgabe die die Klimaanlage letztendlich schaltet
   dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#toggle_url#"'", &stdout, &stderr);

! Kontrolle der Ausgabe
   string stdout; string stderr;        
   WriteLine("stdout: " + stdout);
   WriteLine("stderr: " + stderr);
Vielen Dank im Voraus.

Gibt es eigentlich auch die Möglichkeit Methoden woanders zu schreiben und abzuspeichern, auf die man dann in den Programmen mit den passenden Parametern zugreifen kann?

VG
UFI

PS: Vollständig kommentierter Code mit Abfrage der Klimaanlage und des Wandthermostats und diversen Ausgaben zur Kontrolle - vielleicht hilft es jemanden, der vor dem gleichen Problem steht. (Es geht mir bei dem Skript vor allen darum die Skripte zu verstehen - wie es nachher umgesetzt wird, ist eine ganz andere Sache).

Code: Alles auswählen

! Skript: Daikin Wifi Controller auslesen - und toggle ein/aus (by UFI)

! Mögliche Einstellungen:
! AN/AUS: AN => pow=1 // AUS => pow=0
! Modus: AUTO => mode=0; mode=1 oder mode=7 // entfeuchten => mode=2 // kühlen => mode=3 // heizen => mode=4 // lüften => mode=6
! Temperatur: stemp=21.5 
! Zielfeuchte in Prozent: shum=0
! Ventilator Geschwindigkeit: auto => A // silence => B // Stufe 1 => f_rate=3 bis Stufe 5 => f_rate=7
! Schwingen: aus => f_dir=0 // vertikal => f_dir=1 // horizontal => f_dir=2 // beide Richtungen => f_dir=3 

! Mögliche Rückmeldungen - nach Abfrage:
! AN/AUS: pow=1/0
! Letzter Modus: mode=0/1/2/3/4/6/7
! Letzte Temperatur: stemp=21.5 
! diverses Anderes
! Letzter Modus b_mode=
! Letzte Temperatur b_stemp=
! Letzte Luftfeuchtigkeit b_shum=
! Letzte Ventilatorgeschwindigkeit f_rate=A/B/3 ... 7
! Letzter Schwingungsmodus f_dir=0 ... 3
! Letzter Ventilatormodus b_f_rate=A/B/3 ... 7
! Letzter Schwingungsmodus b_f_dir=0 ...3
! diverses Anderes

! Gewünschte Einstellungen:
   string ip="192.168.2.29";
   string modus="4";
   string temp="18";
   string geschwindigkeit="A";
   string schwingen="0";

! Parameter der Klimaanlage auslesen
   var abfrage_url = "http://" + ip + "/aircon/get_control_info"; 
   dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#abfrage_url#"'");
   dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1);
   string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State();
   WriteLine("srueck: " + srueck);
! Abfrage ob Power 1 oder 0 - gibt das vierte Zeichen nach "pow=" zurück
   string power = srueck.Substr(srueck.Find("pow=")+4,1);
   WriteLine("power: " + power);
! Abfrage welcher mode
   string mode = srueck.Substr(srueck.Find("mode=")+5,1);
   WriteLine("mode: " + mode);
! Abfrage welche Temperatur
   string stemp = srueck.Substr(srueck.Find("stemp=")+6,1);
   WriteLine("stemp: " + stemp);
! Abfrage welche Temperatur
   string f_rate = srueck.Substr(srueck.Find("f_rate=")+7,1);
   WriteLine("f_rate: " + f_rate);
! Abfrage welche Temperatur
   string f_dir = srueck.Substr(srueck.Find("f_dir=")+6,1);
   WriteLine("f_dir: " + f_dir);

! Parameter (Temperatur) des Wandthermostats auslesen
   string wth_akt_temp = dom.GetObject("HmIP-RF.003920C999D263:1.ACTUAL_TEMPERATURE").Value().ToString(1);; 
   string wth_letzte_temp = dom.GetObject("HmIP-RF.003920C999D263:1.ACTUAL_TEMPERATURE").LastValue().ToString(1);; 
   string wth_soll_temp = dom.GetObject("HmIP-RF.003920C999D263:1.SET_POINT_TEMPERATURE").Value().ToString(1);
   WriteLine("Aktuelle Temp: " + wth_akt_temp);
   WriteLine("Letzte Temp: " + wth_letzte_temp);
   WriteLine("Soll Temp: " + wth_soll_temp);

! Wenn an, dann ausmachen
   if (power == "0") { string pow = "1";}
! Wenn aus, dann anmachen
   if (power == "1") { string pow = "0";}

! Befehl Klima 
   string befehl = "/aircon/set_control_info?pow=" + pow +"&mode=" + modus + "&stemp=" + temp + "&shum=0&f_rate=" + geschwindigkeit + "&f_dir=" + schwingen; 
   WriteLine("befehl: " + befehl);

! HHTP Zeile zusammensetzen
   var toggle_url = "http://" + ip  + befehl;
   WriteLine("toggle_url: " + toggle_url);


! Ausgabe die die Klimaanlage letztendlich schaltet
   dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#toggle_url#"'", &stdout, &stderr);

! Kontrolle der Ausgabe
   string stdout; string stderr;        
   WriteLine("stdout: " + stdout);
   WriteLine("stderr: " + stderr);
Ausgabe bei mir:
srueck: ret=OK,pow=0,mode=4,adv=,stemp=18.0,shum=0,dt1=26.0,dt2=M,dt3=23.0,dt4=18.0,dt5=18.0,dt7=26.0,dh1=0,dh2=50,dh3=0,dh4=0,dh5=0,dh7=0,dhh=50,b_mode=4,b_stemp=18.0,b_shum=0,alert=255,f_rate=A,f_dir=0,b_f_rate=A,b_f_dir=0,dfr1=A,dfr2=5,dfr3=A,dfr4=A,dfr5=A,dfr6=5,dfr7=A,dfrh=5,dfd1=1,dfd2=0,dfd3=3,dfd4=0,dfd5=0,dfd6=0,dfd7=1,dfdh=0
power: 0
mode: 4
stemp: 1
f_rate: A
f_dir: 0
Aktuelle Temp: 17.9
Letzte Temp: 18.0
Soll Temp: 17.0
befehl: /aircon/set_control_info?pow=1&mode=4&stemp=18&shum=0&f_rate=A&f_dir=0
toggle_url: http://192.168.2.29/aircon/set_control_ ... =A&f_dir=0

Xel66
Beiträge: 14252
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 597 Mal
Danksagung erhalten: 1522 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von Xel66 » 18.11.2023, 15:50

UFI hat geschrieben:
18.11.2023, 14:13
Gibt es eigentlich auch die Möglichkeit Methoden woanders zu schreiben und abzuspeichern, auf die man dann in den Programmen mit den passenden Parametern zugreifen kann?
Nein, mit Bordmitteln nicht. Du könntest allerdings auf TCL aumsteigen. Da sind solche Dinge möglich und TCL-Scripts kann man auch per Programm über einen system.Exec()-Aufruf starten, kann auch Systemvariablen auslesen und auch schreiben. Noch dazu kommt ein unschlagbarer Vorteil, dass diese Scripts nicht im ReGa-Kontext sondern auf Betriebssystemebene laufen und die ReGa somit nicht blockieren können, wenn mal z.B. durch Netzwerkprobleme oder Spannungsausfälle die Klimaanlage nicht verfügbar ist. Deine URL-Aufrufe sind nämlich diesbezüglich nicht gesichert (fehlendes Timeout etc.).

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

UFI
Beiträge: 12
Registriert: 15.11.2023, 23:44
System: CCU
Hat sich bedankt: 2 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von UFI » 18.11.2023, 22:58

Hallo zusammen,
mein Problem hat sich gelöst - der WCR2 hatte sich aufgehangen - es gab einen Workaround mit "ein neues Programm pro Taste erstellen, das man nachher wieder löschen kann" und es ging wieder. Außerdem zieht er sich gerade ein Firmwareupdate.
Xel66 hat geschrieben:
18.11.2023, 15:50
Deine URL-Aufrufe sind nämlich diesbezüglich nicht gesichert (fehlendes Timeout etc.).
Vielen Dank für die Antwort - kann man auch bei dem Script aus Homematic IP an den URL Aufrufen etwas besser machen?

Xel66
Beiträge: 14252
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 597 Mal
Danksagung erhalten: 1522 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von Xel66 » 19.11.2023, 10:41

UFI hat geschrieben:
18.11.2023, 22:58
... an den URL Aufrufen etwas besser machen?
Hier hatte jmaus mal was dazu geschrieben. Wichtig ist das Timeout, damit der Aufruf beendet wird, wenn der Server nicht erreichbar ist. Sonst blockiert es Dir die ReGa und die CCU steht quasi. Das abschließende "&" kannst Du nicht verwenden, da Du die rückgemeldeten Werte verwendest. Das geht nur bei fire&forget-Aufrufen, ist aber der Königsweg, weil so der Systemaufruf in den Hintergrund geschoben wird und die Scripting-Engine nicht auf Antwort wartet. Die empfohlenen 10 Sekunden sind mir aber auch immer zu lange und ich setze viel kürzere Werte ein (gerade lokale Geräte sollten in viel kürzerer Zeit antworten).

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

UFI
Beiträge: 12
Registriert: 15.11.2023, 23:44
System: CCU
Hat sich bedankt: 2 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von UFI » 22.11.2023, 22:49

Hallo zusammen,
vielen Dank für die vielen Ideen und die Unterstützung - ich habe viel von euch gelernt.

Zwei Probleme habe ich inzwischen auch für mich gelöst:
der WRC2 wollte nicht richtig funktionieren ... er hatte nach Anmeldung eine Direktverbindung mit dem WTH-1. Nachdem ich diese Direktverbindungen gelöscht hatte funktionierte der WRC2 ohne Probleme bei jedem Schaltvorgang.

Ich habe den Schalter gefunden wie man mit dem WTH-1 Drehknopf schalten kann - es kann als Trigger bei den Programmen "Bostmodus ein/aus" gewählt werden. So kann ich auch die Klimaanlage nur für die Dauer des Boostmodus anschalten. (Ausschalten mit einem zweiten Programm mit dem Trigger "Boostmodus aus").
Bisher schalte ich mit einem Programm die Klimaanlage an (Trigger Boostmodus an) - mit einem zweiten wieder aus (Trigger Boostmodus aus).
Kann man das eigentlich auch mit einem Programm machen?

Ich sehe immer wieder mal bei dem WTH einen Kühl- und einen Heizmodus (beides gibt es auch als Trigger). Ich verstehe nur nicht, was das sein soll, was es auslöst oder wie ich es einstellen kann und wie man es einsetzen kann.
Könnt Ihr mir dabei nochmal helfen?
Viele Grüße
UFi

Xel66
Beiträge: 14252
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 597 Mal
Danksagung erhalten: 1522 Mal

Re: Steuerung WTH-1 & Wetterstation => Klimaanlage

Beitrag von Xel66 » 23.11.2023, 11:16

Heizen/Kühlen ist in erster Linie nur für Fußbodenheizungen gedacht, kann man aber auch zur Steuerung einer Klimaanlage einsetzen. Hiermit wird einfach die Schaltlogik des Ausgangs bei der Zweipunktregelung umgedreht. Heißt im Heizmodus beim Unterschreiten des Sollwertes ein- und bei Überschreitung ausgeschaltet. Im Kühlmodus eben genau entgegengesetzt. Es wird bei Überschreitung ein- und bei Unterschreitung ausgeschaltet. Nutze ich genau so für die Klimaanlage und übrigens auch die Boost-Steuerung für einen temporären Betrieb..

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Antworten

Zurück zu „HomeMatic IP mit CCU“