Gelöst: OH3 Grünbeck SC18

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
lenschith
Beiträge: 238
Registriert: 11. Dez 2020 22:36

Re: OH3 Grünbeck SC18

Beitrag von lenschith »

Super Udo, so bekomme ich eine Antwort. An den Codereiter hab ich gar nicht gedacht, muss auch gestehen da bin ich total planlos.
Jetzt bekomme ich dieses Ergebnis und ich schaffe es nicht die einzelne Wert zu extrahieren via XPath. Ist mir schon fast peinlich das ich das nicht hinbekomme. Hab jetzt schon einiges getestet aber irgendwie klappt das nicht.

Ergebnis:

Code: Alles auswählen

<data><code>ok</code><D_Y_2_01>162</D_Y_2_01><D_A_1_3>6.0</D_A_1_3><D_D_1>16.0</D_D_1><D_D_2>-</D_D_2><D_C_4_2>21:21</D_C_4_2><D_A_1_6>-</D_A_1_6><D_A_1_1>0.00</D_A_1_1><D_A_1_2>0.28</D_A_1_2><D_A_2_2>000</D_A_2_2><D_A_3_1> 16</D_A_3_1><D_A_3_2>56</D_A_3_2><D_Y_1>162</D_Y_1><D_A_1_3>6.0</D_A_1_3><D_A_2_3>99</D_A_2_3><D_Y_5>0</D_Y_5></data>
XPath ist installiert, mir ist nur nicht klar wie ich die vielen einzelne Ergebnisse dort in eigene Items parse.

