ETA Pelletkessel PC25 auslesen

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
Jensemann_P
Beiträge: 149
Registriert: 26. Jul 2021 20:14

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

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.

Jensemann_P
Beiträge: 149
Registriert: 26. Jul 2021 20:14

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

'Ich werde das jetzt mal mit JS versuchen, das versteh ich noch halbwegs ;-)

Jensemann_P
Beiträge: 149
Registriert: 26. Jul 2021 20:14

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

Hier der funktionierende Code um an einen ETA-Kessel einen Wert zu senden:

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
Und das Transformation-File:

Code: Alles auswählen

(function(i) {
    var tempStr = 'value='+i ;
    return tempStr;
})(input)

FrSeLo
Beiträge: 11
Registriert: 27. Mär 2024 20:42

Re: ETA Pelletkessel PC25 auslesen

Beitrag von FrSeLo »

Hallo zusammen, ist das Thema noch aktuell? für mich schon ...
Noch 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...
man kann sich die gewünchenten werte Anlagen (Doku punkt 5) und dann unter

Code: Alles auswählen

<host>:8080/user/vars/myset
abrufen.
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>
nun meine Frage wie kann man daraus am besten die Chanels erstellen mit unit, scaleFactor und decPlaces.
Danke und Gruß

Benutzeravatar
udo1toni
Beiträge: 13948
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: ETA Pelletkessel PC25 auslesen

Beitrag von udo1toni »

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:
  • ein vollständiges File, so wie es geliefert wird (nicht ein Ausschnitt)
  • die richtigen Analysewerkzeuge.
Für den zweiten Punkt wäre mein erster Reflex VS Code, allerdings habe ich auch da keine große Erfahrung mit den XML Tools. Für JSON biete VS Code eine Plugin, welches nach dem Setzen des Cursors auf einen der Werte direkt in der Status Bar den korrekten JSONPath liefert, man muss ihn nur noch anklicken, um ihn in die Zwischenablage zu übernehmen. Für XPath habe ich so etwas nicht gefunden, aber schon einige Tools, bei denen bestimmt auch eine ähnliche Funktion eingebaut ist.
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.1.5, LXC), mit openHABian eingerichtet

FrSeLo
Beiträge: 11
Registriert: 27. Mär 2024 20:42

Re: ETA Pelletkessel PC25 auslesen

Beitrag von FrSeLo »

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?

Benutzeravatar
udo1toni
Beiträge: 13948
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: ETA Pelletkessel PC25 auslesen

Beitrag von udo1toni »

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:
  1. string Channel "nackig". -> Du erhältst einen Striung Channel, der exakt das xml enthält. Das kann sehr praktisch sein, um Fehler zu finden
  2. number Channel -> im number Channel wird ein einzelner Zahlenwert übernommen. Du musst über einen geeigneten Filter dem System mitteilen, welcher der Zahlenwerte Dich interssiert
  3. 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
  4. string Channel für einzelnen Wert -> gleiches wie beim number Channel, nur halt mit einem String als Ergebnis
Status -> der Wert, der von openHAB empfangen wird.
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()
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:

Code: Alles auswählen

stateTransformation="XPATH:/eta/vars/variable[@uri='48/10391/0/11135/2400']/@strValue()
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:

Code: Alles auswählen

onValue: Ja
offValue: Nein
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...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

FrSeLo
Beiträge: 11
Registriert: 27. Mär 2024 20:42

Re: ETA Pelletkessel PC25 auslesen

Beitrag von FrSeLo »

Danke soweit.

Der richtige XPAH

Code: Alles auswählen

XPATH:/*[name()='eta']/*[name()='vars']/*[name()='variable' and @uri='48/10391/0/0/12180']

Benutzeravatar
udo1toni
Beiträge: 13948
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: ETA Pelletkessel PC25 auslesen

Beitrag von udo1toni »

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...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

FrSeLo
Beiträge: 11
Registriert: 27. Mär 2024 20:42

Re: ETA Pelletkessel PC25 auslesen

Beitrag von FrSeLo »

an das attribut kommst dann wieder W3C konform mit @

Code: Alles auswählen

/*[name()='eta']/*[name()='vars']/*[name()='variable' and @uri='48/10391/0/11135/2400']/@strValue
Im Item bei den Dimensionen habe ich nur hPa, wie kann ich das erweitern?

Antworten