KWL Helios Easycontrols über Http Auslesen

Helios KWL EasyControls auslesen und steuern.

da ich immer wieder gefragt werde, veröffentliche ich hier nochmal erklärt wie das auslesen und steuern funktioniert.
Dank dem Team hier im Forum die die Steuerung erst ermöglicht haben. Vielen Dank nochmal.

Auslese Script anlegen:


<?


$kwlip = "192.168.2.31";
$kwlpasswort = '12345678';


    $header[] = "Connection: close";
    $header[] = "Origin: http://" . $kwlip;
    $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    $header[] = "Content-Type: text/plain;charset=UTF-8";
    $header[] = "Accept:  */*";
    $header[] = "Referer: http://" . $kwlip . "/anzeig.htm";
    $header[] = "Accept-Encoding: gzip, deflate";
    $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            $ch = curl_init('http://' . $kwlip . '/data/werte8.xml');
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_FAILONERROR, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml=/data/werte8.xml');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
            $result = curl_exec($ch);
            curl_close($ch);
            if ($result === false)
            {
                  //wenn Anmeldung fehlschlägt --> anmelden
                  $header[] = "Connection: close";
                        $header[] = "Origin: http://" . $kwlip;
                        $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
                        $header[] = "Content-Type: text/plain;charset=UTF-8";
                        $header[] = "Accept:  */*";
                        $header[] = "Referer: http://" . $kwlip . "/info.htm";
                        $header[] = "Accept-Encoding: gzip, deflate";
                        $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


                    $ch = curl_init('http://' . $kwlip . '/info.htm');
                    curl_setopt($ch, CURLOPT_HEADER, false);
                    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                    curl_setopt($ch, CURLOPT_FAILONERROR, true);
                    curl_setopt($ch, CURLOPT_POST, true);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, 'v00402='.$kwlpasswort);
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
                    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
                    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
                    $result = curl_exec($ch);
                    curl_close($ch);
                  var_dump($result);
                   
            }
            else
            {
                  $simple = simplexml_load_string($result);
                  //print_r($simple); //ausgelesene Variablen anzeigen
                        
                        
                        $aussenluft = str_replace('.', ',', str_replace('"', '', $simple->VA[12]));
                        setvalue(36805 /*[Lüftung\Werte\Außenluft]*/ , $aussenluft);
                        $zuluft = str_replace('.', ',', str_replace('"', '', $simple->VA[13]));
                        setvalue(56798 /*[Lüftung\Werte\Zuluft]*/ , $zuluft);
                        $fortluft = str_replace('.', ',', str_replace('"', '', $simple->VA[14]));
                        setvalue(23221 /*[Lüftung\Werte\Fortluft]*/ , $fortluft);
                        $abluft = str_replace('.', ',', str_replace('"', '', $simple->VA[15]));
                        setvalue(54424 /*[Lüftung\Werte\Abluft]*/ , $abluft);
                        $zuluftrrp = str_replace('.', ',', str_replace('"', '', $simple->VA[54]));
                        setvalue(52558 /*[Lüftung\Werte\Zuluft Drehzahl]*/ , $zuluftrrp);
                        $abluftrrp = str_replace('.', ',', str_replace('"', '', $simple->VA[55]));
                        setvalue(47051 /*[Lüftung\Werte\Abluft Drehzahl]*/ , $abluftrrp);
                        $luefterstufe = str_replace('.', ',', str_replace('"', '', $simple->VA[10]));
                  setvalue(33732 /*[Lüftung\Werte\Lüfterstufe]*/  , $luefterstufe);

                        $bypass = str_replace('.', ',', str_replace('"', '', str_replace(']', '', $simple->VA[98])));
                  if ($bypass == 1)
                  {
                  setvalue(39647 /*[Lüftung\Werte\Bypass]*/  , true);
                  }
                  else
                  {
                  setvalue(39647 /*[Lüftung\Werte\Bypass]*/  , false);
                  }
                  
                        

            }
            
 
?>

Steuerungsscript anlegen:
dieses läuft bei mir alle 2 Minuten.


<?

