Webradio Magic Me/M7 Chipsatz - Albrecht DR 463

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

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

Beitrag 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...)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

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

Beitrag 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?
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

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

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

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

Beitrag von filmgucker2 »

Alles klar. So geht's also nicht.
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

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

Beitrag von udo1toni »

Die Frage ist, was "nicht geht"
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

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

Beitrag 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...
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

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

Beitrag von udo1toni »

Nein, das ist so nicht vorgesehen. Du musst die Liste manuell erstellen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

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

Beitrag von filmgucker2 »

Hab ich befürchtet...Die nächste Baustelle. Aber erst mal vielen Dank für die Hilfe!
Raspberry Pi 4, OH 4.0.3

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

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

Beitrag 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...
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

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

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten