xml aus Wechselrichter auslesen und verarbeiten

Begonnen von australien, 30 Mai 2017, 22:50:15

Vorheriges Thema - Nächstes Thema

australien

Hallo zusammen,

nun hab ich schon einige Beispiele zum XML auslesen gefunden und versucht, leider ohne Erfolg.

Ich will meinen Wechselrichter auslesen und dieser liefert die folgende XML Datei


http://10.68.0.44/measurements.xml

<?xml version="1.0" encoding="UTF-8"?>
-<root>
-<Device DateTime="2017-05-30T22:16:26" IpAddress="10.68.0.44" NetBiosName="INV0055XXXXXXX" BusAddress="1" Serial="7527XXXCCCCDDDD" Type="Inverter" Name="SF-WR-5503">
-<Measurements>
<Measurement Type="AC_Voltage1" Unit="V" Value="233.419"/>
<Measurement Type="AC_Voltage2" Unit="V" Value="234.959"/>
<Measurement Type="AC_Voltage3" Unit="V" Value="235.651"/>
<Measurement Type="AC_Frequency1" Unit="Hz" Value="49.983"/>
<Measurement Type="AC_Frequency2" Unit="Hz" Value="49.983"/>
<Measurement Type="AC_Frequency3" Unit="Hz" Value="49.985"/>
<Measurement Type="DC_Voltage" Unit="V" Value="0.100"/>
<Measurement Type="Temp" Unit="°C" Value="34.270"/>
</Measurements>
</Device>
</root>



es befinden sich unter Tages auch noch die AC_Power usw unter den Daten, aber alle im gleichen Format.

Das Einbinden in FHEM habe ich mit HTTPMOD gemacht und es liefert mir folgendes Ergebnis


TYPE HTTPMOD
addr http://10.68.0.144:80

buf HTTP/1.1 200 OK Content-Type: application/xml Cache-Control: No-Cache <?xml version='1.0' encoding='UTF-8'?><root><Device Name='SF-WR-5503' Type='Inverter' Serial='752794AB005' BusAddress='1' NetBiosName='INV00' IpAddress='10.68.0.44' DateTime='2017-05-30T22:02:10'><Measurements><Measurement Value='233.140' Unit='V' Type='AC_Voltage1'/><Measurement Value='234.777' Unit='V' Type='AC_Voltage2'/><Measurement Value='235.107' Unit='V' Type='AC_Voltage3'/><Measurement Value='50.018' Unit='Hz' Type='AC_Frequency1'/><Measurement Value='50.016' Unit='Hz' Type='AC_Frequency2'/><Measurement Value='50.016' Unit='Hz' Type='AC_Frequency3'/><Measurement Value='0.200' Unit='V' Type='DC_Voltage'/><Measurement Value='34.600' Unit='°C' Type='Temp'/></Measurements></Device></root>


code 200
conn
data
displayurl http://10.68.0.144/measurements.xml



soweit hab ich es hinbekommen, nur wie geht es weiter?

Ich will gerne einen bzw. 2-3 Werte auslesen und ev. ein Diagramm der Tagesleistung erzeugen.
oder den Leistungswert in Abhängigkeit von Datum/Temperatur für die RolloSteuerung verwenden......


ich würde mich über jede Hilfe freuen.

Danke

Robert

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

amenomade

#1
Zitatnur wie geht es weiter?
Mit reading[0-9]+Name und reading[0-9]+Regex, die Werte auslesen.

attr myHttpMod reading01Name AlternativeCurrentVoltage1
attr myHttpMod reading01Regex AC_Voltage1\" Unit=\"V\" Value=\"([\.\d]+)

attr myHttpMod reading02Name DirectCurrent
attr myHttpMod reading02Regex DC_Voltage\" Unit=\"V\" Value=\"([\.\d]+)


Es ist mir nicht klar, ob dein HTTPMOD die Textdelimiter " oder ' nutzt. Ggf. entspr. anpassen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

australien

Hallo amenomade,

danke für deine Hilfe

ich habe nun folgende attr eingetragen:

define PV_WR HTTPMOD http://10.68.0.144/measurements.xml 60
attr PV_WR userattr reading01Name reading01Regex reading02Name reading02Regex readingsName_AC_Power
attr PV_WR reading01Name AC_Power
attr PV_WR reading01Regex AC_Power\' Unit=\'W\' Value=\'([\.\d]+)