$kwlip = "192.168.2.31";
$kwlpasswort = '12345678';

 if(GetValue(48576 /*[Lüftung\Programm]*/ )==5) //manuelle Steuerung
 {
 
 //Durchschnitt Luftfeuchtigkeit Bad errechnen
 $archiveID = 12401 /*[Archive Handler]*/ ;
 $objectID = 45058 /*[Heizung\Thermo BAD\HUMIDITY]*/ ;
 $endtime = time(); // time() for "now"
 $starttime = strtotime("yesterday 12:00"); // for n minutes ago
 $limit = 0; // kein Limit


//print_r(AC_GetLoggedValues($archiveID, $objectID, $starttime, $endtime, $limit));
$buffer = AC_GetLoggedValues($archiveID, $objectID, $starttime, $endtime, $limit);
$anzahl = 0;
$summe = 0;
$totaldauer = 0;
foreach ($buffer as $werte){
    $wert = $werte["Value"];
    $dauer = 24 * 3600;
    $anzahl = $anzahl + 1;
    $totaldauer = $totaldauer + $dauer;
     $summe = $summe + ($wert*$dauer);
}
echo "N-Werte: ".$anzahl. "
";
$mittelw = $summe / $totaldauer;
echo "Mittelwert Bad: " . $mittelw . "
";
 

 SetValue(21793 /*[Lüftung\Werte\bad-durchschnitt]*/ ,$mittelw);
 

 If(($mittelw + 2) < (GetValue(45058 /*[Heizung\Thermo BAD\HUMIDITY]*/ )))
 {
 $befehl = 'v00102=4';
 IPS_SetScriptTimer(36077 /*[Lüftung\Programm\zurück auf auto]*/ , 18000);
 setvalue(27010 /*[Lüftung\Lüftungsstufe aktuell]*/ , 4);
 }
 else
 {
 //Luftfeuchtigkeitsdurchschnitt Küche
 $objectID = 49249 /*[Heizung\Thermo Küche\HUMIDITY]*/ ;
 $buffer = AC_GetLoggedValues($archiveID, $objectID, $starttime, $endtime, $limit);
 $anzahl = 0;
 $summe = 0;
 $totaldauer = 0;
 foreach ($buffer as $werte){
    $wert = $werte["Value"];
    $dauer = 24 * 3600;
    $anzahl = $anzahl + 1;
    $totaldauer = $totaldauer + $dauer;
   $summe = $summe + ($wert*$dauer);
    }
 echo "N-Werte: ".$anzahl. "
";
 $mittelw = $summe / $totaldauer;
 echo "Mittelwert Küche: " . $mittelw . "
";
 If ($mittelw == Null)
 $mittelw = GetValue(49249 /*[Heizung\Thermo Küche\HUMIDITY]*/);
 echo "Küche: " . GetValue(49249 /*[Heizung\Thermo Küche\HUMIDITY]*/);
 If(($mittelw + 2) < (GetValue(49249 /*[Heizung\Thermo Küche\HUMIDITY]*/)) or (GetValue(49249 /*[Heizung\Thermo Küche\HUMIDITY]*/) > 59) or (GetValue(41138 /*[Heizung\Thermo Schlafzimmer\HUMIDITY]*/) > 63) or (GetValue(18250 /*[Heizung\Thermo Wohnzimmer\HUMIDITY]*/ ) > 59) or (GetValue(45058 /*[Heizung\Thermo BAD\HUMIDITY]*/) > 65) or (GetValue(18069 /*[Lüftung\Werte\IPS2GPIO_iAQ LUFT\CO2]*/) > 1000) or (GetValue(45150 /*[Lüftung\Werte\IPS2GPIO_iAQ LUFT\TVOC]*/) > 500))
 {
 $befehl = 'v00102=2';
 IPS_SetScriptTimer(36077 /*[Lüftung\Programm\zurück auf auto]*/ , 18000);
 setvalue(27010 /*[Lüftung\Lüftungsstufe aktuell]*/ , 2);
 }
 else
 {
 $befehl = 'v00102=1';
 IPS_SetScriptTimer(36077 /*[Lüftung\Programm\zurück auf auto]*/ , 18000);
 setvalue(27010 /*[Lüftung\Lüftungsstufe aktuell]*/ , 1);
 }
 }
 If((GetValue(56798 /*[Lüftung\Werte\Zuluft]*/) + 1 < GetValue(54424 /*[Lüftung\Werte\Abluft]*/)) and (GetValue(39647 /*[Lüftung\Werte\Bypass]*/) == 1) and (GetValue(54424 /*[Lüftung\Werte\Abluft]*/) >= 22) or (GetValue(18069 /*[Lüftung\Werte\IPS2GPIO_iAQ LUFT\CO2]*/) > 1500) or (GetValue(45150 /*[Lüftung\Werte\IPS2GPIO_iAQ LUFT\TVOC]*/) > 700))
 {
 $befehl = 'v00102=3';
 IPS_SetScriptTimer(36077 /*[Lüftung\Programm\zurück auf auto]*/ , 18000);
 setvalue(27010 /*[Lüftung\Lüftungsstufe aktuell]*/ , 3);
 }
 else if (GetValue(56798 /*[Lüftung\Werte\Zuluft]*/) > 22)
 {
 $befehl = 'v00102=1';
 IPS_SetScriptTimer(36077 /*[Lüftung\Programm\zurück auf auto]*/ , 18000);
 setvalue(27010 /*[Lüftung\Lüftungsstufe aktuell]*/ , 1);
 }
 


    $header[] = "Connection: close";
    $header[] = "Origin: http://" . $kwlip;
    $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    $header[] = "Content-Type: text/plain;charset=UTF-8";
    $header[] = "Accept:  */*";
    $header[] = "Referer: http://" . $kwlip . "/anzeig.htm";
    $header[] = "Accept-Encoding: gzip, deflate";
    $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            $ch = curl_init('http://' . $kwlip . '/data/werte8.xml');
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_FAILONERROR, false);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $befehl);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
            //$result = false;
                $result = curl_exec($ch);
            curl_close($ch);
            if ($result === false)
            {
                  //wenn Anmeldung fehlschlägt --> anmelden
                  $header[] = "Connection: close";
                        $header[] = "Origin: http://" . $kwlip;
                        $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
                        $header[] = "Content-Type: text/plain;charset=UTF-8";
                        $header[] = "Accept:  */*";
                        $header[] = "Referer: http://" . $kwlip . "/info.htm";
                        $header[] = "Accept-Encoding: gzip, deflate";
                        $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


                    $ch = curl_init('http://' . $kwlip . '/info.htm');
                    curl_setopt($ch, CURLOPT_HEADER, false);
                    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                    curl_setopt($ch, CURLOPT_FAILONERROR, true);
                    curl_setopt($ch, CURLOPT_POST, true);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, 'v00402='.$kwlpasswort);
                    //curl_setopt($ch, CURLOPT_POSTFIELDS, 'v00102=2');
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
                    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
                    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
                    $result = curl_exec($ch);
                    curl_close($ch);
                  var_dump($result);

                }
 }
 
 IPS_RUNSCRIPT(51367 /*[Lüftung\Werte\Werte auslesen]*/);

