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: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Und jetzt was senden

Beitrag von Jensemann_P »

Im nächsten Schritt möchte ich ein paar Werte senden bzw hauptsächlich Schalter betätigen.

Code: Alles auswählen

  - id: ETA_HeizKreisOnOff
    channelTypeUID: http:switch
    label: ETA Heizkreis
    description: null
    configuration:
      onValue: "1803"
      offValue: "1802"
      stateExtension: 120/10101/0/0/12080
      stateTransformation: XSLT:eta_numeric.xsl
      commandExtension: 120/10101/0/0/12080
Der Schalter im Item geht schon mal mit dem an der Anlage mit, also der Ausleseteil sollte passen.
Allerdings passiert nichts, wenn ich den Schalter am Item betätigen möchte.

In der Beschreibung des APIs steht folgendes dazu:
Example 1 Set the deash key to On.

HTTP Request

POST /user/var/112/10021/0/0/12112 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
value=1803


HTTP Response
HTTP/1.1 200 OK
Content-Encoding: utf-8
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8"?>
<eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
<success uri="/user/var/112/10021/0/0/12112"/>
</eta>
Also eigentlich ja nur einfaches schreiben, oder etwa doch nicht? :?:

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

SKLD hat geschrieben: 20. Jun 2022 12:00 Hi,
hab diesen Link gerade gefunden. Ich habe einen PU15 am laufen und die Daten lese ich über NodeRed ein, werte sie aus und transformiere die Wert zu einem MQTT Item. Die kannst Du dann ganz bequem in OH3 importieren.
Hallo SKLD, ist es dir denn auch gelungen Werte an die ETA zu senden?

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

Habe mal wieder etwas Luft um danach zu schauen. Ich habe also in meinem Thing einen Schalter-Channel erstellt.

Code: Alles auswählen

  - id: ETA_HeizKreisOnOff
    channelTypeUID: http:switch
    label: ETA Heizkreis
    description: null
    configuration:
      onValue: "1803"
      offValue: "1802"
      stateExtension: 120/10101/0/0/12080
      commandExtension: 120/10101/0/0/12080
      commandMethod: PUT
      stateTransformation: XSLT:eta_numeric.xsl
Nun wäre ich bei Type Siwtch, Commandextension und onValue offValue als gegebene Werte davon ausgegangen, dass das direkt läuft, aber das scheint nicht so zu sein.
Hier der Teil aus dem log (Ich versuche von On nach Off zu schalten):

Code: Alles auswählen

2022-07-25 11:32:46.343 [TRACE] [.HttpDynamicStateDescriptionProvider] - returning new stateDescription for http:url:ETA_PC25:ETA_HeizKreisOnOff
2022-07-25 11:32:46.349 [TRACE] [nding.http.internal.HttpThingHandler] - Sending to 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Method = {GET}, Headers = {Accept-Encoding: gzip, User-Agent: Jetty/9.4.43.v20210629}, Content = {null}
2022-07-25 11:32:46.358 [TRACE] [p.internal.http.HttpResponseListener] - Received from 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Code = {200}, Headers = {Date: Mon, 25 Jul 2022 11:33:42 GMT, Connection: keep-alive, Content-Type: application/xml, Cache-Control: no-cache, Content-Length: 234}, Content = {<?xml version="1.0" encoding="utf-8"?>
<eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
 <value advTextOffset="1802" unit="" uri="/user/var/120/10101/0/0/12080" strValue="Ein" scaleFactor="1" decPlaces="0">1803</value>
</eta>
}
Das spricht die Dokumentation der API dazu:

Code: Alles auswählen

4.2 HTTP POST
Using HTTP POST you can set a variable to a certain value. Note, that you have to
provide the the variable’s raw value (without scaling)! If a variable with time interval
datatype should be set, value, begin and end parameters must be provided. The begin
and end time are integral multiples of 15 minutes since midnight. This implies a valid
range of [0, 96] for begin and end.
Note: The feature of setting the time slots requires an API version of 1.1 or
higher (available since system software version 1.25.0/2.25.0 or higher).

Attribute Description
uri This is the requested URI.
strValue The variable’s value as formatted string.
unit The variable’s unit as string.
decPlaces The number of decimal places.
scaleFactor The scale factor for processing the raw value.
advTextOffset The offset of text variables. If you read a text variable (e.g.
the ash removal key) you can subtract this value from the
variable’s raw value in order to get a value from [0, max] for
e.g. boolean evaluations.
Table 1: Description of XML attributes of element <value>.

Example 1 Set the deash key to On.
i
HTTP Request
POST /user/var/112/10021/0/0/12112 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
value=1803
HTTP Response
HTTP/1.1 200 OK
Content-Encoding: utf-8
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8"?>
<eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
<success uri="/user/var/112/10021/0/0/12112"/>
</eta>
Example 2 Set monday’s time slot 1 of the hot water tank’s charging times to 00:00-
12:00, 40 degrees: i
HTTP Request
POST /user/var/112/10111/12130/0/1082 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
value=400&begin=0&end=48
HTTP Response
HTTP/1.1 200 OK
Content-Encoding: utf-8
Resource Description
/user/vars Get a list of all defined variable sets.
/user/vars/{Varset} Read all variables from the specified variable set
Varset.
Table 2: Description of resources under /user/vars.
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8"?>
<eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
<success uri="/user/var/112/10111/12130/0/1082"/>
</eta>

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

