Ich wollte an dieser Stelle mit Euch mein PHP Skript teilen welches die Werte aus meiner ETA Touch in CCU Variablen schreibt. Vielleicht gibt es ja auch jemand der sich mit CGI oder Tcl gut genug auskennt um das Skript umzuschreiben damit es direkt auf der CCU laufen kann...?
Voraussetzung
1. Es wird derzeit ein Server mit PHP und den Klassen aus der beigefügten ZIP Datei benötigt
2. Auf der CCU muss der XML-API Patch installiert sein und in der Datei /www/config/xmlapi/sysvarlist.cgi muss in Zeile 37 ergänzt werden (sollte demnächst standardmäßig enthalten sein):
Code: Alles auswählen
Write("' description='"); WriteXML( oSysVar.DPInfo() );
3. Bei mir läuft auf dem Linux Server alle 5 Minuten ein cron der das Skript mittels wget aufruft
Beschreibung
1. Es wird die Menüstruktur aus der ETA Anlage eingelesen und alle "object" Elemente mit einem Attribut "uri" gescannt:
[url]http://eta_touch_ip:8080/user/menu[/url]
Code: Alles auswählen
...<fub uri="/40/10021" name="Kessel">
<object uri="/40/10021/0/0/12010" name="Zählerstände">
<object uri="/40/10021/0/0/12153" name="Volllaststunden"/>
<object uri="/40/10021/0/0/12016" name="Gesamtverbrauch"/>
<object uri="/40/10021/0/0/12014" name="Verbrauch seit Wartung"/>...
[url]http://ccu_ip/config/xmlapi/sysvarlist.cgi[/url]
Code: Alles auswählen
<?xml version="1.0" encoding="ISO-8859-1" ?>
<systemVariables>
<systemVariable name='Anwesenheit' description='Anwesenheit' variable='1' value='true' value_list='' ise_id='950' min='' max='' unit='' type='2' subtype='2' logged='false' visible='false' timestamp='1388853216' value_name_0='nicht anwesend' value_name_1='anwesend'/>
<systemVariable name='Außentemperatur' description='eta:/40/10241/0/0/12197' variable='10.000000' value='10.000000' value_list='' ise_id='3741' min='-20' max='50' unit='ºC' type='4' subtype='0' logged='false' visible='true' timestamp='1389007154' value_name_0='' value_name_1=''/>
<systemVariable name='Carport Licht Restdauer' description='Verbleibende Zeit' variable='0' value='0.000000' value_list='' ise_id='2428' min='0' max='65000' unit='Sek' type='4' subtype='0' logged='false' visible='true' timestamp='1388853214' value_name_0='' value_name_1=''/>
<systemVariable name='Carport Licht Timer' description='Letzte Bewegung + Leuchtdauer (2 Min)' variable='0' value='0.000000' value_list='' ise_id='1704' min='0' max='9999999999' unit='Sek' type='4' subtype='0' logged='false' visible='false' timestamp='1388853214' value_name_0='' value_name_1=''/>
<systemVariable name='Dauer Heizungsboost' description='Dauer der manuellen Schaltung für Heizkreislauf' variable='2' value='2' value_list='1;2;4' ise_id='3934' min='' max='' unit='h' type='16' subtype='29' logged='false' visible='true' timestamp='1388943874' value_name_0='' value_name_1=''/>
<systemVariable name='ETA Update' description='' variable='6. Jan 2014 12:19' value='6. Jan 2014 12:19' value_list='' ise_id='3952' min='' max='' unit='' type='20' subtype='11' logged='false' visible='true' timestamp='1389007154' value_name_0='' value_name_1=''/>
<systemVariable name='Gesamtverbrauch' description='eta:/40/10021/0/0/12016' variable='7679.000000' value='7679.000000' value_list='' ise_id='3949' min='0' max='65000' unit='kg' type='4' subtype='0' logged='false' visible='true' timestamp='1389007149' value_name_0='' value_name_1=''/>...
4. Wird ein Match gefunden, wir der aktuelle Wert aus der ETA abgefragt [url]http://eta_touch_ip:8080/user/var/_uri_[/url] und in die CCU Variable geschrieben [url]http://ccu_ip/config/xmlapi/statechange.cgi?ise_id=_var_ise_id_&new_value=_eta_var_value_[/url]
5. Die Zeit des letzten Updates aus der ETA Anlage wird in einer fest zu definierenden Variable der CCU gespeichert, siehe ccu.php [Zeile 18, updvar]:
Code: Alles auswählen
$ccu = Array('server'=>'192.168.178.69','port'=>'80','protocol'=>'http','updvar'=>'3952');
Viel Spaß damit...