?>

Viel Spaß damit, bei Fragen einfach melden

Abend!

Also ich würde mal die Daten ändern und das wieder raus nehmen… Such mal in Google nach „helios easy controls php“, dann ist der Thread hier gleich der 4. Beitrag. Eher ungünstig :wink:

Dann schick lieber die URL + PW an Leute per PN, wenn jemand schauen will.

>> Probiers mal mit FIDDLER
…ist deutlich angenehmer mit zu sniffen als mit Wireshark :slight_smile:

Grüße,
Chris

Ja ich habs passwort geändert und schicks euch per PN. Wär cool wenn sich das mal jemand anschauen könnte wo mehr php kenntnisse hat?

so jetzt anbei die Fiddle Aufzeichnung.
wie bekomme ich es jetzt hin die werte aus /data/werte8.xml in IPS variablen zu schreiben?

fiddler.zip (21.5 KB)

wenn ich den Befehl über Fiddle absetze bekomme ich die richtigen Daten zurück.
Wie kann ich das jetzt über php und IPS senden?;

POST http://192.168.2.31/data/werte8.xml HTTP/1.1
Host: 192.168.2.31
Connection: keep-alive
Content-Length: 20
Origin: http://192.168.2.31
User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36
Content-Type: text/plain;charset=UTF-8
Accept: /
Referer: http://192.168.2.31/anzeig.htm
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4

