dazu musst du einen LBS schreiben. Der ruft dann die Webseite ab, analysiert das XML und setzt dann den Ausgang.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Dimplex Wärmepumpe auslesen
Einklappen
X
-
Zitat von jonofe Beitrag anzeigendazu musst du einen LBS schreiben. Der ruft dann die Webseite ab, analysiert das XML und setzt dann den Ausgang.
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
-
Zitat von 19andy89 Beitrag anzeigen... aber irgendwie sehe ich da nur Klammern und seltesame Worte
Gruß Andreas
-----------------------------------------------------------
Immer wieder benötigt: KNX-Grundlagen PDF Englisch, PDF Deutsch oder
Deutsche Version im KNX-Support.
Kommentar
-
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
-
Zitat von gaert Beitrag anzeigenWenn'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."
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
-
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
-
So... hab jetzt mal mithilfe ein paar "anderer" Bausteine einen nachgebaut
Ob das ganze funktioniert weiß ich nichtVielleicht 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
-
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);
Code:stdClass Object ( [PCO] => stdClass Object ( [ANALOG] => stdClass Object ( [VARIABLE] => stdClass Object ( [INDEX] => 1 [VALUE] => 2.9 ) ) ) )
PHP-Code:$a['PCO']['ANALOG']['VARIABLE']
Kommentar
-
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
-
Zitat von Inventor Beitrag anzeigenHallo 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
Da wird besvhrieben wie man eine XML Anfrage an die Wärmepumpe sendet..
Hast du denn scho einen Funktionierenden Bausten?
Mfg Andy
Kommentar
-
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ß TimoZuletzt geändert von Inventor; 20.11.2016, 13:58.
Kommentar
Kommentar