xml-Info an Items übertragen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

xml-Info an Items übertragen

Beitrag von violine21 »

Hallo,

wie ich hier viewtopic.php?f=15&t=862 bereits geschrieben habe, bin ich dabei, meine Photovoltaikanlage
in OpenHab ein zu binden.
Ich kann die Daten aus der Batterie mit folgendem Link abrufen http://http://192.168.178.26/cgi/ems_data.xml
Im Browser bekomme ich diese Antwort:

Code: Alles auswählen

<root Timestamp="1576516607" id="125200833" ChargerCount="1" Description="VARTA">
<inverter id="M454641">
<var name="P" value="0" />
<var name="SOC" value="0" />
<var name="Capacity" value="5868" />
<var name="State" value="4" />
</inverter>
</root>
Ich habe das http-Binding installiert und testweise diese Rule geschrieben:

Code: Alles auswählen

rule "VARTA_auslesen"
when
    Time cron "0,10,20,30,40,50 * * * * ?"// jede 10 Sekunde
then
    val String url = sendHttpGetRequest("http://192.168.178.26/cgi/ems_data.xml")
    val String info = transform("XPATH", "//root/inverter id/text()", url)
    logInfo("VARTA", "Inhalt_xml: " + info)
end
Der log dazu sieht so aus:

Code: Alles auswählen

2019-12-16 18:44:40.120 [INFO ] [eclipse.smarthome.model.script.VARTA] - Inhalt_xml: <root Timestamp='1576518279' id='125200833' ChargerCount='1' Description='VARTA'>
<inverter id='M454641'>
<var name='P' value='0'/>
<var name='SOC' value='0'/>
<var name='Capacity' value='5868'/>
<var name='State' value='4'/>
</inverter>
</root>
Egal, was ich in dieser Zeile

Code: Alles auswählen

val String info = transform("XPATH", "//root/inverter id/text()", url)
versuche, es gelingt mir nicht, einzelne Werte von den values zu bekommen.

Kann mir da evtl. jemand helfen?

Vielen Dank!

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: xml-Info an Items übertragen

Beitrag von violine21 »

Hallo,

nach Recherche im I-Net habe ich folgende Lösung:

Code: Alles auswählen

rule "VARTA_auslesen"
when
    Time cron "0,10,20,30,40,50 * * * * ?"// jede 10 Sekunde
then
    val String url = sendHttpGetRequest("http://192.168.178.26/cgi/ems_data.xml")
    val String varP = transform("XPATH", "/root/inverter/var[1]/@value", url)
    val String varSOC = transform("XPATH", "/root/inverter/var[2]/@value", url)
    val String varCapacity = transform("XPATH", "/root/inverter/var[3]/@value", url)
    val String varState = transform("XPATH", "/root/inverter/var[4]/@value", url)


    logInfo("VARTA", "Inhalt_xml: P= " + varP + " SOC= " + varSOC + " Kapazitaet= " + varCapacity + " Status= " + varState)
end
Im Log-File:

Code: Alles auswählen

2019-12-16 20:25:50.097 [INFO ] [eclipse.smarthome.model.script.VARTA] - Inhalt_xml: P= 0 SOC= 0 Kapazitaet= 5868 Status= 4
Das entspricht genau dem Inhalt der xml-Anfrage.

Viele Grüße

Antworten