xml=/data/werte8.xml

Hat jemand eine Idee?

Hatte es ja mal kurz probiert, als du es online gestellt hast, aber habe einfach zu wenig Ahnung von HTTP POST :frowning:

Es gibt einige Beispiel-Codes zum Thema HTTP POST…am End probier einfach mal einige durch und irgendwann wird es schon klappen. Kaputt machen kannst du nichts, so lange du keine Befehle zum Setzen von Parametern nimmst :smiley: Aber mehr als verstellen und wieder zurückändern kann da auch nicht passieren.

…oder es meldet sich doch noch jemand hier, der den entscheidenden Tipp liefert :slight_smile:

Du musst irgendwie die VID (z.B. 00104) als Parameter im HTTP POST senden, damit du die VA zurück bekommst. Aber wie, da muss ich leider auch passen…

Grüße,
Chris

Post Inhalt kann du so übergeben:


curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml=/data/werte8.xml');

Und POST und GET Zeilen sind keine Header, sondern die Anfrage vor dem eigentlichen Header.
Somit ist es nicht bei CURLOPT_HTTPHEADER zu übergeben, sondern als eigene Option zu setzen ‚CURLOPT_POST‘ auf true.

So geht es jetzt bei mir.
Kommt ein XMLElement raus, aber die Zuordnung von ID zu VA mußt du am Index fest machen.


    $header[] = "Connection: close";
    $header[] = "Origin: http://xyz.myfritz.net";
    $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    $header[] = "Content-Type: text/plain;charset=UTF-8";
    $header[] = "Accept:  */*";
    $header[] = "Referer: http://xyz.myfritz.net/anzeig.htm";
    $header[] = "Accept-Encoding: gzip, deflate";
    $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            $ch = curl_init('http://xyz.myfritz.net/data/werte8.xml');
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_FAILONERROR, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml=/data/werte8.xml');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
            $result = curl_exec($ch);
            curl_close($ch);
            if ($result === false)
            {
					var_dump($result);
            }
            else
            {
					var_dump(new SimpleXMLElement($result));
            }

Michael

PS: Wenn das reicht, nimm die Site bloß vom Netz :slight_smile:

Jaaaaa es funktioniert ich bekomme die Werte :slight_smile:
Danke Michael, des hätt ich ja nie hinbekommen…geht einfach nix über ein php Fachmann :wink:

Endlich bekomm ich meine Daten aus der Lüftung ausgelesen…post das komplette script dann wenns fertig ist.

DANKE

Höhö… Fachmann…
Eher Generaldilettant.

Kann irgendwie alle ein bisschen, aber nix richtig. :smiley:

Freut mich wenn es läuft.
Hatte vor Wochen ein ähnliches Problem. Darum konnte ich viel kopieren :wink:

Michael

Nanana, Michael, nur nicht so bescheiden :slight_smile:

Und jetzt wo ihr es habt, am besten vlt. die ganzen Dyn-Adressen aus den Beiträgen ausbauen und natürlich die Firewall der Fritzbox wieder anpassen. Oder gleich einen neuen Dyn-Account :smiley:

Am finalen-Skript wäre ich auch interessiert, für den „Wie kann ich… 2.0“ Thread :slight_smile: HTTP POST fehlt da noch :wink:

Grüße,
Chris

Ja… war doch schon zu spät.
Ich habe die Adressen mal maskiert.
Michael

So jetzt hier das fertige Script, dank Michael.
Funktioniert super das auslesen und man benötigt nicht extra RS485 oder KNX Modul :slight_smile:

<?


$kwlip = "192.168.2.31";


    $header[] = "Connection: close";
    $header[] = "Origin: http://" . $kwlip;
    $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    $header[] = "Content-Type: text/plain;charset=UTF-8";
    $header[] = "Accept:  */*";
    $header[] = "Referer: http://" . $kwlip . "/anzeig.htm";
    $header[] = "Accept-Encoding: gzip, deflate";
    $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            $ch = curl_init('http://' . $kwlip . '/data/werte8.xml');
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_FAILONERROR, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml=/data/werte8.xml');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
            $result = curl_exec($ch);
            curl_close($ch);
            if ($result === false)
            {
                  //wenn Anmeldung fehlschlägt --> anmelden
                  $header[] = "Connection: close";
    					$header[] = "Origin: http://" . $kwlip;
    					$header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    					$header[] = "Content-Type: text/plain;charset=UTF-8";
    					$header[] = "Accept:  */*";
    					$header[] = "Referer: http://" . $kwlip . "/info.htm";
    					$header[] = "Accept-Encoding: gzip, deflate";
    					$header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            		$ch = curl_init('http://' . $kwlip . '/info.htm');
            		curl_setopt($ch, CURLOPT_HEADER, false);
		            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
		            curl_setopt($ch, CURLOPT_FAILONERROR, true);
		            curl_setopt($ch, CURLOPT_POST, true);
		            curl_setopt($ch, CURLOPT_POSTFIELDS, 'v00402=12345678');
		            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
		            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
		            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
		            $result = curl_exec($ch);
		            curl_close($ch);
                  var_dump($result);
                   
            }
            else
            {
                  $simple = simplexml_load_string($result);
                  //print_r($simple); ausgelesene Variablen anzeigen
						
						
						$aussenluft = str_replace('.', ',', str_replace('"', '', $simple->VA[10]));
						setvalue(36805 /*[Lüftung\Werte\Außenluft]*/ , $aussenluft);
						$zuluft = str_replace('.', ',', str_replace('"', '', $simple->VA[11]));
						setvalue(56798 /*[Lüftung\Werte\Zuluft]*/ , $zuluft);
						$fortluft = str_replace('.', ',', str_replace('"', '', $simple->VA[12]));
						setvalue(23221 /*[Lüftung\Werte\Fortluft]*/ , $fortluft);
						$abluft = str_replace('.', ',', str_replace('"', '', $simple->VA[13]));
						setvalue(54424 /*[Lüftung\Werte\Abluft]*/ , $abluft);
						$zuluftrrp = str_replace('.', ',', str_replace('"', '', $simple->VA[52]));
						setvalue(52558 /*[Lüftung\Werte\Zuluft Drehzahl]*/ , $zuluftrrp);
						$abluftrrp = str_replace('.', ',', str_replace('"', '', $simple->VA[53]));
						setvalue(47051 /*[Lüftung\Werte\Abluft Drehzahl]*/ , $abluftrrp);
                  $bypass = str_replace('.', ',', str_replace('"', '', str_replace(']', '', $simple->VA[92])));
                  if ($bypass == 1)
                  {
                  setvalue(39647 /*[Lüftung\Werte\Bypass]*/  , true);
                  }
                  else
                  {
                  setvalue(39647 /*[Lüftung\Werte\Bypass]*/  , false);
                  }
                  
						

            }
            
 



?>

Super. Schön das es funktioniert.
Ich hätte das mit den Auslesen der XML zwar anders gelöst (wozu noch mal nach Json wandeln ?), aber ich weiß ja auch nicht welche Daten da wirklich relevant sind. Habe das Teil ja nicht :slight_smile:
Aber kannst ja mal das probieren als Wert:
$simple->VA[104] bzw. Statt 104 der Index von dem Wert von den ganzen VA-Feldern.

Michael

na toll :slight_smile: ich bastel mir da ewig ein Wolf…weil ichs nicht schaffte aus der struktur die variable rauszubekommen^^
so funktionierts auf jedenfall viel besser :wink: habs im script geändert --> danke

Bitte sehr. Gern geschehen.
Michael

Kannst Du mal bitte einen Screenshot Deiner variablen posten?
ich möchte das mal mit meiner KWL 300 ausprobieren und kann nicht erkennen welche Variablen Typen Du nutzt.
Float, Integer …

Danke,
loerdy

:slight_smile:

FLOAT natürlich ‚kommawerte‘ :wink:

