99) $fan=102; //Patch für AutoWert so möglich 20-er Schritte in IPS-Profil $Befehl="$Filename $ipaddr $mideaID $power $modus $ton $solltemp $fan $swing $eco $turbo $IPSMaster"; //Befehlsstring zur Übergabe der Werte an Python-Script if ($debug) echo $Befehl."\n"; // exec($Befehl, $output); if ($debug) print_r($output); IPS_LogMessage($Name,"String an Midea: IPSMaster=$IPSMaster (entscheidet ob Befehl) Power=$power Modus=$modus Ton=$ton Solltemp=$solltemp Fan=$fan Swing=$swing Eco=$eco Turbo=$turbo (".$_IPS['SELF'].")"); // if ($IPSMaster=='False') { //Werte nur auslesen wenn nichts von IPS gesandt //Output parsen $outputS=implode(";",$output); //echo $outputS."\n"; // $pos=strrpos ($outputS,'ipaddr'); $werte=substr($outputS,$pos,334); //echo $werte."\n"; // $raumtemp_m=floatval(substr(strstr($werte, 'indoor_temperature'),21,4)); if ($raumtemp_m==0) { //manchmal werden Temperaturen als 0 gemeldet if ($debug) echo "Raumtemp ungültig=$raumtemp_m - vermutlich alle Werte ungültig - ignoriere alle - vermutlich auch Befehle erfolglos\n"; //ignoriere dann auch ALLE anderen Werte IPS_LogMessage($Name,"Da Raumtemp=$raumtemp_m - vermutlich alle Werte ungültig - ignoriere alle - vermutlich auch Befehle erfolglos(".$_IPS['SELF'].")"); IPS_SetScriptTimer($_IPS['SELF'],20); //erneutes Auslesen } else { IPS_LogMessage($Name,"Lese Werte aus Midea in IPS ein - nur Änderungen (".$_IPS['SELF'].")"); if ($raumtemp_m!=0) aenderung ($raumtempID,$raumtemp_m); if ($debug) echo "Raumtemp=$raumtemp_m\t"; $aussentemp_m=floatval(substr(strstr($werte, 'outdoor_temperature'),22,4)); if ($aussentemp_m!=0) aenderung ($aussentempID,$aussentemp_m); if ($debug) echo "Aussentemp=$aussentemp_m\n"; //echo "$werte\n"; $power_m=substr(strstr($werte, 'power_state'),14,5); if ($debug) echo "Power=$power_m\t"; if ($power_m=='False') { aenderung ($powerID,false); } else aenderung ($powerID,true); // $ton_m=substr(strstr($werte, 'prompt_tone'),14,5); //if ($debug) echo "Ton=$ton_m\t"; if ($ton_m=='False') { aenderung ($tonID,false); } else aenderung ($tonID,true); // if ($power_m!='False') { //kein Auslesen+Ändern der Solltemp in IPS da bei PowerAus StandardWert (z.B. 17) $solltemp_m=floatval(substr(strstr($werte, 'target_temperature'),21,4)); if ($debug) echo "Solltemp=$solltemp_m\t"; aenderung ($solltempID,$solltemp_m); } else if ($debug) echo "Solltemp nicht ausgelesen da Gerät aus\n"; // $modus_m=intval(substr(strstr($werte, 'operational_mode'),19,1)); //auto = 1 cool = 2 dry = 3 heat = 4 fan_only = 5 //if ($debug) echo "Modus=$modus_m\t"; if ($modus_m<1 || $modus_m>5) { if ($debug) echo "Modus ungültig=$modus_m\n"; } else { aenderung ($modusID,$modus_m); if ($debug) echo "Modus=$modus_m\t"; } // // $fan_m=intval(substr(strstr($werte, 'fan_speed'),12,3)); //Auto = 102 High = 80 Medium = 60 Low = 40 Silent = 20 //if ($debug) echo "Fan=$fan_m\t"; if ($fan_m<1 || $fan_m>102) { if ($debug) echo "Fan ungültig=$fan_m\n"; } else { iF($fan_m>100) $fan_m=100; //Patch für AutoWert so möglich 20-er Schritte in IPS-Profil aenderung ($fanID,$fan_m); if ($debug) echo "Fan=$fan_m\t"; } // // $swing_m=intval(substr(strstr($werte, 'swing_mode'),13,1)); //0=Off 1=Vertical 2=Horizontal 3=Both //if ($debug) echo "Swing=$swing_m\t"; if ($swing_m<0 || $swing_m>3) { if ($debug) echo "Swing ungültig=$swing_m\n"; } else { aenderung ($swingID,$swing_m); if ($debug) echo "Swing=$swing_m\t"; } // $eco_m=substr(strstr($werte, 'eco_mode'),11,5); if ($debug) echo "Eco=$eco_m\t"; if ($eco_m=='False') { aenderung ($ecoID,false); } else aenderung ($ecoID,true); // // $turbo_m=substr(strstr($werte, 'turbo_mode'),13,5); if ($debug) echo "Turbo=$turbo_m\t"; if ($turbo_m=='False') { aenderung ($turboID,false); } else aenderung ($turbo_m,true); // } } elseif ($debug) echo "Keine Panik - Werte werden aus Midea per ScriptTimer in $Timer Sekunden geholt - siehe IPS Meldungsfenster\n"; // // function aenderung ($id,$value) { global $debug,$Name; $oldvalue=GetValue($id); if ($oldvalue!=$value) { $VarName=IPS_GetName($id); if (is_bool($value)===true) { $value=$value ? 'true' : 'false'; } if (is_int($value)===true) { $value=1*$value; } IPS_LogMessage($Name,"Wert für $VarName in Klimagerät anders als in IPS - aktualisiere IPS mit $value (".$_IPS['SELF'].")"); if ($debug) echo "\nWert für $VarName in Klimagerät anders als in IPS - aktualisiere IPS mit $value\n"; SetValue($id,$value); } } Ende_Script: ?>