(gelöst) XML Auslesen... mit HTTP MOD

Begonnen von raiderxxl, 17 Januar 2020, 14:56:41

Vorheriges Thema - Nächstes Thema

raiderxxl

Hallo.

ich versuche mich schon seit 3 Tagen daran... (Bin aber zu Doof)

Ich versuche aus folgender XML (Code) Alle Werte von <yp_currently_playing> in Readings zu schreiben...
Es gibt mehrere verschiede verschachtelte Einträge.
Klar ist mir die Vorgehensweise mit UserReadings und Expression usw.
Nur das eigentliche Expression zum "Finden" bekomme ich nicht hin ;-)

UPDATE Über das Tool: https://xmltoolbox.appspot.com/xpath_generator.html einfach den XPath finden!

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<icestats>
<admin>webmaster@localhost</admin>
<banned_IPs>0</banned_IPs>
<build>20190514062449</build>
<client_connections>25549</client_connections>
<clients>4</clients>
<connections>25332</connections>
<file_connections>309</file_connections>
<host>HOSTNAME</host>
<listener_connections>272</listener_connections>
<listeners>1</listeners>
<location>DE</location>
<outgoing_kbitrate>125</outgoing_kbitrate>
<server_id>Icecast 2.4.0-kh12</server_id>
<server_start>18/Dec/2019:12:49:56 +0100</server_start>
<source_client_connections>9</source_client_connections>
<source_relay_connections>0</source_relay_connections>
<source_total_connections>9</source_total_connections>
<sources>3</sources>
<stats>0</stats>
<stats_connections>0</stats_connections>
<stream_kbytes_read>181944105</stream_kbytes_read>
<stream_kbytes_sent>13581654</stream_kbytes_sent>
<source mount="/kuschel">
<audio_codecid>2</audio_codecid>
<audio_info>bitrate=128;channels=2;samplerate=44100</audio_info>
<bitrate>128</bitrate>
<connected>2591020</connected>
<genre>Kuschelrock</genre>
<incoming_bitrate>162728</incoming_bitrate>
<listener_connections>161</listener_connections>
<listener_peak>4</listener_peak>
<listeners>0</listeners>
<listenurl>http://hostname:8000/kuschel</listenurl>
<max_listeners>unlimited</max_listeners>
<metadata_updated>17/Jan/2020:14:09:38 +0100</metadata_updated>
<mpeg_channels>2</mpeg_channels>
<mpeg_samplerate>44100</mpeg_samplerate>
<outgoing_kbitrate>0</outgoing_kbitrate>
<public>0</public>
<queue_size>64784</queue_size>
<server_description>Best music in the house</server_description>
<server_name>Radio Kugele</server_name>
<server_type>audio/mpeg</server_type>
<slow_listeners>0</slow_listeners>
<source_ip>10.10.10.10</source_ip>
<stream_start>18/Dec/2019:14:29:40 +0100</stream_start>
<title>1-109 New Kid in Town</title>
<total_bytes_read>51821273347</total_bytes_read>
<total_bytes_sent>6030957751</total_bytes_sent>
<total_mbytes_sent>5751</total_mbytes_sent>
<user_agent>libshout/2.4.1</user_agent>
<yp_currently_playing>1-109 New Kid in Town</yp_currently_playing>
</source>
<source mount="/stream">
<audio_codecid>2</audio_codecid>
<audio_info>bitrate=128;channels=2;samplerate=44100</audio_info>
<bitrate>128</bitrate>
<connected>2591020</connected>
<genre>ChillHouseMix</genre>
<incoming_bitrate>130080</incoming_bitrate>
<listener_connections>48</listener_connections>
<listener_peak>3</listener_peak>
<listeners>1</listeners>
<listenurl>http://kugiserver:8000/stream</listenurl>
<max_listeners>unlimited</max_listeners>
<metadata_updated>17/Jan/2020:13:27:44 +0100</metadata_updated>
<mpeg_channels>2</mpeg_channels>
<mpeg_samplerate>44100</mpeg_samplerate>
<outgoing_kbitrate>125</outgoing_kbitrate>
<public>0</public>
<queue_size>94041</queue_size>
<server_description>Best music in the house</server_description>
<server_name>Radio Kugele</server_name>
<server_type>audio/mpeg</server_type>
<slow_listeners>2</slow_listeners>
<source_ip>10.10.10.10</source_ip>
<stream_start>18/Dec/2019:14:29:38 +0100</stream_start>
<title>Deep House Chill Welcome 2018 (Bes</title>
<total_bytes_read>46626265733</total_bytes_read>
<total_bytes_sent>6278737560</total_bytes_sent>
<total_mbytes_sent>5987</total_mbytes_sent>
<user_agent>libshout/2.4.1</user_agent>
<yp_currently_playing>Deep House Chill Welcome 2018 (Bes</yp_currently_playing>
</source>
<source mount="/xmas">
<artist>Stevie Wonder</artist>
<audio_codecid>2</audio_codecid>
<audio_info>bitrate=128;channels=2;samplerate=44100</audio_info>
<bitrate>128</bitrate>
<connected>2178795</connected>
<genre>X-Mas Songs</genre>
<incoming_bitrate>325576</incoming_bitrate>
<listener_connections>11</listener_connections>
<listener_peak>3</listener_peak>
<listeners>0</listeners>
<listenurl>http://kugiserver:8000/xmas</listenurl>
<max_listeners>unlimited</max_listeners>
<metadata_updated>17/Jan/2020:14:11:06 +0100</metadata_updated>
<mpeg_channels>2</mpeg_channels>
<mpeg_samplerate>44100</mpeg_samplerate>
<outgoing_kbitrate>0</outgoing_kbitrate>
<public>0</public>
<queue_size>85681</queue_size>
<server_description>magic music in the house</server_description>
<server_name>Radio Kugele</server_name>
<server_type>audio/mpeg</server_type>
<slow_listeners>0</slow_listeners>
<source_ip>10.10.10.10</source_ip>
<stream_start>23/Dec/2019:09:00:05 +0100</stream_start>
<title>Someday at Christmas</title>
<total_bytes_read>78644391599</total_bytes_read>
<total_bytes_sent>1266484910</total_bytes_sent>
<total_mbytes_sent>1207</total_mbytes_sent>
<user_agent>libshout/2.4.1</user_agent>
<yp_currently_playing>Stevie Wonder - Someday at Christmas</yp_currently_playing>
</source>
</icestats>



Könnte mir büüüüüüüde jemand helfen???

Oder gibt es ein Modul mitReadings die mir die Metadaten eines Webstreams (Radio) anzeigen?


Danke

Grüßle
Pascal
FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

amenomade

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

raiderxxl

Du bist mein Held!!
Danke!!!

Ich bekomme jetzt 3 Readings:

setstate testtest 2020-01-18 13:42:11 Current-1 <yp_currently_playing>1-117 All I Wanna Do Is Making Love</yp_currently_playing>
setstate testtest 2020-01-18 13:42:11 Current-2 <yp_currently_playing>Deep House Hits 2019 (Summer Special Chill Out Mix #14)</yp_currently_playing>
setstate testtest 2020-01-18 13:42:11 Current-3 <yp_currently_playing>My Love is Always Here - Harry Potter and the Deathly Hallows Part 1</yp_currently_playing>


wenn ich jetzt deinen Vorschlag ändere damit ich nur den String bekomme (ohne <yp_currently blabla...)
string(//yp_currently_playing)

setstate testtest 2020-01-18 13:45:09 Current 2-210 In the Ghetto

Bekomme ich nur noch ein einziges Reading...

Gib es dafür auch eine Lösung???

Grüßle

Pascal

FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

amenomade

Das hängt nicht an Fhem sondern an XPath. string() ergibt immer nur den Wert des ersten Node (wenn mehrere)
Lieber die Readings mit readingXX-XOExpr nachformattieren
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Prof. Dr. Peter Henning

Nicht doch. Man kann jedes Array-Element einzeln adressieren. Tipp: XPath Grundlagen ansehen.

LG

pah

amenomade

Zitat von: Prof. Dr. Peter Henning am 19 Januar 2020, 18:17:57
Nicht doch. Man kann jedes Array-Element einzeln adressieren. Tipp: XPath Grundlagen ansehen.

LG

pah
Natürlich kann man, aber dafür muss man dann im HTTPMOD jedes einzelne Reading mit seinem eigenen XPath definieren (2 Attribute je). Und falls ein zusätzliches Node irgendwann im XML kommt, kriegt man es nicht automatisch, weil die entspr. Attribute fehlen.
Deswegen den Vorschlag mit OExpr.

Aber alle Wege führen nach Rom...
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

raiderxxl

Hi,

ich habe jetzt mal 4 Readings eingebaut.

attr webradio reading01Name Kuschelrock
attr webradio reading01XPath-Strict string(/icestats/source[1]/yp_currently_playing)
attr webradio reading02Name ChillHouse
attr webradio reading02XPath-Strict string(/icestats/source[2]/yp_currently_playing)
attr webradio reading03Name MovieRadio
attr webradio reading03XPath-Strict string(/icestats/source[3]/yp_currently_playing)
attr webradio reading04Name XMASRadio
attr webradio reading04XPath-Strict string(/icestats/source[4]/yp_currently_playing)


Ich habe den XPath online über ein Tool ermittelt :) Ist voll easy :)

https://xmltoolbox.appspot.com/xpath_generator.html

Sehr einfach zu bedienen!
FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

raiderxxl

Hi,

Reading kommen.. alles wunderbar... nur schmiert mir jetzt FHEM komplett immer wieder ab... jetzt lässt sich FHEM gar nicht mehr starten....
im log steht nix... über http nicht mehr zu erreichen...

Hier das device als raw

define webradio HTTPMOD http://admin:PASSWORD@192.168.178.4:8000/admin/stats 60
setuuid webradio 5e259550-f33f-044a-6c2b-ac38145056553639
attr webradio userattr reading01Name reading01XPath-Strict reading02Name reading02XPath-Strict reading03Name reading03XPath-Strict reading04Name reading04XPath-Strict
attr webradio DbLogExclude .*
attr webradio DbLogInclude ChillHouse,Kuschelrock,MovieRadio,XMASRadio
attr webradio alias Webradio-Test
attr webradio disable 0
attr webradio enableControlSet 1
attr webradio event-on-change-reading .*
attr webradio reading01Name Kuschelrock
attr webradio reading01XPath-Strict string(/icestats/source[1]/yp_currently_playing)
attr webradio reading02Name ChillHouse
attr webradio reading02XPath-Strict string(/icestats/source[2]/yp_currently_playing)
attr webradio reading03Name MovieRadio
attr webradio reading03XPath-Strict string(/icestats/source[3]/yp_currently_playing)
attr webradio reading04Name XMASRadio
attr webradio reading04XPath-Strict string(/icestats/source[4]/yp_currently_playing)
attr webradio room Webradio


das device aus der Cfg genommen und FHEM läuft wieder...
Hmmm komisch...
FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

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

raiderxxl

Jetzt ja... dachte bei direktem ip Aufruf währe das unnötig....

Mal schauen ob's besser wird...

FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

raiderxxl

FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

amenomade

Was sagt die Log kurz vor Absturz?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

raiderxxl

#12
Zitatim log steht nix

aber auch garnix....

Was mir auffällt ist das wenn ich dann den Service neustarte es echt 20-30 Sekunden dauert bis der Befehl durchgeführt wurde...

FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....

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

raiderxxl

So habe den Übeltäter gefunden...

Es waren wilde Zeichen in den Werten ( Komische Icons/Emoticons) in FEHM kam dan sowas in der art an (...ĉ...)
Habe die mp3 Files umbenannt seit dem läuft es ohne abstürzter...


Aber schon komisch das FHEM komplett wegkachelt wenn was nicht richtig in einem Readingswert ist.
Kann man das nicht irgendwie kapseln?

Grüßle

Pascal
FHEM VM Ubuntu-Server auf Intel® NUC-Kit NUC6i5SYH ESXi 6.5
FHEM auf Raspberry2 OSMC Hyperion und TTS

Homematic,TradfriHub und Lampen,WIFILight,Fritzbox,FritzDECT,NanoCul433,IT Steckdosen,Diverse Nachbar-Sensoren,XiaomiZigbee,
ESP_Signalduino,ESPEasy,Amad,HarmonyHub,WLED,MQTT,Tasmota....