Schade, irgendwie passt das bei mir nicht.
Ein paar Werte werden zwar geschrieben, nur nicht in die passenden Variablen.
:frowning:

Wäre zu schön gewesen … :smiley:
hast Du evtl eine andere Firmware?
Bei mir ist es die 2.16

Lördy

stimmt sorry klar ich musste auch was ändern ab der Version 2.16 weil die die Ausgelesenen Werte verschoben haben. Hiermit müsste es funktionieren:


<?


$kwlip = "192.168.2.31";


    $header[] = "Connection: close";
    $header[] = "Origin: http://" . $kwlip;
    $header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    $header[] = "Content-Type: text/plain;charset=UTF-8";
    $header[] = "Accept:  */*";
    $header[] = "Referer: http://" . $kwlip . "/anzeig.htm";
    $header[] = "Accept-Encoding: gzip, deflate";
    $header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            $ch = curl_init('http://' . $kwlip . '/data/werte8.xml');
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
            curl_setopt($ch, CURLOPT_FAILONERROR, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, 'xml=/data/werte8.xml');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
            $result = curl_exec($ch);
            curl_close($ch);
            if ($result === false)
            {
                  //wenn Anmeldung fehlschlägt --> anmelden
                  $header[] = "Connection: close";
    					$header[] = "Origin: http://" . $kwlip;
    					$header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36";
    					$header[] = "Content-Type: text/plain;charset=UTF-8";
    					$header[] = "Accept:  */*";
    					$header[] = "Referer: http://" . $kwlip . "/info.htm";
    					$header[] = "Accept-Encoding: gzip, deflate";
    					$header[] = "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4";


            		$ch = curl_init('http://' . $kwlip . '/info.htm');
            		curl_setopt($ch, CURLOPT_HEADER, false);
		            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
		            curl_setopt($ch, CURLOPT_FAILONERROR, true);
		            curl_setopt($ch, CURLOPT_POST, true);
		            curl_setopt($ch, CURLOPT_POSTFIELDS, 'v00402=12345678');
		            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);
		            curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
		            curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
		            $result = curl_exec($ch);
		            curl_close($ch);
                  var_dump($result);
                   
            }
            else
            {
                  $simple = simplexml_load_string($result);
                  //print_r($simple); //ausgelesene Variablen anzeigen
						
						
						$aussenluft = str_replace('.', ',', str_replace('"', '', $simple->VA[12]));
						setvalue(36805 /*[Lüftung\Werte\Außenluft]*/ , $aussenluft);
						$zuluft = str_replace('.', ',', str_replace('"', '', $simple->VA[13]));
						setvalue(56798 /*[Lüftung\Werte\Zuluft]*/ , $zuluft);
						$fortluft = str_replace('.', ',', str_replace('"', '', $simple->VA[14]));
						setvalue(23221 /*[Lüftung\Werte\Fortluft]*/ , $fortluft);
						$abluft = str_replace('.', ',', str_replace('"', '', $simple->VA[15]));
						setvalue(54424 /*[Lüftung\Werte\Abluft]*/ , $abluft);
						$zuluftrrp = str_replace('.', ',', str_replace('"', '', $simple->VA[54]));
						setvalue(52558 /*[Lüftung\Werte\Zuluft Drehzahl]*/ , $zuluftrrp);
						$abluftrrp = str_replace('.', ',', str_replace('"', '', $simple->VA[55]));
						setvalue(47051 /*[Lüftung\Werte\Abluft Drehzahl]*/ , $abluftrrp);
						$luefterstufe = str_replace('.', ',', str_replace('"', '', $simple->VA[10]));
                  setvalue(33732 /*[Lüftung\Werte\Lüfterstufe]*/  , $luefterstufe);

						$bypass = str_replace('.', ',', str_replace('"', '', str_replace(']', '', $simple->VA[94])));
                  if ($bypass == 1)
                  {
                  setvalue(39647 /*[Lüftung\Werte\Bypass]*/  , true);
                  }
                  else
                  {
                  setvalue(39647 /*[Lüftung\Werte\Bypass]*/  , false);
                  }
                  
						

            }
            
 



?>