+ Antworten
Seite 1 von 5 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 42
  1. #1
    Registriert seit
    Sep 2012
    Ort
    Stuttgart - Remshalden
    Beiträge
    256

    Standard 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:
    PHP-Code:
    <?


    $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($chCURLOPT_HEADERfalse);
                
    curl_setopt($chCURLOPT_HTTPHEADER$header);
                
    curl_setopt($chCURLOPT_FAILONERRORtrue);
                
    curl_setopt($chCURLOPT_POSTtrue);
                
    curl_setopt($chCURLOPT_POSTFIELDS'xml=/data/werte8.xml');
                
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
    curl_setopt($chCURLOPT_CONNECTTIMEOUT_MS1000);
                
    curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
                
    curl_setopt($chCURLOPT_TIMEOUT_MS1000);
                
    $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($chCURLOPT_HEADERfalse);
                        
    curl_setopt($chCURLOPT_HTTPHEADER$header);
                        
    curl_setopt($chCURLOPT_FAILONERRORtrue);
                        
    curl_setopt($chCURLOPT_POSTtrue);
                        
    curl_setopt($chCURLOPT_POSTFIELDS'v00402='.$kwlpasswort);
                        
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT_MS1000);
                        
    curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
                        
    curl_setopt($chCURLOPT_TIMEOUT_MS1000);
                        
    $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.

    PHP-Code:
    <?

    $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"\n";
    $mittelw $summe $totaldauer;
    echo 
    "Mittelwert Bad: " $mittelw "\n";
     

     
    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"\n";
     
    $mittelw $summe $totaldauer;
     echo 
    "Mittelwert Küche: " $mittelw "\n";
     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]*/) + 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($chCURLOPT_HEADERfalse);
                
    curl_setopt($chCURLOPT_HTTPHEADER$header);
                
    curl_setopt($chCURLOPT_FAILONERRORfalse);
                
    curl_setopt($chCURLOPT_POSTtrue);
                
    curl_setopt($chCURLOPT_POSTFIELDS$befehl);
                
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
    curl_setopt($chCURLOPT_CONNECTTIMEOUT_MS1000);
                
    curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
                
    curl_setopt($chCURLOPT_TIMEOUT_MS1000);
                
    //$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($chCURLOPT_HEADERfalse);
                        
    curl_setopt($chCURLOPT_HTTPHEADER$header);
                        
    curl_setopt($chCURLOPT_FAILONERRORtrue);
                        
    curl_setopt($chCURLOPT_POSTtrue);
                        
    curl_setopt($chCURLOPT_POSTFIELDS'v00402='.$kwlpasswort);
                        
    //curl_setopt($ch, CURLOPT_POSTFIELDS, 'v00102=2');
                        
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT_MS1000);
                        
    curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
                        
    curl_setopt($chCURLOPT_TIMEOUT_MS1000);
                        
    $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
    Angehängte Grafiken Angehängte Grafiken  
    Geändert von PhilippS (03.10.17 um 17:47 Uhr)

  2. #2
    Registriert seit
    Sep 2014
    Ort
    Limeshain (Hessen)
    Beiträge
    5,275

    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

    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

    Grüße,
    Chris
    Geändert von Bayaro (19.07.15 um 01:39 Uhr)
    IP-Symcon Module >> www.bayaro.net << Verfügbare Module: BatterieMonitor, BundesligaTabelle, Enigma2BY, HeizölPreise, Helios, Horoskop, HostMonitor, IPSInformations, MELCloud, Müllabfuhr, PJLink, RSS, TankerkönigSpritpreise, xREL
    IPS Unlimited, ~1200 Scripte, ~7000 Variablen

  3. #3
    Registriert seit
    Sep 2012
    Ort
    Stuttgart - Remshalden
    Beiträge
    256

    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?

  4. #4
    Registriert seit
    Sep 2012
    Ort
    Stuttgart - Remshalden
    Beiträge
    256

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

  5. #5
    Registriert seit
    Sep 2012
    Ort
    Stuttgart - Remshalden
    Beiträge
    256

    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

  6. #6
    Registriert seit
    Sep 2012
    Ort
    Stuttgart - Remshalden
    Beiträge
    256

    Hat jemand eine Idee?

  7. #7
    Registriert seit
    Sep 2014
    Ort
    Limeshain (Hessen)
    Beiträge
    5,275

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

    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 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

    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
    IP-Symcon Module >> www.bayaro.net << Verfügbare Module: BatterieMonitor, BundesligaTabelle, Enigma2BY, HeizölPreise, Helios, Horoskop, HostMonitor, IPSInformations, MELCloud, Müllabfuhr, PJLink, RSS, TankerkönigSpritpreise, xREL
    IPS Unlimited, ~1200 Scripte, ~7000 Variablen

  8. #8
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,621

    Post Inhalt kann du so übergeben:
    PHP-Code:
    curl_setopt($chCURLOPT_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.

    PHP-Code:
        $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($chCURLOPT_HEADERfalse);
                
    curl_setopt($chCURLOPT_HTTPHEADER$header);
                
    curl_setopt($chCURLOPT_FAILONERRORtrue);
                
    curl_setopt($chCURLOPT_POSTtrue);
                
    curl_setopt($chCURLOPT_POSTFIELDS'xml=/data/werte8.xml');
                
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
    curl_setopt($chCURLOPT_CONNECTTIMEOUT_MS1000);
                
    curl_setopt($chCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_1);
                
    curl_setopt($chCURLOPT_TIMEOUT_MS1000);
                
    $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
    Geändert von Nall-chan (21.07.15 um 05:53 Uhr)
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  9. #9
    Registriert seit
    Sep 2012
    Ort
    Stuttgart - Remshalden
    Beiträge
    256

    Jaaaaa es funktioniert ich bekomme die Werte :-)
    Danke Michael, des hätt ich ja nie hinbekommen......geht einfach nix über ein php Fachmann ;-)

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

    DANKE

  10. #10
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,621

    Höhö... Fachmann...
    Eher Generaldilettant.

    Kann irgendwie alle ein bisschen, aber nix richtig.

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

    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

Ähnliche Themen

  1. http://Pass.Telekom.de auslesen - LTE Traffic
    Von FRAD im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 6
    Letzter Beitrag: 08.07.16, 14:07
  2. IP-Symcon über HTTP Befehl steuern?
    Von thka im Forum Skripte, PHP, SQL
    Antworten: 1
    Letzter Beitrag: 30.04.12, 17:18
  3. Zugriff über HTTP mit Passwort
    Von critical_limit im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 4
    Letzter Beitrag: 13.10.11, 09:57
  4. Schalten über http-link
    Von axbl im Forum WebFront
    Antworten: 1
    Letzter Beitrag: 30.06.10, 06:31
  5. SMS Benachrichtigung über SMS Gateway per HTTP
    Von s.jungen im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 5
    Letzter Beitrag: 13.12.09, 23:41