Logitech Media Server CLI mit Webhooks

Hi,

ich weiss nicht wer den LMS, aka Squeezeboxserver, noch kennt. Ist ein Multiroom-Audioserver für die Squeezeboxen von Logitech oder beliebige open Source player mit Squeezelite (z.B. Max2Play).

Das Teil kann man per CLI steuern und ich frage mich, ob das mit diesen Webhooks gehen würde. Leider verstehe ich weder Webhooks noch die Dokus zur CLI (LMS-CLI-Documentation/LMS-CLI.md at master · elParaguayo/LMS-CLI-Documentation · GitHub).

Vielleicht kann jemand der sich mit Programmierung auskennt und auch diese Webhooks verstanden hat. mir kurzes Feedback geben, ob ich ggf. auf der richtigen Spur bin?

Danke und Gruss
Frank

Was möchtest Du denn genau machen?

Das github-repo ist nicht das Originale.

Es gibt eine Integration für den Logitechserver Squeezebox (Lyrion Music Server) - Home Assistant.

Lt. Doku soll das gehen

this platform uses the web interface of the Logitech Media Server (LMS) to send commands. The default port of the web interface is 9000. It is the same port that you use to access the LMS through your web browser.

@Expalmi
Die kenne und nutze ich. Allerdings steht ja ganz unten, dass es die Kommandos via Python unterstützt. Da ich von Python keinen Plan habe, hatte ich auf einen anderen Weg gehofft.

@frittes
Meine wichtigsten Anwendungsfälle wären
a) Steuerung der Wecker in den Radios (Definieren, Ein/Ausschalten, Löschen)
b) Synchronisierung zwischen Playern Ein-/Ausschalten
c) Bessere Verwaltung der Favoriten, speziell im Zusammenhang mit Plugins. Der Mediaplayer von HA kann z.B. nicht auf Playlisten von Spotify oder DI.FM zugreifen, was z.B. bei Openhab geht.

Vermutlich bin ich einfach zu unfähig.

Wenn ich unter den Entwicklertools - Dienste folgendes wähle:

service: squeezebox.call_method
data:
  command: stop
target:
  entity_id: media_player.squeezebox_touch

Dann tut das. Ebenso mit Command: play nimmt er den Stream wieder auf.

Nun sollte das hier aber eine Playlist anspringen (soweit ich das verstehe, sollte der Name funktionieren ?)

service: squeezebox.call_method
data:
  parameters: play,animals
  command: playlist
target:
  entity_id: media_player.squeezebox_touch

Da passiert nix, ausser dass ich einen Fehler im Log bekomme:

2024-04-23 12:40:43.533 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Invalid data for call_service at pos 1: value should be a string @ data['parameters'][0]
2024-04-23 12:40:43.533 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140627209372864] Error handling message: value should be a string @ data['parameters'][0]. Got None (invalid_format) Frank from 192.168.1.85 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36)

Die Meldung, dass P0 ein String sein soll, ergibt keinen Sinn für mich, da es ja als Entität (und damit als String) übergeben wird

Wo hab ich den Knoten?

Edit: Ich glaube, langsam verstehe ich die Syntax. Schon recht verquer gelöst.
Bei den Alarmen werden Zeiten in Sekunden von Mitternacht ausgegeben… oh boy, wenn man das nutzen will, um Wecker über HA zu programmieren, dann wird das ne Helfer-Schlacht.
Entweder ziehen manche Parameter schlicht nicht, oder ich hab noch ein paar Details nicht kapiert.

Zumindest mal danke an euch für den Denkanstoss, mich nochmal mit der Integration zu beschäftigen. Die Doku dazu ist echt nicht hilfreich…

Hallo, ich stehe gerade vor dem gleichen Problem, würde gerne die Alarme meiner Squeezebox-Player über HA lesen/schreiben. Hast Du das Problem für Dich gelöst?

Moin,

ich weiss nicht, ob ich das als “gelöst” betrachten würde :wink:

Für die Playlisten nutze ich nun REST Comands, die ich per Automation aufrufe. Super aufwendig wenn man mehrere SB Radios hat, aber mir ist nix besseres eingefallen

Schaut dann so aus:

play_swr3_sb1:
  url: 'http://192.168.x.x:9000/plugins/Favorites/index.html?action=play&index=0&player=00:04:20:23:xx:xx'
  
play_chilltrax_sb1:
  url: 'http://192.168.x.x:9000/plugins/Favorites/index.html?action=play&index=1&player=00:04:20:xx:xx:xx'

play_chillout_sb1:
  url: 'http://192.168.x.x:9000/plugins/Favorites/index.html?action=play&index=2&player=00:04:20:xx:xx:xx'

Blöderweise referenziert das Kommando auf die Position in der Favoritenliste. Wenn man also die Favoriten im LMS ändert und SWR3 von Pos 3 auf 12 rutscht, dann spielt das Kommando das ab was nun auf Platz 3 liegt. Zudem habe ich es nicht geschafft, daraus ein Template oder so zu basteln, bei dem man dann beim Aufruf den Zielplayer als Parameter übergibt, das wäre sicher geschmeidiger.

Was die Wecker angeht habe ich aufgegeben, das habe ich nicht in endlicher Zeit hinbekommen.

Die Integration ist bei Openhab um ein Vielfaches besser und leistungsfähiger, aber man muss eben damit leben was die hier hergibt…

