Ankündigung

Einklappen
Keine Ankündigung bisher.

Heliotherm Home Control

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [-] Heliotherm Home Control

    Hi,

    Bevor ich mir die zum testen bestelle, hat schon jemand die heliotherm home control ausprobiert ?

    Heliotherm home control

    lg,

    #2
    Falls die info jemand braucht

    Homecontrol programm ist ok, aber hat keinerlei funktionen zum loggen, also nutzen eher gegen 0.

    Meine einzige alternative blieb daher nen php script zu bauen welches sich mit dem moxa verbindet und die daten selbst von der WP abfrägt.

    Nach ein bisschen debuggen im netzwerk monitor läuft dies nun auch stabil und alles landet sauber in einer mysql.

    Bei der heliotherm WP kann darüber sogut wie jeder wert und Betriebszeiten etc abgefragt werden.

    Kommentar


      #3
      Ich sag schonmal Danke für die Infos - meine wird in 2-3 Wochen in Betrieb genommen werden, dann kontaktiere ich Dich vielleicht bei Fragen, ok ?
      Patrick

      Kommentar


        #4
        Ja gerne, war ne ganz schöne fuchserei das rauszufinden.

        Welche wp bekomst du ? wir haben eine HP16S18W-Web 17KW + Moxa Nport 311 Modem.

        Angeblich ist das ansprechen der Schnittstelle bei den einzelnen Modellen anders (verschiedene Befehle).

        Hier noch ein screenshot wie es nun aussieht, ich zieh mir die ganzen werte alle 5 minuten in ne mysql und auswertung geht gut über das volkszähler script.
        Angehängte Dateien

        Kommentar


          #5
          Nur eine HP05EWEB - Flachkollektor, Modem ist noch nicht hier, weiß ich daher noch nicht.
          Patrick

          Kommentar


            #6
            nachdem mich doch noch einige Anfragen erreicht haben, hier mein script (php) zur Abfrage meiner Heliotherm WP.

            Bei mir läuft es mit einer HP16S-18W-WEB, ein anderer hat es auch mit einer HP12E-M-WEB zum laufen bekommen.

            PHP-Code:
            <?php
            /**
             * Created by JetBrains PhpStorm.
             * Date: 24.07.13
             * Time: 21:05
             */


            $host 'tcp://192.168.1.41:4001';




            $command_array=array();
            $command_array[]='02 FD D0 E0 00 00 05 7E 4C 49 4E 3B 4C';
            $command_array[]='02 FD D0 E0 00 00 05 7E 52 49 44 3B 70';
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 35 37 3B B6'// SP, NR=57 // name = HKR Sollwert+
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 34 3B E9';// MP, NR=4 // name = Temp  Rücklauf
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 33 3B E0';// MP, NR=3 // name = Temp  Vorlauf
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 39 3B FE';// MP, NR=9 // name = Temp  Sauggas
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 30 3B B6';// MP, NR=20 // name = Niederdruck (bar)
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 31 32 3B B5'// NR 12 temp verdampfung
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 31 3B B5'// 21 hochdruck (bar)
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 31 33 3B B6'// 13 tmp kondensation
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 37 3B EC'// 7 EQ austritt
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 36 3B EF'// 6 EQ_eintritt
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 32 3B B0'// 22 HKR Pumpe
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 30 3B E5'// 0 tmp aussen
            $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 32 3B E3'// 2 tmp brauchwasser
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 31 31 3B B0'// 11 tmp frischwasser ist wert
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 35 3B B9 '// 25 warmwasser vorrang
            $command_array[]='02 FD D0 E0 00 00 0A 7E 53 50 2C 4E 52 3D 31 30 3B 91'// frischwasserpumpe
            $command_array[]='02 FD D0 E0 00 00 0B 7E 53 50 2C 4E 52 3D 31 37 32 3B CD'// 172 bsz verdichter betriebsstunden hkr
            $command_array[]='02 FD D0 E0 00 00 0B 7E 53 50 2C 4E 52 3D 31 37 31 3B C8'// 171 bsz verdichter betriebsstunden ww
            $command_array[]='02 FD D0 E0 00 00 0B 7E 53 50 2C 4E 52 3D 31 37 33 3B CE'// 171 bsz verdichter betriebsstunden gesamt
            $command_array[]='02 FD D0 E0 00 00 0A 7E 53 50 2C 4E 52 3D 38 33 3B 8F'// 83 ww soll temp
            $command_array[]='02 FD D0 E0 00 00 0A 7E 53 50 2C 4E 52 3D 38 35 3B 85'// 85 ww min temp
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 35 36 3B B5'// 56 verd anforderung
            $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 35 30 3B BF'// 50 fw pumpe 1/0
            $command_array[]='02 FD D0 E0 00 00 06 7E 4C 4F 55 54 3B 92'// logout

            $result_array=array();


            try {
                
            $fp stream_socket_client($host$errno$errstr,30);
                
            stream_set_blocking($fp,0);
            } catch(
            Exception $e) {
                echo 
            $e->getMessage();
            }
            $stream='';
            global 
            $stream;
            global 
            $fp;



            if (!
            $fp) {
                echo 
            "ERROR: $errno - $errstr<br />\n";
            } else {


                foreach(
            $command_array as $id => $command) {
                    if (
            $command!='') {
                        
            request($command);
                        
            $stream.='<br>';
                    }

                }


                echo 
            '<pre>';
                
            print_r($result_array);
                echo 
            '</pre>';

                echo 
            $stream;


                
            fclose($fp);



            }

            function 
            hexconv($str) {

                
            $arr explode(' ',$str);
                
            $new_str '';
                foreach (
            $arr as $key => $val) {
                    
            $new_str.=chr(hexdec($val));
                }

                return 
            $new_str;

            }

            function 
            request($command) {
                global 
            $fp,$stream,$result_array;

                
            $command hexconv($command);
                echo 
            'query:'.$command.':end<br>';
                
            fwrite($fp$command);

                
            sleep(1);
                
            $str '';
                while (
            strlen($c=fread($fp,1024))>0) {
                    
            $stream .=$c;
                    
            $str.=$c;
                }

                
            //
                
            if (strlen($str)>40) {
                    
            $str=substr($str,strpos($str,','),strlen($str));
                    
            $str=substr($str,0,strpos($str,';'));
                    
            $resp str_replace(',','&',$str);
                    
            parse_str($resp,$arr);
                    
            $result_array[]=$arr;
                }

            }

            Mangels Zeit habe ich daraus aber noch kein .py script gebastelt für smarthome.py, sondern bei mir läufts momentan nur auf einem nas und mein homeserver holt sich die daten davon mittels webabfrage.

            Kommentar


              #7
              Hallo,

              auch ich bin Besitzer einer Heliotherm Wärmepumpe (HP20L-WEB), und habe mir HomeControl angesehen - ganz nett.
              Aber natürlich muss das Ding auf die Visu - in meinem Fall der HS.

              Für die Anbindung nutze ich derzeit die Serielle-Schnittstelle des Wiregate.
              PlugIn dafür ist in Arbeit aber leider sind meine Perl Kenntnisse eher dürftig ... vielleicht findet sich ja jemand der mich unterstützen kann.
              Grüße
              Christian
              __________________

              Kommentar


                #8
                Hallo fanta2k,

                ok, habe mir nun zu Hause einen webserver installiert damit ich mal das php script ausführen kann. Ich bin leider kein fähiger Programmierer, eher ein Bastler.

                Ehrlich gesagt weiß ich grad nicht wie ich die Daten nun so schick aufbereitet bekomme wie Du in dem Diagramm. Server läuft nun und ich könnte zumindest regelmäßig die Daten abfragen und speichern.

                Vielen Dank schonmal !

                Patrick
                Patrick

                Kommentar


                  #9
                  hi,

                  bei dem einen screen hatte ich noch einen volkszähler als auswertung laufen (volkszaehler.org - home) da musst du die werte dann nur in die mysql tabelle von den ding reinschreiben, rest macht der volkszähler.

                  ansonsten hab ich bei mir noch ne lösung für den HS laufen (per webabfrage auf den output des scripts) um auch alle werte am bus zu haben.

                  Kommentar


                    #10
                    Hallo,
                    wow - ich bin begeistert! Tolle Arbeit, fanta2k. Ich bin in den letzten Wochen schier verzweifelt mit dem "Homecontrol". Die Software an und für sich ist ja ganz nett gedacht, das Einstellen der Zeitprogramme usw funktioniert ja auch tadellos, aber das Auswerten der "Trenddaten" (so nennt das Heliotherm) ist ja wirklich eine Frechheit, oder was denkt ihr?
                    Deshalb hab ich mich einmal umgesehen, ob es nicht Alternativen gäbe. Dein Ansatz klingt echt genial, ich habe eine HP12S16W-WEB. Leider sind meine php-Kenntnisse nur mager - glaubst du, das könnte auch mein RasperryPI erledigen, der schon die PV-Erträge loggt (mit Solarview@Fritzbox) und später einmal, wenn ich es endlich schaffe, die "Smartvisu" betreibt?
                    Evtl dürfte ich dich bei ein paar Fragen belästigen, bitte danke. Großes Lob aber nochmal schon im Voraus, die aufbereiteten Daten sehen so schon viel besser aus als im Homecontrol :-)
                    lg Harald

                    Kommentar


                      #11
                      Hallo Harald,

                      nachdem Fanta2k mir auch gut geholfen hat kann ich Dir vielleicht weiterhelfen.

                      Bei mir läuft ein Raspberry der über die 2 USB Schnittstellen 2 Stromzähler abliest über das Volkszähler Script und über LAN frägt er meine Heliotherm ab.

                      Ich hab einen Crontab Eintrag erstellt der mir das php script alle paar Minuten ausführt und die Daten in die selbe Datenbank schreibt wie die Volkszähler Daten.

                      Wie weit kommst du, wo hängst ? Wenn es es geschafft hast Volkszähler Script ohne Fehlermeldung aufzurufen im Browser ist es nur noch ein kleiner Schritt.

                      Gruß
                      Patrick
                      Patrick

                      Kommentar


                        #12
                        Hallo Patrick,

                        ich hänge mich da auch mal mit ran

                        Hab auch ne HT-WP und würde gerne über den Volkszähler und das Script von fanta2k die Daten auslesen. Das PHP-Script ist das erste mal gelaufen und hat Daten geliefert, Volkszähler ist auf meinem PI installiert und das Frontend kann aufgerufen werden - Demodaten (Wetter BW z.B.) werden angezeigt.

                        Nun kommen meine "mangelhaften" PHP-Kentnisse zum tragen - kannst du mir weiter helfen, wie ich die Daten in die mysql.DB bekomme und über Volkszähler anzeigen lassen kann?
                        ______________________
                        Grüße
                        Klaus

                        Kommentar


                          #13
                          da kannste das script anbei nutzen, hatte ich noch irgendwo rumliegen

                          <?php
                          /**
                          * Created by JetBrains PhpStorm.
                          * Date: 24.07.13
                          * Time: 21:05

                          */




                          /**
                          * configuration
                          */

                          //die('');

                          $host = 'tcp://192.168.1.41:4001';

                          define('_DB_HOST','localhost');
                          define('_DB_USER','root');
                          define('_DB_PASS','');
                          define('_DB_DB','zaehler');

                          $timer_start = microtime();

                          $command_array=array();
                          $command_array[]='02 FD D0 E0 00 00 05 7E 4C 49 4E 3B 4C';
                          $command_array[]='02 FD D0 E0 00 00 05 7E 52 49 44 3B 70';
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 35 37 3B B6'; // SP, NR=57 // name = HKR Sollwert+
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 34 3B E9';// MP, NR=4 // name = Temp Rücklauf
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 33 3B E0';// MP, NR=3 // name = Temp Vorlauf
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 39 3B FE';// MP, NR=9 // name = Temp Sauggas
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 30 3B B6';// MP, NR=20 // name = Niederdruck (bar)
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 31 32 3B B5'; // NR 12 temp verdampfung
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 31 3B B5'; // 21 hochdruck (bar)
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 31 33 3B B6'; // 13 tmp kondensation
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 37 3B EC'; // 7 EQ austritt
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 36 3B EF'; // 6 EQ_eintritt
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 32 3B B0'; // 22 HKR Pumpe
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 30 3B E5'; // 0 tmp aussen
                          $command_array[]='02 FD D0 E0 00 00 09 7E 4D 50 2C 4E 52 3D 32 3B E3'; // 2 tmp brauchwasser
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 31 31 3B B0'; // 11 tmp frischwasser ist wert
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 32 35 3B B9 '; // 25 warmwasser vorrang
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 53 50 2C 4E 52 3D 31 30 3B 91'; // frischwasserpumpe
                          $command_array[]='02 FD D0 E0 00 00 0B 7E 53 50 2C 4E 52 3D 31 37 32 3B CD'; // 172 bsz verdichter betriebsstunden hkr
                          $command_array[]='02 FD D0 E0 00 00 0B 7E 53 50 2C 4E 52 3D 31 37 31 3B C8'; // 171 bsz verdichter betriebsstunden ww
                          $command_array[]='02 FD D0 E0 00 00 0B 7E 53 50 2C 4E 52 3D 31 37 33 3B CE'; // 171 bsz verdichter betriebsstunden gesamt
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 53 50 2C 4E 52 3D 38 33 3B 8F'; // 83 ww soll temp
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 53 50 2C 4E 52 3D 38 35 3B 85'; // 85 ww min temp
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 35 36 3B B5'; // 56 verd anforderung
                          $command_array[]='02 FD D0 E0 00 00 0A 7E 4D 50 2C 4E 52 3D 35 30 3B BF'; // 50 fw pumpe 1/0
                          $command_array[]='02 FD D0 E0 00 00 06 7E 4C 4F 55 54 3B 92'; // logout

                          $vz = array();
                          $vz[57]=12;
                          $vz[3]=13;
                          $vz[4]=14;

                          $vz[9]=27;
                          $vz[20]=15;
                          $vz[12]=18;
                          $vz[21]=16;
                          $vz[13]=19;
                          $vz[7]=20;
                          $vz[6]=21;
                          $vz[0]=22;
                          $vz[11]=24;
                          $vz[2]=23;
                          $vz[172]=25;
                          $vz[171]=26;

                          $vz[22]=28; // HKR Pumpe
                          $vz[10]=30; // verdichter
                          $vz[50]=29; // fw pumpe

                          // no changes below here

                          $result_array=array();


                          try {
                          $fp = stream_socket_client($host, $errno, $errstr,30);
                          stream_set_blocking($fp,0);
                          } catch(Exception $e) {
                          echo $e->getMessage();
                          }
                          $stream='';
                          global $stream;
                          global $fp;



                          if (!$fp) {
                          echo "ERROR: $errno - $errstr<br />\n";
                          } else {


                          foreach($command_array as $id => $command) {
                          if ($command!='') {
                          request($command);
                          $stream.='<br>';
                          }

                          }

                          fclose($fp);

                          $link = mysql_connect(_DB_HOST, _DB_USER, _DB_PASS);
                          if (!$link) {
                          die('Verbindung schlug fehl: ' . mysql_error());
                          }
                          mysql_select_db(_DB_DB, $link);

                          $timestamp = time().'000';

                          $beschr = array();

                          $cache = fopen('wp_cache.html','w+');

                          foreach ($result_array as $id => $param) {

                          $beschr[]=array('id'=>$vz[$param['ID']],'txt'=>$param['NAME']);

                          $str = '<val code="'.$vz[$param['ID']].'">'.$param['VAL'];
                          fwrite($cache,$str);

                          if (isset($param['ID']) && isset($vz[$param['ID']])) {
                          $query = "INSERT INTO data (channel_id,timestamp,value) VALUES ('".$vz[$param['ID']]."','".$timestamp."','".$param['VAL']."')";
                          $result = mysql_query($query);
                          if (!$result) {
                          die('Ungültige Anfrage: ' . mysql_error());
                          }
                          }
                          // echo '</div>';
                          fwrite($cache,'</val>');
                          }
                          mysql_close($link);

                          // echo '<br>';
                          foreach ($beschr as $id => $key) {
                          $str= 'Code: '.$key['id'].' Wert:'.$key['txt'].'<br/>';
                          fwrite($cache,$str);
                          }

                          $timer_stop = microtime();
                          $time_start = explode(' ', $timer_start);
                          $time_end = explode(' ', $timer_stop);
                          $timer_total = number_format(($time_end[1] + $time_end[0] - ($time_start[1] + $time_start[0])), 3);


                          $str = "runtime $timer_total seconds\n";
                          fwrite($cache,$str);

                          fclose($cache);

                          }

                          function hexconv($str) {

                          $arr = explode(' ',$str);
                          $new_str = '';
                          foreach ($arr as $key => $val) {
                          $new_str.=chr(hexdec($val));
                          }

                          return $new_str;

                          }

                          function request($command) {
                          global $fp,$stream,$result_array;

                          $command = hexconv($command);
                          // echo 'query:'.$command.':end<br>';
                          fwrite($fp, $command);

                          //sleep(1);
                          usleep(500000);
                          $str = '';
                          while (strlen($c=fread($fp,1024))>0) {
                          $stream .=$c;
                          $str.=$c;
                          }

                          //
                          if (strlen($str)>40) {
                          $str=substr($str,strpos($str,','),strlen($str));
                          $str=substr($str,0,strpos($str,';'));
                          $resp = str_replace(',','&',$str);
                          parse_str($resp,$arr);
                          $result_array[]=$arr;
                          }

                          }
                          den bereich

                          $vz = array();
                          $vz[57]=12;
                          $vz[3]=13;
                          $vz[4]=14;
                          ....

                          ID des Wertes von der WP, mit ID des channels im volkszähler.

                          und ganz oben db zugangsdaten.

                          Kommentar


                            #14
                            Super fanta2K,

                            werd ich heute Abend gleich mal einbauen und testen .
                            ______________________
                            Grüße
                            Klaus

                            Kommentar


                              #15
                              Hallo fanta2k,

                              irgend was mach ich falsch :-/

                              Hab dein script entsprechend angepasst:

                              z.B.
                              Code:
                              $vz = array();
                              $vz[57]=55337070-998b-11e3-ad7b-d55255e60a31;
                              $vz[3]=295b1f50-998d-11e3-9fec-29beaad01635;
                              $vz[4]=12cda660-998d-11e3-94b1-73335fafe85b;
                              Bekomme dann aber beim Laufen lassen diesen Fehler:

                              Code:
                              root@pi-wire:/home/loxone# /usr/bin/php ./ht_wp.php
                              PHP Parse error:  syntax error, unexpected 'b1f50' (T_STRING) in /home/loxone/ht
                              _wp.php on line 55
                              Die angemeckerte Zeile 55 ist die dritte Zeile oben.
                              ______________________
                              Grüße
                              Klaus

                              Kommentar

                              Lädt...
                              X