ETA Touch Anbindung

diverse Zusatzsoftware

Moderator: Co-Administratoren

Antworten
catnipper
Beiträge: 67
Registriert: 11.02.2013, 12:42
Danksagung erhalten: 1 Mal

ETA Touch Anbindung

Beitrag von catnipper » 06.01.2014, 12:46

Hallo,

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() );
4. In der ETA Touch muss unter http://www.meineta.at die RestAPI aktiviert werden
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"/>...
2. Aus der CCU werden die vorhanden Systemvariablen ausgelesen:
[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=''/>...
3. Es wird der URI aus der ETA mit der Beschreibung der CCU Variablen verglichen - die CCU Variable muss einen Präfix "eta:" haben
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');
6. Es genügt sich aus der Menüstruktur der ETA eine passende URI zu holen und diese in der CCU als Variable anzulegen, die Werte werden automatisch mit dem nächsten Update befüllt!

Viel Spaß damit...
Dateianhänge
ETAtoCCU_02.png
ETAtoCCU_01.png
ETAtoCCU.zip
(21.46 KiB) 215-mal heruntergeladen

torstenspa
Beiträge: 6
Registriert: 13.01.2018, 11:27

Re: ETA Touch Anbindung

Beitrag von torstenspa » 13.01.2018, 12:35

Hallo,

vielen Dank für das Script. Funktioniert sehr gut und stabil. Nur leider habe ich ein Problem mit der Übernahme von Werten mit den Dezimalstellen.
Dieser werden bei der Übernahme in die CCU-Variablen genullt. Z.b. wird beim Kesseldruch von 1,43 nach der Übernahme in die CCU 1,00.

Hat hier jemand eine Idee, woren das liegen könnte?

Vielen Dank für eine Lösungsidee.

Gruß
Torsten

catnipper
Beiträge: 67
Registriert: 11.02.2013, 12:42
Danksagung erhalten: 1 Mal

Re: ETA Touch Anbindung

Beitrag von catnipper » 13.01.2018, 13:00

Ich würde mal denken dass hier lediglich das Dezimaltrennzeichen individuell ausgetauscht werden muss...

Antworten

Zurück zu „Sonstige Addons“