Klingt nicht schön, das stimmt. Ich muss mal schauen, ob ich mir das antue, die Alarme doch noch zu setzen, im Prinzip gibt die API das ja her. Falls ich was gebastelt bekomme lass ich das Ergebnis hier.

Ich lasse mal ein Update hier, auch wenn noch nicht alles fertig ist. Nachdem ich mir das alles nochmal angeschaut hatte hab ich beschlossen, dass man besser ordentlichen Alarm-Support in die Squeezebox-Integration bringen sollte. Der PR für die unterstützende Library ist schon gemergt (Support add, update, delete, read alarm clocks by wollew · Pull Request #7 · rajlaud/pysqueezebox · GitHub), die Lib ist ist auch schon in HA (Bump pysqueezebox version to 0.9.2 by rajlaud · Pull Request #126347 · home-assistant/core · GitHub), die Anpassung der Integration in HA kommt aber frühestens in 2024.10. Sieht aber trotzdem so aus, als hätten wir demnächst dann saubere Unterstützung der Wecker.

1 „Gefällt mir“

Das wäre ja der Hammer, vielen Dank. Wenn dann noch die Unterstützung für Favoriten eines Tages implementiert wird, dann wäre das m.E. feature-complete :slight_smile:

Ich benutze die Favoriten selbst nicht wirklich, was würdest Du Dir da denn wünschen? Soweit ich die Doku (CLI - Favorites commands and queries - Lyrion Music Server) gerade verstehe ist das nicht mehr viel als eine ordnerartige Struktur, die man dann per ID ansprechen kann zum Abspielen. Das machst Du aber mit Deinem Ansatz ja eh schon. Man könnte jetzt noch eine Schnittstelle haben, um die Favoriten noch anzuzeigen und zu verwalten, aber das Abspielen wird trotzdem weiter über IDs passieren müssen.

Genau das, Anzeigen der Favoriten wäre schon hilfreich. Openhab macht das sehr gut. Da kann ich die Favoriten sehen, draufklicken und es wird das Stück im Kontext des gewählten Players gespielt.

Die Favoriten lassen sich als Drop-Down Liste anzeigen und man kann die Items daraus ansprechen.

Ich habe z.B, ein Abo bei Digitally Imported. Das kann ich nur über die Favoriten ansprechen. So wie ich oben geschrieben habe, ist das bei mehr als zwei Playern ein Heidenaufwand, die Webhooks für alle Player zu pflegen.

Hoffe das hilft dir beim Verständnis meines Wunsches weiter?

Ich denke schon. Was IMO recht einfach möglich sein sollte, wäre die Favoriten als “Media” bei “Browse Media” für die einzelnen media_player.xyz Entitäten einzufügen, zusätzlich zu “Artists”, “Albums”, “Tracks”, “Playlists”, “Genres”.

1 „Gefällt mir“

Damit wäre es auch direkt in den Media-Steuerungen nutzbar, perfekt

Favoriten sind jetzt in 2024.10.0. Ist allerdings nicht mein Verdienst, der Branch dafür hat schon existiert bevor ich überhaupt angefangen habe :wink:

Hui, das muss ich gleich mal testen. Danke schon mal für’s dran denken, alleine das scheint ja schon geholfen zu haben :joy:

Edit: Funktioniert bestens, genau was ich haben wollte :slight_smile:
Bin jetzt ja mal auf deine Weckerintegration gespannt. Wenn die fluppt, ist mir noch ein Komfortfeature eingefallen, dass auch noch sehr nützlich wäre. Aber erst mal Fokus auf die Wecker, das wäre schon eine super Sache :wink:

Moin,
was macht denn dein Code für die Wecker, ich bin schon ganz aufgeregt :smiley:

Schönen Sonntag

Cu
Frank

“Mein” Anteil daran ist erledigt, aktuell ist der Maintainer der eigentlichen Integration dabei die PRs zur Nutzung der Unterstützung in der Lib zu bearbeiten. Wenn ich das so beobachte, ist die Diskussion mit den HA-Maintainern zT ganz schön anstrengend, da bin ich froh, dass das jemand macht, der damit Übung hat :grinning:. Kommt also, keine Sorge :wink:

1 „Gefällt mir“

@hawmr Für den unwahrscheinlichen Fall dass es dir langweilig wird bis zum Release, hätte ich noch eine Funktion die mir fehlt :wink:

Im LMS gibt es einen Bereich “Eigene Anwendungen”. Ich habe ein Abo bei Digitally Imported (di.fm), welches ich nur über diesen Bereich ansprechen kann. In OpenHab z.B. kann man darauf zugreifen, in HA leider nicht. Ggf. fällt dir da auch was ein, wir man diese “Eigenen Anwendungen” ggf. im Mediaplayer (analog den Favoriten) verfügbar machen könnte?

Neben di.fm hat man da auch Zugriff auf ARD Mediathek oder Ähnliches.

So, bin aus dem Urlaub zurück und nein, langweilig ist mir nicht :wink: Mangels eigener Apps an dieser Stelle fällt es mir gerade schwer die Komplexität abzuschätzen, gibt es in den Apps dann vermutlich wieder eigene verschachtelte Menüs?

Moin. Die Apps haben schon Untermenues, ja. Falls du das mal testen magst, es gibt ein Plug-In im LMS für die ARD Mediathek, damit könntest das mal anschauen wenn du magst.