ETA Pelletkessel PC25 auslesen
-
- Beiträge: 155
- Registriert: 26. Jul 2021 20:14
Re: ETA Pelletkessel PC25 auslesen
Was wäre denn deiner Meinung nach die einfachste/Eleganteste Methode hier die commandTransformation zu machen?
Muss es bei den Transformations eigentlich immer ein extra file geben, oder lässt sich das auch als Einzeiler direkt unterbringen?
Im Prinzip muss ich ja nur stumpf "value=" als Präfix davor kleben.
Muss es bei den Transformations eigentlich immer ein extra file geben, oder lässt sich das auch als Einzeiler direkt unterbringen?
Im Prinzip muss ich ja nur stumpf "value=" als Präfix davor kleben.
-
- Beiträge: 155
- Registriert: 26. Jul 2021 20:14
Re: ETA Pelletkessel PC25 auslesen
'Ich werde das jetzt mal mit JS versuchen, das versteh ich noch halbwegs
-
- Beiträge: 155
- Registriert: 26. Jul 2021 20:14
Re: ETA Pelletkessel PC25 auslesen
Hier der funktionierende Code um an einen ETA-Kessel einen Wert zu senden:
Thing:
Und das Transformation-File:
Thing:
Code: Alles auswählen
UID: http:url:ETA_PC25
label: ETA PC 25
thingTypeUID: http:url
configuration:
authMode: BASIC
ignoreSSLErrors: false
baseURL: http://192.168.178.148:8080/user/var/
delay: 0
stateMethod: GET
refresh: 10
commandMethod: POST
contentType: text/xml
timeout: 1000
bufferSize: 2048
- id: ETA_HeizKreisOnOff
channelTypeUID: http:switch
label: ETA Heizkreis
description: null
configuration:
onValue: "1803"
commandTransformation: JS:EtaSendValue.js
offValue: "1802"
stateExtension: 120/10101/0/0/12080
commandExtension: 120/10101/0/0/12080
stateTransformation: XSLT:eta_numeric.xsl
Code: Alles auswählen
(function(i) {
var tempStr = 'value='+i ;
return tempStr;
})(input)
-
- Beiträge: 11
- Registriert: 27. Mär 2024 20:42
Re: ETA Pelletkessel PC25 auslesen
Hallo zusammen, ist das Thema noch aktuell? für mich schon ...
abrufen.
https://www.meineta.at/javax.faces.reso ... .pdf.xhtml
hier mein kleines beispiel
nun meine Frage wie kann man daraus am besten die Chanels erstellen mit unit, scaleFactor und decPlaces.
Danke und Gruß
man kann sich die gewünchenten werte Anlagen (Doku punkt 5) und dann unterNoch ein Tipp: Schau doch bitte mal, was passiert, wenn Du http://192.168.178.148:8080/user/var/ abfragst. Kommt ein großes xml-File zurück, in dem alle Werte enthalten sind? Dann kannst Du Dir viel Arbeit sparen...
Code: Alles auswählen
<host>:8080/user/vars/myset
https://www.meineta.at/javax.faces.reso ... .pdf.xhtml
hier mein kleines beispiel
Code: Alles auswählen
<eta xmlns="http://www.eta.co.at/rest/v1" version="1.0">
<vars uri="/user/vars/myset">
<variable advTextOffset="0" unit="bar" uri="48/10391/0/0/12180" strValue="1,93" scaleFactor="100" decPlaces="2">193</variable>
<variable advTextOffset="1070" unit="" uri="48/10391/0/11135/2400" strValue="Nein" scaleFactor="1" decPlaces="0">1070</variable>
</vars>
</eta>
Danke und Gruß
- udo1toni
- Beiträge: 14057
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: ETA Pelletkessel PC25 auslesen
Da es nach xml aussieht, könnte man mit XPath weiter kommen.
Allerdings stehe ich persönlich mit XPath auf Kriegsfuß...
Wichtig bei solchen Experimenten sind zwei Dinge:
Alternativ gäbe es noch Notepad++, die dortigen XML Tools habe ich schon ein paar Mal genutzt, das Ergebnis ist nicht immer zufriedenstellend, aber dicht genug dran, um damit zu arbeiten (und manchmal klappt es auch direkt... )
Ansonsten gibt es mit großer Sicherheit auch noch Online Analysewerkzeuge, bei denen Du das gültige XML hochlädst und anschließend eben den Pfad modellieren kannst.
Allerdings stehe ich persönlich mit XPath auf Kriegsfuß...
Wichtig bei solchen Experimenten sind zwei Dinge:
- ein vollständiges File, so wie es geliefert wird (nicht ein Ausschnitt)
- die richtigen Analysewerkzeuge.
Alternativ gäbe es noch Notepad++, die dortigen XML Tools habe ich schon ein paar Mal genutzt, das Ergebnis ist nicht immer zufriedenstellend, aber dicht genug dran, um damit zu arbeiten (und manchmal klappt es auch direkt... )
Ansonsten gibt es mit großer Sicherheit auch noch Online Analysewerkzeuge, bei denen Du das gültige XML hochlädst und anschließend eben den Pfad modellieren kannst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 11
- Registriert: 27. Mär 2024 20:42
Re: ETA Pelletkessel PC25 auslesen
Ja es ist XML, sorry hab mich falsch ausgedrückt - im Post oben ist das ganze XML (mit ausschnitt meine ich nur zwei variablen)
Vieleicht habe ich beim prinzipiellen Vorgehen noch ein Verständnis Problem
1. Thing: ist das ganzen XML (in meinem Fall mit zwei variablen) siehe oben --> OK
2. Channel (number) was macht "Status-Transformation" und "Command Transformation"
3. Item ???
An welcher Stelle werden aus dem XML mit zwei Variablen die zwei Items unter schiedlichen Typs (switch und nubmer)
Bei Channel kommt aus meiner Sicht nur String, Number oder Switch in frage, aber wie sortiere ich die Wert / Zeilen / variablen aus dem XML dort ein?
geht das über haupt über Web GUI? brauche ich ein Script?
hat jemand ein kleines Beispiel mit number und bool?
Vieleicht habe ich beim prinzipiellen Vorgehen noch ein Verständnis Problem
1. Thing: ist das ganzen XML (in meinem Fall mit zwei variablen) siehe oben --> OK
2. Channel (number) was macht "Status-Transformation" und "Command Transformation"
3. Item ???
An welcher Stelle werden aus dem XML mit zwei Variablen die zwei Items unter schiedlichen Typs (switch und nubmer)
Bei Channel kommt aus meiner Sicht nur String, Number oder Switch in frage, aber wie sortiere ich die Wert / Zeilen / variablen aus dem XML dort ein?
geht das über haupt über Web GUI? brauche ich ein Script?
hat jemand ein kleines Beispiel mit number und bool?
- udo1toni
- Beiträge: 14057
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: ETA Pelletkessel PC25 auslesen
Ich nehme mal an, Du meinst, Du hast ein http Thing angelegt, welches das obige xml empfängt.
Dann kannst Du diese Daten in verschiedene Channel übernehmen:
Command -> der Wert, der von openHAB versendet wird.
Entsprechend ist die Status-Transformation die, welche das ankommende xml zu einem einzelnen Wert zerlegt. In der Theorie sollte es so aussehen:
Der Pfad ist klar, die Variable wird anhand der uri selektiert (es gibt gewöhnlich keine Garantie, in welcher Reihenfolge Knoten gesendet werden) und ausgegeben werden soll der Text, in diesem Fall also die 193. Da es sich um eine Zahl handelt, die um den Faktor 100 verkehrt ist, setzt man noch die unit passend auf cbar (Zentibar - eher ungewöhnlich, daran sollte sich openHAB aber nicht stören).
Leider funktioniert der XPATH Ausdruck bei mir aber nicht - habe ich erwähnt, dass ich mit XPATH auf Kriegsfuß stehe?
Für die zweite Variable wäre switch der korrekte Channeltyp und da sähe es so aus:
Hier würde man sich also den StringValue holen. Nein passt allerdings nicht zum erwarteten Wert (ON oder OFF - ist ja ein switch), entsprechend müsste man noch onValue und offValue ergänzen:
Aber auch hier klappt es bei mir nicht, obwohl der XPath korrekt sein sollte- Vermutlich hat das was mit dem gesetzten Schema zu tun, ic hwerde aber aus der entsprechenden Anleitung nicht schlau. XML ist bestimmt die geilste Erfindung seit der Sache mit dem Rad, nur wurde sie von Theoretikern erdacht, die keinerlei Bezug zur Praxis haben.
Dass etwas auch "einfach funktionieren" kann, zeigt JSONPath (hat auch seine Fallstricke, aber bisher bin ich noch immer recht schnell zum Ziel gekommen)
So, genug Rant, vielleicht hat ja jemand anderes einen Tipp, wie es geht...
Dann kannst Du diese Daten in verschiedene Channel übernehmen:
- string Channel "nackig". -> Du erhältst einen Striung Channel, der exakt das xml enthält. Das kann sehr praktisch sein, um Fehler zu finden
- number Channel -> im number Channel wird ein einzelner Zahlenwert übernommen. Du musst über einen geeigneten Filter dem System mitteilen, welcher der Zahlenwerte Dich interssiert
- switch Channel -> das gleiche wie beim number Channel, nur dass es sich diesmal um ein Entweder/Oder handelt, Du musst dem System zusätzlich mitteilen, welcher Wert für ON steht und welcher Wert für OFF
- string Channel für einzelnen Wert -> gleiches wie beim number Channel, nur halt mit einem String als Ergebnis
Command -> der Wert, der von openHAB versendet wird.
Entsprechend ist die Status-Transformation die, welche das ankommende xml zu einem einzelnen Wert zerlegt. In der Theorie sollte es so aussehen:
Code: Alles auswählen
stateTransformation: XPATH:/eta/vars/variable[@uri='48/10391/0/0/12180']/text()
Leider funktioniert der XPATH Ausdruck bei mir aber nicht - habe ich erwähnt, dass ich mit XPATH auf Kriegsfuß stehe?
Für die zweite Variable wäre switch der korrekte Channeltyp und da sähe es so aus:
Code: Alles auswählen
stateTransformation="XPATH:/eta/vars/variable[@uri='48/10391/0/11135/2400']/@strValue()
Code: Alles auswählen
onValue: Ja
offValue: Nein
Dass etwas auch "einfach funktionieren" kann, zeigt JSONPath (hat auch seine Fallstricke, aber bisher bin ich noch immer recht schnell zum Ziel gekommen)
So, genug Rant, vielleicht hat ja jemand anderes einen Tipp, wie es geht...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 11
- Registriert: 27. Mär 2024 20:42
Re: ETA Pelletkessel PC25 auslesen
Danke soweit.
Der richtige XPAH
Der richtige XPAH
Code: Alles auswählen
XPATH:/*[name()='eta']/*[name()='vars']/*[name()='variable' and @uri='48/10391/0/0/12180']
- udo1toni
- Beiträge: 14057
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: ETA Pelletkessel PC25 auslesen
Ah, gut. Nun kommt Bewegung in die Sache und die passende Einheit dazu (Parameter unit) wäre kPa (also 193kPa = 1930 hPa = 1,93 bar).
Du setzt also die unit auf kPa und anschließend legst Du ein Number:Pressure Item an, welches Du passend parametrierst (überall pressure auswählen, wo das möglich ist, unit auf hPa setzen und gut ist). Wahlweise kannst Du das stateDescription Pattern des Items evtl. auch auf %.2f bar setzen, um den Wert in Bar angezeigt zu bekommen. Wenn Du mit hPa als Anzeige leben kannst, kannst Du das aber auch sein lassen...
Bleibt noch die Sache mit dem Switch... den bekomme ich noch nicht aufgelöst, aber irgendwie sollte man auch an den strValue kommen...
Du setzt also die unit auf kPa und anschließend legst Du ein Number:Pressure Item an, welches Du passend parametrierst (überall pressure auswählen, wo das möglich ist, unit auf hPa setzen und gut ist). Wahlweise kannst Du das stateDescription Pattern des Items evtl. auch auf %.2f bar setzen, um den Wert in Bar angezeigt zu bekommen. Wenn Du mit hPa als Anzeige leben kannst, kannst Du das aber auch sein lassen...
Bleibt noch die Sache mit dem Switch... den bekomme ich noch nicht aufgelöst, aber irgendwie sollte man auch an den strValue kommen...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet
-
- Beiträge: 11
- Registriert: 27. Mär 2024 20:42
Re: ETA Pelletkessel PC25 auslesen
an das attribut kommst dann wieder W3C konform mit @
Im Item bei den Dimensionen habe ich nur hPa, wie kann ich das erweitern?
Code: Alles auswählen
/*[name()='eta']/*[name()='vars']/*[name()='variable' and @uri='48/10391/0/11135/2400']/@strValue