Code: Alles auswählen

Sending to 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Method = {GET}, Headers = {Accept-Encoding: gzip, User-Agent: Jetty/9.4.43.v20210629}, Content = {null}
sagt ja aus, dass als Methode GET gesendet wird (aber ich hab doch commandMethod: PUT angegeben?).
Content = {null} lässt mich auch vermuten, dass hier noch irgendwie anders Werte übergeben werden müssen und das nicht automatisch durch das angeben von offValue und onValue geschieht. Nur Wie?

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

Okay, gesehen, dass commandMethod natürlich zum thing allgemein, also ganz oben hin gehört. Dort geändert.
Antwort jetzt:

Code: Alles auswählen

2022-07-25 13:43:39.407 [TRACE] [.HttpDynamicStateDescriptionProvider] - returning new stateDescription for http:url:ETA_PC25:ETA_HeizKreisOnOff
2022-07-25 13:43:39.413 [TRACE] [nding.http.internal.HttpThingHandler] - Sending to 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Method = {PUT}, Headers = {Accept-Encoding: gzip, User-Agent: Jetty/9.4.43.v20210629, Content-Type: text/xml}, Content = {1802}
2022-07-25 13:43:39.415 [TRACE] [p.internal.http.HttpResponseListener] - Received from 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Code = {400}, Headers = {Date: Mon, 25 Jul 2022 13:44:36 GMT, Connection: keep-alive, Content-Length: 0}, Content = {null}
2022-07-25 13:43:39.417 [WARN ] [p.internal.http.HttpResponseListener] - Requesting 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080' (method='PUT', content='org.eclipse.jetty.client.util.StringContentProvider@c18839') failed: 400 Bad Request
:?: :?

Vor allem das hier:
Sending to 'http://192.168.178.148:8080/user/var/12 ... /0/0/12080': Method = {PUT}, Headers = {Accept-Encoding: gzip, User-Agent: Jetty/9.4.43.v20210629, Content-Type: text/xml}, Content = {1802}

Hätte ich ja eigentlich so erwartet, scheint aber dennoch falsch zu sein. :(

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

Re: ETA Pelletkessel PC25 auslesen

Beitrag von udo1toni »

Eventuell gehört "value=" auch mit dazu?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

meinst du zur commandExtension?

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

Also im offValue zB. bringt es nicht, habe es auch schon versucht direkt an die URI anzuhängen, auch nichts:

Code: Alles auswählen

2022-07-25 15:33:42.085 [TRACE] [.HttpDynamicStateDescriptionProvider] - returning new stateDescription for http:url:ETA_PC25:ETA_HeizKreisOnOff
2022-07-25 15:33:42.089 [TRACE] [nding.http.internal.HttpThingHandler] - Sending to 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Method = {PUT}, Headers = {Accept-Encoding: gzip, User-Agent: Jetty/9.4.43.v20210629, Content-Type: text/xml}, Content = {value=1802}
2022-07-25 15:33:42.092 [TRACE] [p.internal.http.HttpResponseListener] - Received from 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080': Code = {400}, Headers = {Date: Mon, 25 Jul 2022 15:34:38 GMT, Connection: keep-alive, Content-Length: 0}, Content = {null}
2022-07-25 15:33:42.092 [WARN ] [p.internal.http.HttpResponseListener] - Requesting 'http://192.168.178.148:8080/user/var/120/10101/0/0/12080' (method='PUT', content='org.eclipse.jetty.client.util.StringContentProvider@1145d36') failed: 400 Bad Request

Jensemann_P
Beiträge: 155
Registriert: 26. Jul 2021 20:14
Answers: 0

Re: ETA Pelletkessel PC25 auslesen

Beitrag von Jensemann_P »

Ich bin wieder ein Stück weiter:

Danke Udo1toni für den Hinweis.
Tatsächlich ändert sich etwas, wenn ich value=mitgebe. Ich war in der Dokumentation verrutscht. Die Werte unter user/vars werden mit PUT manipuliert, die unter user/var mit POST. Also commandMethod auf Post umgestellt und den Code im Thing wie folgt abgeändert:

Code: Alles auswählen

  - id: ETA_HeizKreisOnOff
    channelTypeUID: http:switch
    label: ETA Heizkreis
    description: null
    configuration:
      onValue: value=1803
      offValue: value=1802
      stateExtension: 120/10101/0/0/12080
      commandExtension: 120/10101/0/0/12080
      stateTransformation: XSLT:eta_numeric.xsl
Jetzt hab ich aber das nächste Problem: Ich kann jetzt zwar die Werte senden, damit aber nicht mehr lesen (denke zum lesen/abfragen ist dann die Auswertung des Empfangenen durch "value=" gestört.

Ich vermute mal der richtige Weg wäre jetzt, mit einer commandtransformation das "value=" dran zu hängen statt an die Werte.
Nun versuche ich mal in diese Richtung.

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

Re: ETA Pelletkessel PC25 auslesen

Beitrag von udo1toni »

Genau. onValue und offValue sind exakt die Wertedurch ON und OFF ersetzt werden bzw. die durch ON und OFF ersetzt werden. Der Rest Wird über die commandTransformation drumherum gebaut. In der Gegenrichtung wird über die stateTransformation der "Überhang" entfernt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten