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
reading01XPath-Strict //yp_currently_playing
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
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
Nicht doch. Man kann jedes Array-Element einzeln adressieren. Tipp: XPath Grundlagen ansehen.
LG
pah
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...
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!
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...
dnsServer auf global gesetzt ?
Jetzt ja... dachte bei direktem ip Aufruf währe das unnötig....
Mal schauen ob's besser wird...
Nope immer noch abstürzte...
Was sagt die Log kurz vor Absturz?
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...
auch mit verbose 5?
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