OH3.2 XML werte auslesen

Allgemeine Fragen zum Thema "Smart Home" und Entscheidungshilfen

Moderator: seppy

Antworten
ALF69
Beiträge: 3
Registriert: 21. Nov 2017 15:27

OH3.2 XML werte auslesen

Beitrag 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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: OH3.2 XML werte auslesen

Beitrag 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/
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

ALF69
Beiträge: 3
Registriert: 21. Nov 2017 15:27

Re: OH3.2 XML werte auslesen

Beitrag 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!

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: OH3.2 XML werte auslesen

Beitrag 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]+).*.
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

oh73
Beiträge: 286
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: OH3.2 XML werte auslesen

Beitrag 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.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

oh73
Beiträge: 286
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: OH3.2 XML werte auslesen

Beitrag 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!
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Benutzeravatar
sihui
Beiträge: 1827
Registriert: 11. Apr 2018 19:03
Answers: 21

Re: OH3.2 XML werte auslesen

Beitrag von sihui »

oh73 hat geschrieben: 24. Dez 2021 08:29 aber es funktioniert!
Thumbs up!
openHAB3 mit Zwave, Alexa, ESPEasy, MQTT, Logitech Harmony, Philips HUE und ZigBee Hardware auf Proxmox VE.

Antworten