Ankündigung

Einklappen
Keine Ankündigung bisher.

Dimplex Wärmepumpe auslesen

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

    #16
    dazu musst du einen LBS schreiben. Der ruft dann die Webseite ab, analysiert das XML und setzt dann den Ausgang.

    Kommentar


      #17
      Zitat von jonofe Beitrag anzeigen
      dazu musst du einen LBS schreiben. Der ruft dann die Webseite ab, analysiert das XML und setzt dann den Ausgang.
      Ja wenn da so einfach wäre

      Ich hab noch nie irgendwas mit PHP gemacht, hab mir zwar schon zahlreiche Bausteine angesehen aber irgendwie sehe ich da nur Klammern und seltesame Worte

      Kommentar


        #18
        Zitat von 19andy89 Beitrag anzeigen
        ... aber irgendwie sehe ich da nur Klammern und seltesame Worte
        Dann hast du noch nie LISP gesehen. Dagegen findet man in PHP so gut wie keine Klammern und viel Klartext.

        Gruß Andreas

        -----------------------------------------------------------
        Immer wieder benötigt: KNX-Grundlagen PDF Englisch, PDF Deutsch oder
        Deutsche Version im KNX-Support.

        Kommentar


          #19
          OK jetzt hast du mich total verwirrt... was bitte ist LISP

          Kommentar


            #20
            Wenn's mit der "KI" so weiter geht (dank Google & Co.) kann man vielleicht in einigen Jahren seinem Smart-Implantat einfach sagen, was man möchte: "Hey Google - programmier' mal fix nen LBS, der XML parsed und so! Danke."
            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

            Kommentar


              #21
              Zitat von gaert Beitrag anzeigen
              Wenn's mit der "KI" so weiter geht (dank Google & Co.) kann man vielleicht in einigen Jahren seinem Smart-Implantat einfach sagen, was man möchte: "Hey Google - programmier' mal fix nen LBS, der XML parsed und so! Danke."
              Das wäre klasse wenn das gehen würde

              Aber jetzt mal Spaß bei Seite... hat den keiner lust mir ein paar Tipps zu geben wie man da Anfagen soll...
              Wenn mal das Grundgerüst steht würd ich mal behaupten das ich es schon irgendwie schaffen würde weitere "Parmater" der Wärmepumpe zu integrieren.

              Kommentar


                #22
                PHP bringt im Grunde schon alles mit, was Du brauchst: file_get_contents(URL) erledigt den Abruf und die Klasse SimpleXMLElement() erledigt das Parsen. Der Rest ist dann Fehlerbehandlung und LBS-Gerüst (das ja im Grunde automatisch angelegt wird, wenn Du einen LBS erstellst).
                EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                Kommentar


                  #23
                  So... hab jetzt mal mithilfe ein paar "anderer" Bausteine einen nachgebaut
                  Ob das ganze funktioniert weiß ich nicht Vielleicht hat mal jemand lust und schaut ihn sich kurz an.
                  Da es sich bei mir um meine "ersten" versuche in PHP handelt wäre ich echt sehr dankbar.

                  Also bei eingabe von 192.168.178.20/usr-cgi/xml.cgi?|A|1|1 erhalte ich wie schon erwähnt die Antwort:

                  <PCOWEB>
                  <PCO>
                  <ANALOG>
                  <VARIABLE>
                  <INDEX>1</INDEX>
                  <VALUE>2.9</VALUE>
                  </VARIABLE>
                  </ANALOG>
                  </PCO>
                  </PCOWEB>

                  So nun meine Abfrage dazu:
                  PHP-Code:
                  ###[DEF]###
                   [name =Dimplex NWPM ]

                   [e#1 =Trigger !=0]
                   [e#2 =IP]

                   [a#1 =A-temp. ]


                  ###[/DEF]###



                  ###[HELP]###
                  Auslesen einer Dimplex Waermepumpe mittels einer NWPM Karte


                  E1: Trigger
                  E2: IP Adresse Dimplex NWMP

                  A1: Außentemperatur


                  ###[/HELP]###

                  ###[LBS]###
                  <?
                   function LB_LBSID($id) {

                   if ($E=getLogicEingangDataAll($id)) {

                   if (getLogicElementStatus($id)==0) {
                   if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
                   setLogicLinkAusgang($id,1,0);
                   setLogicElementStatus($id,1);

                   callLogicFunctionExec(LBSID,$id);
                   }
                   } else {
                   //###
                   }

                   }

                   }
                   ?>
                   ###[/LBS]###

                   ###[EXEC]###
                  <?
                   require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                   set_time_limit(15);

                   sql_connect();

                   //----------------------------------------------------------------------------------------------------------------------------------------



                  if ($E=getLogicEingangDataAll($id)) {
                   $ip = $E[2]['value'];
                   }


                  $url1 = "http://".$ip."/usr-cgi/xml.cgi?|A|1|1";


                  $ausgabe1 = file_get_contents("$url1");

                  //AUSSENTEMPERATUR
                  $regexp="/PCOWEB.*?value\=".*?([\s\w]+B)/s";
                  preg_match($regexp,$ausgabe1,$data1); 
                  setLogicLinkAusgang($id,1,$data1[1]);


                  setLogicElementStatus($id,0);

                   //----------------------------------------------------------------------------------------------------------------------------------------

                   sql_disconnect();
                   ?>
                   ###[/EXEC]###

                  Kann das so klappen? Ich will nur verhinden mein ganze System durch einen defekten Baustein zu beschädigen

                  Kommentar


                    #24
                    Du setzt bei jedem Aufruf des BS mit
                    Code:
                     setLogicLinkAusgang($id,1,0);
                    den Ausgang 1 auf 0, das ist etwas unnötig.
                    Dann solltest Du noch prüfen, das $regexp auch Daten enthält bevor das preg match greift, sonst bekommst Du evtl. einen Fehler.

                    Kommentar


                      #25
                      Wenn das XML ist, wuerde ich auf die reg_exp ganz verzichten und das (ueber den json-Umweg) direkt in ein Array schreiben (weil das wesentlich einfacher und einleuchtender ist), also so:
                      PHP-Code:
                      $s="<PCOWEB>
                      <PCO>
                      <ANALOG>
                      <VARIABLE>
                      <INDEX>1</INDEX>
                      <VALUE>2.9</VALUE>
                      </VARIABLE>
                      </ANALOG>
                      </PCO>
                      </PCOWEB>"
                      ;

                      $x=simplexml_load_string($s);
                      $j=json_encode($x);
                      $a=json_decode($j,TRUE);

                      print_r($a); 
                      Das ergibt dann sowas wie das hier:
                      Code:
                      stdClass Object
                      (
                          [PCO] => stdClass Object
                              (
                                  [ANALOG] => stdClass Object
                                      (
                                          [VARIABLE] => stdClass Object
                                              (
                                                  [INDEX] => 1
                                                  [VALUE] => 2.9
                                              )
                      
                                      )
                      
                              )
                      
                      )
                      Ein Array aus den Variablen (jeweils INDEX & VALUE) kannst Du dann so bekommen:
                      PHP-Code:
                      $a['PCO']['ANALOG']['VARIABLE'

                      Kommentar


                        #26
                        Und woher weiß da mein Baustein das er den Wert in den LBS Ausgang 1 schreiben soll?
                        Ich versteh da nur Bahnhof...

                        Hab vorher mal meine Baustein getestet leider funktioniert er erwartungsgemäß nicht...

                        wintermute hab auch mal geteste im EXCE bereich nur den Code von dir einzutragen funktioniert aber auch nicht.. oder müsste da noch was angepasst werden?
                        Zuletzt geändert von 19andy89; 13.11.2016, 17:57.

                        Kommentar


                          #27
                          Hallo 19andy89,

                          was hast du in der Web-Karte eingestellt, das sie dir die XML liefert? Hast du eine Anleitung dies bezüglich?

                          Komme mit meiner Web-Karte (PCO1000WB0) grade nicht weiter!

                          Gruß Timo

                          Kommentar


                            #28
                            Zitat von Inventor Beitrag anzeigen
                            Hallo 19andy89,

                            was hast du in der Web-Karte eingestellt, das sie dir die XML liefert? Hast du eine Anleitung dies bezüglich?

                            Komme mit meiner Web-Karte (PCO1000WB0) grade nicht weiter!

                            Gruß Timo
                            Eingestellt hab ich gar nichts. Ich bin einfach nur Nach der Anleitung im ersten Post vorgegangen.
                            Da wird besvhrieben wie man eine XML Anfrage an die Wärmepumpe sendet..

                            Hast du denn scho einen Funktionierenden Bausten?
                            ​​​​​​
                            Mfg Andy
                            ​​​​​

                            Kommentar


                              #29
                              Hab die xml.cig bei mir gefunden liegt unter IP/config/xml.cgi?|A|1|1

                              bekomme nach stehndes ausgegen:

                              <PCOWEB>
                              <PCO>
                              <ANALOG>
                              <VARIABLE>
                              <INDEX>1</INDEX>
                              <VALUE>14.0</VALUE>
                              </VARIABLE>
                              </ANALOG>
                              </PCO>
                              </PCOWEB>

                              bin gerne bereit mich an der Entwicklung eines LBS zu beteiligen, hab nur keine Programmierkenntnisse mit PHP!

                              Gruß Timo
                              Zuletzt geändert von Inventor; 20.11.2016, 13:58.

                              Kommentar


                                #30
                                Inventor ja das wär ich auch... Kann aber wie du ebenfalls keine PHP daher hab ich das ganze wieder auf Eis gelegt...
                                Ein paar Tipps wurden zwar bereits gegeben aber ich konnte mit noch keinem wirklich was anfangen.
                                Und eben schnell mal PHP lernen is nicht so einfach...

                                Kommentar

                                Lädt...
                                X