Hallo allerseits, da ich nun stolzer Besitzer einer Multisplit Klimaanlage mit drei Innengeräten der Firma Daikin bin
war für mich natürlich auch die Integration in IPS eine interessante frage.
Für die Daikin Innengeräte gibt es als Zubehör den sogenannten Online Controller, dies ist eine WLAN Schnittstelle über die man die Geräte mit der Daikin APP auf dem Smartphone steuern kann.
Dieser Controller ist erforderlich und muss funktionsfähig mit dem eigenen WLAN verbunden sein.
Im Wesentlichen besteht mein Ansatz aus ein paar Variablen und zwei Skripten.
Variablen je Innengerät:
Diesen habe ich neue Profile verpasst:
Allen Variablen habe ich ein einfaches Aktionsskript mitgegeben:
<?
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
?>
Die Skripte:
Skript „GetStats“ Dient nur dazu in regelmäßigen Abständen die Daten der Daikin auszulesen und die Variablen zur Anzeige zu aktuaslisieren. Dieses Skript wird per Ereignis bei mir alle 5 Minuten aufgerufen.
Die IP der Anlage und die Variablen ID´s müsst ihr natürlich anpassen.
<?
$ip = 'HIER DIE IP DER ANLAGE REIN'; // Schlafzimmer
$result = file_get_contents("http://$ip/aircon/get_control_info");
//echo $result;
$data = explode(",", $result);
//echo $data[0]; //ret= Daten Gültig
//echo $data[1]; //pow= Anlage AN
//echo $data[2]; //mode= Modus
//echo $data[3]; //adv= ?
//echo $data[4]; //stemp= Ziel Temperatur
//echo $data[5]; //shum= Ziel Feuchte
//echo $data[6]; //dt1= Ziel Temp / Mode
//echo $data[7]; //dt2= Ziel Temp / Mode
//echo $data[8]; //dt3= Ziel Temp / Mode
//echo $data[9]; //dt4= Ziel Temp / Mode
//echo $data[10]; //dt5= Ziel Temp / Mode
//echo $data[11]; //dt7= Ziel Temp / Mode
//echo $data[12]; //dh1= Ziel Feuchte / Mode
//echo $data[13]; //dh2= Ziel Feuchte / Mode
//echo $data[14]; //dh3= Ziel Feuchte / Mode
//echo $data[15]; //dh4= Ziel Feuchte / Mode
//echo $data[16]; //dh5= Ziel Feuchte / Mode
//echo $data[17]; //dh7= Ziel Feuchte / Mode
//echo $data[18]; //dhh= Ziel Feuchte / Mode
//echo $data[19]; //b_mode=
//echo $data[20]; //b_stemp=
//echo $data[21]; //b_shum=
//echo $data[22]; //alert= Fehlercode
//echo $data[23]; //f_rate= Lüfterstufe
//echo $data[24]; //f_dir= Lüfter Schwenkmode
//echo $data[25]; //b_f_rate=
//echo $data[26]; //b_f_dir=
//echo $data[27]; //dfr1=
//echo $data[28]; //dfr2=
//echo $data[29]; //dfr3=
//echo $data[30]; //dfr4=
//echo $data[31]; //dfr5=
//echo $data[32]; //dfr6=
//echo $data[33]; //dfr7=
//echo $data[34]; //dfrh=
//echo $data[35]; //dfd1=
//echo $data[36]; //dfd2=
//echo $data[37]; //dfd3=
//echo $data[38]; //dfd4=
//echo $data[39]; //dfd5=
//echo $data[40]; //dfd6=
//echo $data[41]; //dfd7=
//echo $data[42]; //dfdh=
if ( $data[0] == "ret=OK" ) {
//echo "Daten Gültig!" ;
$power=substr($data[1],4,1);
SetValue(16710 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Power]*/ ,intval($power));
$mode=substr($data[2],5,1);
SetValue(57519 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Modus]*/ ,intval($mode));
$stemp=substr($data[4],6,4);
if ( $stemp != "--" ) {
SetValue(19536 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Soll Temperatur]*/ ,floatval($stemp));
}
$shum=substr($data[5],6,4);
SetValue(20535 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Ziel Feuchtigkeit]*/ ,floatval($shum));
$frate=substr($data[23],7,1);
switch ($frate) {
case 'A':
$stufe=0;
break;
case 'B':
$stufe=1;
break;
case '3':
$stufe=2;
break;
case '4':
$stufe=3;
break;
case '5':
$stufe=4;
break;
case '6':
$stufe=5;
break;
case '7':
$stufe=6;
break;
}
SetValue(10307 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Lüfterstufe]*/ ,$stufe);
$fdir=substr($data[24],6,1);
SetValue(53889 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\FanDirection]*/ ,intval($fdir));
} else {
echo "Daten ungültig!";
}
?>
Skript „SendCommand“ Dient dazu bei Änderung der Variablen (z.B. durch Webfront) die neuen Werte zu nehmen und als Steuerbefehl an die Anlage zu senden. Dieses Skript wird per Ausgelöstem Ereigniss immer dann gestartet wenn eine Variable sich geändert hat
Die IP der Anlage und die Variablen ID´s müsst ihr natürlich anpassen.
<?
$url = 'http://HIER DIE IP DER ANLAGE/aircon/set_control_info'; //Schlafzimmer
$power = GetValue(16710 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Power]*/ );
$mode = GetValue(57519 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Modus]*/ );
$fanspeed = GetValue(10307 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Lüfterstufe]*/ );
$fandir = GetValue(53889 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\FanDirection]*/ );
$ttemp = GetValue(19536 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Soll Temperatur]*/ );
$thum = GetValue(20535 /*[MakiHome\Allgemein\Funktionen\Klimaanlage\Schlafzimmer\Ziel Feuchtigkeit]*/ );
if ( $power ) {
$power = '1';
} else {
$power = '0';
}
switch ( $fanspeed ) {
case 0:
$fanspeed = 'A';
break;
case 1:
$fanspeed = 'B';
break;
case 2:
$fanspeed = '3';
break;
case 3:
$fanspeed = '4';
break;
case 4:
$fanspeed = '5';
break;
case 5:
$fanspeed = '6';
break;
case 6:
$fanspeed = '7';
break;
}
$data = array('pow' => strval($power), 'mode' => strval($mode), 'stemp' => strval($ttemp), 'shum' => '0', 'f_rate' => strval($fanspeed), 'f_dir' => strval($fandir));
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded
",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($data);
echo "
";
var_dump($result);
?>
In etwa so schaut dann der Objektbaum aus:
Und so schaut es dann im Webfront aus (Dummy Instanz mit Links auf die Variablen):
Ich hoffe das kann jemand von euch brauchen. Weiter Infos zur Kontrolle der Daikin Anlagen gibts auch hier:
ael-code/daikin-control · GitHub
ACHTUNG: Es gibt natürlich den Fall das eine Parameter Änderung z.B. per Fernbedienung direkt an der Daikin gemacht wird. Dies führt natürlich dazu das die Variablen in IPS durch das GETSTATS Script geändert werden, diese Änderung löst dann wiederum das Senden eines Konfigurationsbefehls seitens IPS an die Daikin aus, (Skript SENDCOMMAND) Bisher konnte ich das noch nicht als Problematisch feststellen aber wenn jemand eine Idee hat wie
ich das sauber abfangen kann bitte immer her damit
LG Martin