die aktuelle XML liefert folgendes, auszug aus dem list


CHANGED
   DEF        http://10.68.0.44/measurements.xml 60
   Interval   60
   LASTSEND   1496211235.57907
   MainURL    http://10.68.0.44/measurements.xml
   ModuleVersion 3.3.11 - 8.5.2017
   NAME       PV_WR
   NR         172
   STATE      ???
   TRIGGERTIME 1496211295.57777
   TRIGGERTIME_FMT 2017-05-31 08:14:55
   TYPE       HTTPMOD
   addr       http://10.68.0.44:80
   buf        HTTP/1.1 200 OK

Content-Type: application/xml

Cache-Control: No-Cache



<?xml version='1.0' encoding='UTF-8'?><root><Device Name='SF-WR-5503' Type='Inverter' Serial='752794' BusAddress='1' NetBiosName='INV09' IpAddress='10.68.0.44' DateTime='2017-05-31T07:49:54'><Measurements><Measurement Value='232.685' Unit='V' Type='AC_Voltage1'/><Measurement Value='233.261' Unit='V' Type='AC_Voltage2'/><Measurement Value='233.908' Unit='V' Type='AC_Voltage3'/><Measurement Value='1.231' Unit='A' Type='AC_Current1'/><Measurement Value='1.213' Unit='A' Type='AC_Current2'/><Measurement Value='1.214' Unit='A' Type='AC_Current3'/><Measurement Value='849.669' Unit='W' Type='AC_Power'/><Measurement Value='286.478' Unit='W' Type='AC_Power1'/><Measurement Value='283.167' Unit='W' Type='AC_Power2'/><Measurement Value='283.575' Unit='W' Type='AC_Power3'/><Measurement Value='49.995' Unit='Hz' Type='AC_Frequency1'/><Measurement Value='50.019' Unit='Hz' Type='AC_Frequency2'/><Measurement Value='50.018' Unit='Hz' Type='AC_Frequency3'/><Measurement Value='506.500' Unit='V' Type='DC_Voltage'/><Measurement Value='1.711' Unit='A' Type='DC_Current'/><Measurement Value='866.621' Unit='W' Type='DC_Power'/><Measurement Value='49.930' Unit='°C' Type='Temp'/></Measurements></Device></root>
   code       200
   conn
   data
   displayurl http://10.68.0.44/measurements.xml
   header
   host       10.68.0.44
   httpheader HTTP/1.1 200 OK

Content-Type: application/xml

Cache-Control: No-Cache
   httpversion 1.0
   hu_blocking 0
   hu_filecount 10
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /measurements.xml
   protocol   http
   redirects  0
   timeout    2
   url        http://10.68.0.44/measurements.xml
   value      0
   QUEUE:
   Readings:
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://10.68.0.44/measurements.xml
     value      0
   Sslargs:
Attributes:
   reading01Name AC_Power
   reading01Regex AC_Power\' Unit=\'W\' Value=\'([\.\d]+)
   reading02Name AlternativeCurrentVoltage1
   reading02Regex AC_Voltage1\' Unit=\'V\' Value=\'([\.\d]+)
   readingsName_AC_Power AC_Power
   room       8.1.Aussen,9.1.Geräte,9.9.System
   userattr   reading01Name reading01Regex reading02Name reading02Regex readingsName_AC_Power



es kommen keine Fehlermeldungen aber auch keine Werte?
ich bin was FHEM angeht doch noch ein Anfänger, leider.

kannst du mir bitte eine Codezeile für meinen Fall erstellen, den Rest sollte ich hoffentlich dann selbstständig hin bekommen :(

Danke

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"

amenomade

AC_Voltage1\'\/><Measurement Value=\'([\.\d]+)

Du kannst deine Regex auf dieser Seite testen: https://regex101.com/

Trag deine XML Daten in TEST STRING ein, und die Regex in REGULAR EXPRESSION.

Dann kannst Du gucken, wie er matcht und was er extrahiert.
Die obere Regex matcht
ZitatAC_Voltage1'/><Measurement Value='
und extrahiert dann die nachfolgende Zahlen oder Punkte.

Wenn Du deine Maus durch die Regex bewegst, wird jede Einzelheit erklärt
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

australien

raspberry pi3
signalduino, Shelly1, Shelly2, Sonos, Unifi
Amazon Fire Tablet 7 | Noname Android Tablet 10"