NEWS
Daikin per Alexa steuern
-
Hallo zusammen,
ich wende mich an euch, weil ich von (Java-)Skript absolut keinen Plan habe und hoffe, dass mein Anliegen für die Profis unter euch nur eine Kleinigkeit ist...
Folgendes:
Ich besitze eine Daikin-Klimaanlage, die per http-Befehl ausgelesen und gesteuert werden kann.Das Auslesen funktioniert so:
http://ip_der_Anlage/aircon/get_control_info
Als Rückgabe kommt dann zum Beispiel:
ret=OK,pow=1,mode=3,adv=,stemp=22.0,shum=0,dt1=25.0,dt2=M,dt3=22.0,dt4=25.0,dt5=25.0,dt7=25.0,dh1=AUTO,dh2=50,dh3=0,dh4=0,dh5=0,dh7=AUTO,dhh=50,b_mode=3,b_stemp=22.0,b_shum=0,alert=255,f_rate=A,f_dir=3,b_f_rate=A,b_f_dir=0,dfr1=5,dfr2=5,dfr3=A,dfr4=5,dfr5=5,dfr6=5,dfr7=5,dfrh=5,dfd1=0,dfd2=0,dfd3=0,dfd4=0,dfd5=0,dfd6=0,dfd7=0,dfdh=0,dmnd_run=0,en_demand=0
Ich habe mir jetzt für jedes Gerät, das ich steuern möchte, auf meiner RaspberryMatic jeweils ein Programm zum Einschalten und eines zum Ausschalten geschrieben.
Ich frage dort jeweils den aktuellen Status ab, ersetze dann den Parameter "pow" (Power) jeweils durch "1" oder "0" und gebe das dann wieder als Befehl an die Anlage zurück. Somit schalte ich die Anlage so ein/aus, wie der letzte Betriebszustand war. Das funktioniert auch sehr gut.Der Befehl zum Schalten sieht dann so aus:
http://IP_der_Anlage/aircon/set_control_info?ret=OK&pow=1&mode=3&adv=&stemp=22.0&shum=0&dt1=25.0&dt2=M&dt3=22.0&dt4=25.0&dt5=25.0&dt7=25.0&dh1=AUTO&dh2=50&dh3=0&dh4=0&dh5=0&dh7=AUTO&dhh=50&b_mode=3&b_stemp=22.0&b_shum=0&alert=255&f_rate=A&f_dir=3&b_f_rate=A&b_f_dir=0&dfr1=5&dfr2=5&dfr3=A&dfr4=5&dfr5=5&dfr6=5&dfr7=5&dfrh=5&dfd1=0&dfd2=0&dfd3=0&dfd4=0&dfd5=0&dfd6=0&dfd7=0&dfdh=0&dmnd_run=0&en_demand=0
Dann habe ich im ioBroker SmartHome-Geräte angelegt, die quasi nur diese Programme ansprechen (Bsp: KlimaZimmer1an führt das Programm zum Anschalten der Klimaanlage aus).
Das heißt, für jedes Klimagerät habe ich 2 "SmartHome-Geräte" (an und aus).Zum Schluss habe ich bei Alexa eine Szene angelegt...
Wenn Sprachbefehl "Alexa, Klimaanlage Zimmer 1 an" dann aktiviere Programm...So weit - so gut...
Die Experten unter euch werden hier sicher schon die Hände über dem Kopf zusammen schlagen - "soooo umständlich"... (aber anders wusste ich mir nicht zu helfen)
Nun kann ich aber damit keine Temperatur übermitteln - "Alexa, schalte Klimaanlage Zimmer1 auf 21 Grad"
Auch kann ich die Szenen ja nicht bestimmten Räumen zuordnen.
Bei Licht zum Beispiel funktioniert es ja so:
Wenn ich in dem jeweils zugeordneten Raum bin, dann reicht "Alexa, Licht an".
Bin ich nicht in dem Raum, dann eben "Alexa, schalte das Licht in xxx an".
(Geht das mit der Klimaanlage auch???)Kann man das Ganze irgendwie mit ioBroker umsetzen???
Nur zur Info... - das ist das Programm, welches auf der RaspberryMatic läuft:
! Daikin bei Xxx einschalten (IP: 192.168.178.xx) var url_abfrage = "http://192.168.178.xx/aircon/get_control_info"; ! URL zur Abfrage des letzten Status var url_schalten = "http://192.168.178.xx/aircon/set_control_info?"; ! URL zum Einschalten mit letztem Status ! letzten Status auslesen dom.GetObject("CUxD.CUX2801001:2.CMD_SETS").State("wget -q -O - '"#url_abfrage#"'"); dom.GetObject("CUxD.CUX2801001:2.CMD_QUERY_RET").State(1); string srueck = dom.GetObject("CUxD.CUX2801001:2.CMD_RETS").State(); WriteLine("letzter Status: \n" + srueck); WriteLine("----------- \n"); ! Ausgelesene Daten umwandeln string neu = srueck.Replace("pow=0", "pow=1"); neu = neu.Replace(",", "&"); WriteLine("Befehl zum Einschalten: \n" + neu); WriteLine("----------- \n "); ! URL zum Einschalten erstellen url_schalten = url_schalten + neu; WriteLine("URL zum Einschalten: \n" + url_schalten); WriteLine("----------- \n "); ! Einschalten der Anlage if ( (dom.GetObject(ID_DATAPOINTS)).Get("CUxD.CUX2801001:2.CMD_EXEC")) { dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:2.CMD_EXEC").State("wget -q -O - '"#url_schalten#"'"); WriteLine("Anlage eingeschaltet");}else{WriteLine("CUxD Datenpunkt nicht vorhanden");}
Danke im Voraus an Euch