dachte ich muss einfach (/*[name()='data']/*[name()='D_Y_2_01']/) in die Transformation schreiben um das Ergebnis aus <D_Y_2_01>162</D_Y_2_01> zu erhalten, also nur die Zahl 162.
Wäre hier nochmal sehr dankbar für Nachhilfe wie ich das korrekt angehen muss.

Schon mal Danke
Gruß Lenschi
openHAB4.1.1 in einem Docker Container auf RPI4b-4GB, AVM: Fritz!Box 7590 - DECT301 - Comet, DECT210, DECT200, DECT440, Alexa, Shelly, Tasmota, ESP Easy, WLED

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

Re: OH3 Grünbeck SC18

Beitrag von udo1toni »

Also, gewöhnlich sollte die Formatierung so aussehen:

Code: Alles auswählen

XPATH:/data/D_Y_2_01
Dies sollte dann 162 liefern.
Es kann auch sein, dass Du noch ein /text() anhängen musst, so ganz habe ich XPATH auch noch nicht verstanden...

Der Punkt ist aber, dass der XPATH Ausdruck quasi den Pfad zum Wert angibt. Nutzerfreundlich formatiert sieht der Output ja so aus:

Code: Alles auswählen

<data>
	<code>ok</code>
	<D_Y_2_01>162</D_Y_2_01>
	<D_A_1_3>6.0</D_A_1_3>
	<D_D_1>16.0</D_D_1>
	<D_D_2>-</D_D_2>
	<D_C_4_2>21:21</D_C_4_2>
	<D_A_1_6>-</D_A_1_6>
	<D_A_1_1>0.00</D_A_1_1>
	<D_A_1_2>0.28</D_A_1_2>
	<D_A_2_2>000</D_A_2_2>
	<D_A_3_1> 16</D_A_3_1>
	<D_A_3_2>56</D_A_3_2>
	<D_Y_1>162</D_Y_1>
	<D_A_1_3>6.0</D_A_1_3>
	<D_A_2_3>99</D_A_2_3>
	<D_Y_5>0</D_Y_5>
</data>
Da kann man schön erkennen, dass da gar nicht so viel zum entschlüsseln nötig ist.

Wen alle Stricke reißen, kannst Du auch REGEX verwenden, das sähe dann (für den ersten Messwert, wie oben) so aus:

Code: Alles auswählen

REGEX:*.<D_Y_2_01>(.*)</D_Y_2_01>*.
Man könnte hier auch noch besser eingrenzen, aber die Werte müssen eh alle separat heraus gezogen werden, da kann man auch den plumpen Weg gehen.
Aber probiere ruhig noch mal mit XPATH, das sollte eigentlich auch funktionieren.

Das Wichtigste ist ja, dass die Daten nun schon mal in openHAB ankommen. Wie oben erwähnt, verlinke einfach für jeden Wert ein zusätzliches Item. Fange mit einem String Item an, in dem Du bequem im Profile mit XPATH oder notfalls mit REGEX experimentieren kannst, bis der Output dem entspricht, was Du erwartest. Anschließend legst Du die einzelnen Number Items an und nutzt das identische Profile (natürlich jeweils angepasst für den jeweiligen Wert). Ab dem Zeitpunkt sollten alle Werte als Zahlen in openHAB bereitstehen.

Noch ein Tipp: Es ist vermutlich irgendwie möglich, die entsprechenden Einheiten im Profile mit dazu zu zaubern, aber das artet schnell in einen ermüdenden Kampf aus. Für die reine Anzeige eines Wertes kannst Du die Einheit leicht später über die Metadaten des Items hinzufügen. Das Item bleibt vom Typ her ein Number Item (nicht - als Beispiel - Number:Pressure oder sowas), in der Anzeige steht dann trotzdem hPa oder bar oder was auch immer. Wenn Du aber auf den Wert z.B. innerhalb einer Rule Bezug nimmst, musst Du Dich nicht damit rumschlagen, dass eine Einheit an der Zahl dran hängt.

UoM (Units of Measurement) ist eine tolle Funktion, wenn die Werte schon entsprechend angeliefert werden, weil man sich keine Gedanken um die Umrechnung machen muss, einfach gewünschte Einheit angeben, fertig. Um aber eigene Werte in das System einzubringen, ist unverhältnismäßig viel Arbeit nötig.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
lenschith
Beiträge: 238
Registriert: 11. Dez 2020 22:36

Re: OH3 Grünbeck SC18

Beitrag von lenschith »

Hallo Udo,

ich bin immer wieder total geflasht von deinem Know-how und der schnellen Response. Vielen Dank für deine Hilfe. Ich war gestern wahrscheinlich nur zu ungeduldig. Heute mit etwas mehr Ruhe hat das auch alles geklappt so wie gewollt.

Ich habe im Code wie von dir vorgeschlagen die Daten abgerufen

Code: Alles auswählen

UID: http:url:gruenbeck_softliQSC18
label: Grünbeck softliQ:SC18
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://10.10.1.123/
  delay: 0
  stateMethod: POST
  refresh: 60
  commandMethod: GET
  contentType: text/xml
  timeout: 10000
  bufferSize: 2048
channels:
  - id: xmldata
    channelTypeUID: http:string
    label: xmlimport
    description: import der XML Daten
    configuration:
      mode: READONLY
      stateExtension: mux_http
      stateContent: data=getXML("id="+getCookie("id")+"&show=D_D_1|D_C_4_2|D_A_1_1|D_A_1_2|D_A_2_2|D_A_3_1|D_A_3_2|D_A_1_3|D_A_2_3|D_Y_5|D_A_1_3|D_Y_5|D_Y_10_1|D_B_1|D_Y_4_1|D_Y_2_1|D_Y_2_2|D_Y_2_3|D_Y_2_4|D_Y_2_5|D_Y_2_6|D_Y_2_7|D_Y_2_8|D_Y_2_9|D_Y_2_10|D_Y_2_11|D_Y_2_12|D_Y_2_13|D_Y_2_14|D_A_1_9|D_Y_2_01~",1);
Falls es jemanden interessiert, die einzelnen Werte habe ich hier gefunden: https://homematic-forum.de/forum/downlo ... 554b93e046

Daraufhin im Channel die einzelnen Werte mit Items gelinkt via XPath z.B.

Code: Alles auswählen

/data/D_A_1_2[1]/text()
Screenshot 2022-10-25 213433.png
Und dann in der StateDescription die Einheiten dazu gepackt z.B.

Code: Alles auswählen

%s m³
Vielen Dank
Grüße Lenschi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB4.1.1 in einem Docker Container auf RPI4b-4GB, AVM: Fritz!Box 7590 - DECT301 - Comet, DECT210, DECT200, DECT440, Alexa, Shelly, Tasmota, ESP Easy, WLED

Grandlhuber
Beiträge: 26
Registriert: 22. Sep 2021 07:38
Wohnort: Bamberg

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von Grandlhuber »

Hi Leute,

ich besitze ebenfalls eine SC18 und habe eure Lösung ausprobiert. Funktioniert soweit :) .

Nun möchte ich aber den aktuellen Durchfluss anzeigen lassen. Dafür wird ein Code benötigt (005). Habe schon einiges probiert, komm aber nicht dahinter was ich da eintragen muss?!?

Hier der Ausschnitt der Webserver-Doku für den aktuellen Durchfluss:
Aktueller_Durchfluss.jpg
PS: Das war z.B. ein rumgeteste von mir im stateContent in einem neuen Kanal:

Code: Alles auswählen

data=getXML("id="+getCookie("625")+"&show=D_H_2~"+"&code=("005")",1);
xPath im Link:

Code: Alles auswählen

/data/D_H_2[1]/text()
...Zeigt leider nichts an.

Kann wer helfen?

Gruß Oli
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Konfig: OpenHab 3.3.0 auf Raspi 4B+ (Raspian).
SomfyTahoma-Bridge im LAN-Modus, Brunnen-, Zisternensteuerung, Außenlampen, Heizung (WebKM200), PV-Anlage per MQQT, Miele-Trockner, Softliq SC18, Dreambox two sowie div. Shellys zur Steckdosensteuerung per Openhab vernetzt.
Visualisierung über Grafana. Daten in Influx gesichert.

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

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von udo1toni »

Ich denke, es müsste eher so aussehen:

Code: Alles auswählen

stateContent: data=getXML("id=625&show=D_H_2&code=005",1);
Das ist natürlich nur der eine Parameter des Channels, der Rest muss noch dazu.
Ich nehme an, das Cookie wird bei irgendeinem Anmeldeprozess gesetzt und mit der ID gefüllt, "id" ist im Beispiel oben also der Name des Cookies, in dem die ID gespeichert ist, nicht die konkrete Nummer.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
lenschith
Beiträge: 238
Registriert: 11. Dez 2020 22:36

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von lenschith »

Also bei mir ist der aktuelle Durchfluss unter D_A_1_1 und ich brauche diesen Parameter nicht. Aber ich frage das nicht ab. Ich frage die Anlage nur alle paar Std. ab. Da ich festgestellt habe, das sich der Webserver verabschiedet wenn zu häufig anfragen kommen. Hier noch ein link mit der Übersicht für die Parameter https://homematic-forum.de/forum/downlo ... bcee5ddded
openHAB4.1.1 in einem Docker Container auf RPI4b-4GB, AVM: Fritz!Box 7590 - DECT301 - Comet, DECT210, DECT200, DECT440, Alexa, Shelly, Tasmota, ESP Easy, WLED

Grandlhuber
Beiträge: 26
Registriert: 22. Sep 2021 07:38
Wohnort: Bamberg

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von Grandlhuber »

@Udo: Danke, scheint zu gehen. Zumindest zeigt er mir irgendwas an. :lol:

Habe aber das Problem, dass ich hier solche Meldungen von allem Items der Grünbeck-Anlage bekomme:

Code: Alles auswählen

2022-11-21 10:19:36.826 [WARN ] [.profiles.XPathTransformationProfile] - Could not transform state '' with function '/data/D_A_1_2[1]/text()' and format '%s'
Wie damit umgehen? Die ausgelesen Werte scheinen trotz Fehler zu passen.

Grüße :ugeek:
Konfig: OpenHab 3.3.0 auf Raspi 4B+ (Raspian).
SomfyTahoma-Bridge im LAN-Modus, Brunnen-, Zisternensteuerung, Außenlampen, Heizung (WebKM200), PV-Anlage per MQQT, Miele-Trockner, Softliq SC18, Dreambox two sowie div. Shellys zur Steckdosensteuerung per Openhab vernetzt.
Visualisierung über Grafana. Daten in Influx gesichert.

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

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von udo1toni »

Das bedeutet, dass ab und zu der gesuchte Datenpunkt nicht im XML enthalten ist. Da müsste man halt mal schauen, was regulär geliefert wird. Der einfachste Weg hier: lege ein weiteres Item an (Typ String) und verlinke es parallel zum vorhandenen Item. Trage dort kein Profile ein. Nun bekommst Du in diesem Item das gesamte XML ausgeliefert, parallel zum transformierten Wert. Immer wenn nun der Fehler im Log auftritt, suchst Du Dir das Item mit dem xml raus und kannst im Klartext sehen, was die Grünbeck geantwortet hat.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Grandlhuber
Beiträge: 26
Registriert: 22. Sep 2021 07:38
Wohnort: Bamberg

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von Grandlhuber »

Habe ein Item so angelegt wie du gesagt hast. Im Log ist dann auch dieses Item mit genau dem selben Fehler vorhanden. Vielleicht mal die Refresh-Time im Thing erhöhen weil evtl. der Webserver nicht rechtzeitig die Daten liefern kann?!? Ansonsten ist es es halt so. Die Daten werden ja angezeigt...
Konfig: OpenHab 3.3.0 auf Raspi 4B+ (Raspian).
SomfyTahoma-Bridge im LAN-Modus, Brunnen-, Zisternensteuerung, Außenlampen, Heizung (WebKM200), PV-Anlage per MQQT, Miele-Trockner, Softliq SC18, Dreambox two sowie div. Shellys zur Steckdosensteuerung per Openhab vernetzt.
Visualisierung über Grafana. Daten in Influx gesichert.

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

Re: Gelöst: OH3 Grünbeck SC18

Beitrag von udo1toni »

Genau. Refresh höher, und vor allem Timeout höher einstellen. refresh ist in Sekunden anzugeben, timeout sind Millisekunden.

refresh * 1000 sollte immer deutlich höher als timeout sein (wobei man vielleicht auch mal schauen muss, wie die typische Antwortzeit des Servers aussieht, ich denke, dass man dazu das http Binding in den DEBUG Modus versetzen muss)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten