OH3 http binding ETA

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

Moderatoren: Cyrelian, seppy

Antworten
geiselto
Beiträge: 2
Registriert: 15. Dez 2021 21:09

OH3 http binding ETA

Beitrag von geiselto »

Hi,

ich bin von OH2 auf OH3 umgezogen.
Bei der Integration meiner ETA scheitere ich aktuell. Folgende Ausgangssituation:
bisher OH2:
Abfrage bestimmter Parameter an die Heizung per http binding und XSLT Transformation erfolgreich mit:

Code: Alles auswählen

Number Eta_Vorrat_Kessel	"Vorrat Kessel [%.1f KG]" <fire> (gEta) { http="<[http://192.168.xxx.xxx:8080/user/var/40/10021/0/0/12011:600000:XSLT(eta_numeric.xsl)]" }
Transformationsfile: eta_numeric.xsl

Code: Alles auswählen

<?xml version="1.0"?>
<xsl:stylesheet 
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:eta="http://www.eta.co.at/rest/v1"
	version="1.0">
	<xsl:output indent="yes" method="xml" encoding="UTF-8" omit-xml-declaration="yes" />
	<xsl:template match="/">
		<xsl:value-of select="//eta:value div //eta:value/@scaleFactor" />
	</xsl:template>
</xsl:stylesheet>
Neu OH3:
- Transformationsfile ist weiterhin vorhanden

Definition des Channels:

Code: Alles auswählen

UID: http:url:EtaVorratKessel
label: EtaVorratKessel
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.xxx.xxx:8080
  delay: 0
  stateMethod: GET
  refresh: 10
  commandMethod: GET
  contentType: application/xml
  timeout: 1000
  bufferSize: 2048
channels:
  - id: Test
    channelTypeUID: http:number
    label: Test
    description: ""
    configuration:
      mode: READONLY
      stateExtension: user/var/40/10021/0/0/12011:60000
und dazugehörigem Item. Beim ausführen der Transformation bekomme ich eine Exception vom XsltTransformationService:
javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Content is not allowed in prolog.
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:786) ~[?:?]
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:370) ~[?:?]
at org.openhab.transform.xslt.internal.XsltTransformationService.transform(XsltTransformationService.java:85) ~[?:?]
at org.openhab.core.transform.TransformationHelper.transform(TransformationHelper.java:125) ~[?:?]
at org.openhab.transform.xslt.internal.profiles.XSLTTransformationProfile.transformState(XSLTTransformationProfile.java:120) ~[?:?]

Da die Transformation auf OH2 funktionierte, gehe ich davon aus das mir ein Fehler in der Definition von channel,item bzw. profile unterlaufen ist.
Hat jemand bereits erfolgreich eine XSLT Transformation in OH3.1 angewendet? oder hat mir da jemand einen Tip?

Vielen Dank!!!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: OH3 http binding ETA

Beitrag von udo1toni »

Du musst die Transformation im Channel vornehmen, nicht beim Verlinken des Channels mit dem Item. Alternativ kannst Du den Chanel als String Channel definieren, aber wie gesagt, das ist gar nicht nötig.
Das Stichwort lautet stateTransformation, das ist der erste Punkt in der Konfiguration eines Channels über die UI. Dort schreibst Du dann die gewünschte Transformation entsprechend hin: XSLT:eta_numeric.xsl

Eventuell stimmt die Schreibweise hier noch nicht zu 100%, ich nutze XSLT momentan nicht selbst. Jedenfalls wird der Parameter (also hier der Scriptname) nicht in Klammern geschrieben, sondern mit einem Doppelpunkt getrennt nach dem Transformation Service angegeben, also theoretisch sollte es so wie angegeben funktionieren...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

geiselto
Beiträge: 2
Registriert: 15. Dez 2021 21:09

Re: OH3 http binding ETA

Beitrag von geiselto »

Danke für Deine Unterstützung!!!
Der Wert wird jetzt ausgelesen und richtig transformiert. Ich habe die Transformation wie vorgeschlagen auf dem Channel durchgeführt. Somit war die Exception erledigt. Anschließend habe ich das Item neu angelegt und alles lief wie erwartet.


Zusammenfassend hab ich abschließend noch einmal das Thing mit dem Channel:

Code: Alles auswählen

UID: http:url:EtaVorratKessel
label: EtaVorratKessel
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.XXX.XXX:8080
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: text/xml
  timeout: 1000
  bufferSize: 2048
channels:
  - id: KesselVorrat
    channelTypeUID: http:number
    label: KesselVorrat
    description: ""
    configuration:
      stateExtension: user/var/40/10021/0/0/12011:60000
      stateTransformation: XSLT:eta_numeric.xsl
sowie das Item:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

SKLD
Beiträge: 6
Registriert: 8. Jun 2021 17:10

Re: OH3 http binding ETA

Beitrag von SKLD »

Moin,

ich habe meinen ETA Pelletkessel per NodeRed über MQTT-Item in OH3 eingebunden und sogar eine Alarmmeldung bei Kesselstörung per Telegram generiert. Hier mal meine ETA Übersicht in Grafana
ETA.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Rob69
Beiträge: 55
Registriert: 26. Feb 2021 07:38

ETA Kessel ausgelesen

Beitrag von Rob69 »

Sieht super aus,

Ich habe meinen Über Modbus ausgelesen (PU15) funktioniert auch super!



Gruß

flechner
Beiträge: 1
Registriert: 27. Dez 2022 07:48

Re: OH3 http binding ETA

Beitrag von flechner »

Wie bekomme ich das eta_numeric.xsl per UI aufs openhab 4?

Antworten