Seite 1 von 1

OH3.2 XML werte auslesen

Verfasst: 22. Dez 2021 13:59
von ALF69
Hi,

möchte gerne von der Heizung folgende xml auslesen siehe "Dimplex Heizung xml.txt".
Folgendes erste die html.cfg eingebunden:
http:WPMCacheInteger.url=http://192.168.178.49/usr-cgi/xml.cgi?I%%7c1%%7c207
http:WPMCacheInteger.updateInterval=60000
http:WPMCacheAnalog.url=http://192.168.178.49/usr-cgi/xml.cgi?A%%7c1%%7c207
http:WPMCacheAnalog.updateInterval=60000
http:WPMCacheDigital.url=http://192.168.178.49/usr-cgi/xml.cgi?D%%7c1%%7c207
http:WPMCacheDigital.updateInterval=60000

und mit folgenden Items versucht die Werte zu übernehmen
Number WPM_In_EVU_Sperre "EVU Sperre [MAP(wpm_in.map):%d]" <blocked> (gWPMIn,gLog) { http="<[WPMCacheAnalog:60000:REGEX(.*?<INDEX>56</INDEX>\\n\\t*<VALUE>(.*?)</VALUE>.*)]" }
Number WPM_In_Sperre_Extern "Sperre Extern [MAP(wpm_in.map):%d]" <blocked> (gWPMIn,gLog) { http="<[WPMCacheAnalog:60000:REGEX(.*?<INDEX>63</INDEX>\\n\\t*<VALUE>(.*?)</VALUE>.*)]" }


Egal was ich mache, ich komme hier nicht weiter. Gibt es eine andere Möglichkeit so eine xml auszulesen?

Vielen Dank.

Re: OH3.2 XML werte auslesen

Verfasst: 22. Dez 2021 16:21
von sihui
ALF69 hat geschrieben: 22. Dez 2021 13:59 Egal was ich mache, ich komme hier nicht weiter.
Du nutzt die Konfig Syntax des http1 Bindings. Das gibt es in openHAB3 nicht mehr. Das http Binding für openHAB3 nutzt die übliche Things und Channel Konfiguration:
https://www.openhab.org/addons/bindings/http/

Re: OH3.2 XML werte auslesen

Verfasst: 22. Dez 2021 18:03
von ALF69
Vielen Dank!
Das ist mir dann auch aufgefallen:

Thing http:url:wpm_analog "Wärmepumpe Analog"
[
baseURL="http://192.168.178.49/usr-cgi/xml.cgi?A%%7c1%%7c207",
refresh=60
]
{
Channels:
Type string : WPM_Aussentemp1 "Außentemperatur" [stateTransformation="REGEX(.*?<INDEX>27</INDEX>\\n\\t*<VALUE>(.*?)</VALUE>.*)"]
}


Items:
String WPM_Aussentemp "myTemp [%s]°C" <temperature> (gWPM,gAussen,gAussenChart,gWPMChart,gLog) {channel="http:url:wpm_analog:WPM_Aussentemp1"}
Das liefert aber auch kein Ergebnis!

Re: OH3.2 XML werte auslesen

Verfasst: 22. Dez 2021 20:01
von sihui
ALF69 hat geschrieben: 22. Dez 2021 18:03 Das liefert aber auch kein Ergebnis!
Manuelle Things Dateien sind mir ein Graus, ich bin da raus, sorry.

Allgemein: ich würde die Regex Syntax mal über einen Regex Syntax Checker wie z.B https://regex101.com/ prüfen.
Damit habe ich bis jetzt jede Nuss knacken können.

Ich habe die Erfahrung gemacht, dass in openHAB das komplette Einlesen der Datei mit am Anfang und Ende der Regex einige Problemchen beheben kann, also etwa so:

Code: Alles auswählen

REGEX:.*.Text.\n.\d\d\d..\n.([0-9]+).*.

Re: OH3.2 XML werte auslesen

Verfasst: 23. Dez 2021 19:00
von oh73
ich denke mit Regex kommst du da nicht weiter.

XPath dürfte da die bessere Wahl sein,

hab mal etwas gesucht und diesen Beitrag gefunden,
viewtopic.php?t=2778

ich denke damit könntest du weiter kommen.

Re: OH3.2 XML werte auslesen

Verfasst: 24. Dez 2021 08:29
von oh73
hab gestern Abend mal sebst versucht,
die XML Datei bei mir gespeichert und in Variable eingelesen.

dabei hab ich auch gelernt wie ich
executeCommandLine(....)
ohne Fehler aufrufen kann!

aber alle Versuche den Wert bei Index 56 mit RegEx oder XPath aus zu lesen brachten nicht das gewünschte Ergebnis!

womit ich den Wert aber erfolgreich auslesen kann ist eine Rule wo ich den XML String mit split('<INDEX>56</INDEX>'),get(1) zerlege!

Code: Alles auswählen

rule "xml_auslesen"
when
	Item xml_lesen changed
then
	var file = executeCommandLine(Duration.ofSeconds(2),"cat","/etc/openhab/scripts/xml.xml")
	
	val String suche_index = file.split('<INDEX>56</INDEX>').get(1)
	val String suche_value = suche_index.split('<VALUE>').get(1)
	val String value = suche_value.split('</VALUE>').get(0)

	logInfo("XPATH"," Value  : "+value)
end
ist sicher nicht die schönste, richtige Lösung, aber es funktioniert!

Re: OH3.2 XML werte auslesen

Verfasst: 24. Dez 2021 09:38
von sihui
oh73 hat geschrieben: 24. Dez 2021 08:29 aber es funktioniert!
Thumbs up!