Seite 3 von 5

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 20. Apr 2022 23:00
von udo1toni
Das ist Dein xml:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<menu>
	<item_total>6</item_total>
	<item_return>6</item_return>
	<item>
		<id>137_0</id>
		<status>file</status>
		<name>Absolut TOP </name>
	</item>
	<item>
		<id>137_1</id>
		<status>file</status>
		<name>Absolut relax </name>
	</item>
	<item>
		<id>137_2</id>
		<status>file</status>
		<name>MDR AKTUELL </name>
	</item>
	<item>
		<id>137_3</id>
		<status>file</status>
		<name>AIDAradio </name>
	</item>
	<item>
		<id>137_4</id>
		<status>file</status>
		<name>MDR SPUTNIK </name>
	</item>
	<item>
		<id>137_5</id>
		<status>file</status>
		<name>TOGGO Radio </name>
	</item>
</menu>
Nur etwas anders formatiert :)
Was sofort auffällt: Du hast mehrere Knoten mit dem Namen item, welche sich nur inhaltlich unterscheiden. Ansprechend kannst Du diese über den Index. z.B. /menu/item[2]/name/text() sollte als Ergebnis Absolut Relax liefern. Wenn Du den Index weg lässt, sollten eigentlich alle Nodes verwendet werden, es sollte also eine Liste mit allen Namen entstehen, aber ich vermute mal, dass die XPATH Transformation hier schummelt (auch weil openHAB bisher leider Listen sehr stiefmütterlich behandelt...) und nur den ersten Wert ausliefert.
Statt eines fixen Index kannst Du natürlich auch den Node nach seinem Inhalt auswählen, z.B. /menu/item[id='137_3']/name sollte Dir die Ausgabe AIDAradio bringen (mit einem Leerzeichen am Ende...). Du siehst also, das ist im Vergleich zu REGEX sehr mächtig :) wenn man weiß, wie man damit umgehen muss.

Ich möchte an dieser Stelle empfehlen, dass Du Dir die XPATH Syntax anschaust, z.B. https://www.w3schools.com/xml/xpath_syntax.asp wäre eine gute Quelle.
Weiterhin (zumindest, wenn Du häufiger damit zu tun hast) ist es empfehlenswert, ein paar Tools zur Hand zu haben. Ich habe gerade auf die Schnelle die Plugins XML Tools und Npp XML Treeview in Notepad++ installiert, was mir die notwendigen Funktionen zur Verfügung stellt, um hier anzugeben ;)
Ähnliche Plugins gibt es auch für VSCode (nur massig mehr... und VSCode hätte ich erst starten müssen, während Npp schon gestartet war...)

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 24. Apr 2022 17:11
von filmgucker2
danke, klappt alles so, wie Du es schreibst. Aber: Openhab bringt mir leider eben nur immer die jeweils ersten Einträge,
oder halt jenen, der zum index gehört.
Dann müsste ich mir wohl mehrere items als Gruppe anlegen, um dann die einzelnen Einträge also items anzusprechen?

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 24. Apr 2022 18:51
von udo1toni
Ein Item enthält immer exakt einen Wert. Du kannst natürlich einen String in einem Item hinterlegen, der dann auch mehrere werte enthalten kann, aber wie willst Du dann auf die einzelnen Werte zugreifen? Also, Items speichern immer Einzelwerte.

Wenn Du über einen Channel ein xml Objekt erhältst (oder auch ein json Objekt), kannst Du diesen Channel als String Channel anlegen und beliebig Teile dieses Strings über XPATH (bzw. JSONPATH) in Items ablegen. Der Punkt dabei ist, dass Du beliebig viele Items an ein und den selben Channel hängen kannst. Naturgemäß funktioniert das in erster Linie für die Empfangsrichtung.

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 24. Apr 2022 18:56
von filmgucker2
Alles klar. So geht's also nicht.

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 24. Apr 2022 21:02
von udo1toni
Die Frage ist, was "nicht geht"

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 2. Mai 2022 20:27
von filmgucker2
Sorry, hatte ein paar Tage was Anderes zu tun...
Na ja, was ich möchte, so als Noob, ist, etwa auf dem Habpanel (zur modernen Obberfläche mit Custom
Widgets reichts noch nicht) mir meine Radiosender als Liste anzeigen lassen. Auf einen Eintrag drauftippen,
und der Sender wird abgespielt...
Und da dachte ich doch, so eine Liste wird dann im Item gleich ausgegeben. Aber das ist wohl leider zu einfach...

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 2. Mai 2022 20:49
von udo1toni
Nein, das ist so nicht vorgesehen. Du musst die Liste manuell erstellen.

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 2. Mai 2022 21:11
von filmgucker2
Hab ich befürchtet...Die nächste Baustelle. Aber erst mal vielen Dank für die Hilfe!

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 2. Mai 2022 22:47
von filmgucker2
...und die Bauarbeiten haben begonnen: Hab mir zwischenzeitlich einen Dabman i400
mit gleichem Chipsatz gegönnt, weil es da nette Api Erklärungen im Netz gibt.
Also: Mein Thing kriegt mehrere Channels mit den entsprechenden state url extensions.
Ein Item zeigt mir etwa die Senderliste in dem allseits beliebten xml Format, so wie oben
an.
Für die einzelnen Sender dann den XPath Ausdruck -auch so wie gelernt- in einzelnen Items eingetragen.
Sender wird mit Namen auch schön angezeigt. Gierig, wie ich dann wurde habe ich dann noch mehr
channels und items aus anderen Abfragen geschaffen. Immer mit XPath. Wurde mir - zeitweise - auch sehr
schön alles im Habpanel angezeigt. Aber dann: Alle paar Sekunden wurde in jedem oder auch nur ein paar
items wieder der ganze nicht transformierte String anzeigt...und dann wieder der Einzelwert.
Was kann denn das bedeuten? XPath überlastet? Ist Regex vielleicht doch besser? Da fehlt mir aber gerade
der entsprechende Ausdruck, der das Ergebnis wie bisher von XPath ausgibt...

Re: Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Verfasst: 2. Mai 2022 23:45
von udo1toni
Wenn zeitweise der komplette String angezeigt wird, deutet das darauf hin, dass der String zeitweise kein gültiges xml enthält.

Wie gesagt ist das so nicht vorgesehen, je nachdem, wie Du das Ganze angelegt hast, kann es durchaus sein, dass Du zu viele Berechnungen durchführst. openHAB ist als Mittler gedacht. openHAB ist zur Automation gedacht. openHAB ist nicht als UI gedacht. Entsprechend ist dieser Zweig von openHAB nicht auf Leistung ausgerichtet.