Zum Hauptinhalt springen

Music Player Daemon Smart-Home-Integration, kostenlos und Open Source

Music Player Daemon-Integration für Gladys Assistant

Steuere deine MPD-Player (moOde, Volumio, piCorePlayer…): Musik, Lautstärke, Playlists, Hinweise.

Steuere deine MPD-Player aus Gladys: ein Raspberry Pi an einem Verstärker mit moOde, Volumio, piCorePlayer oder MPD selbst. Wiedergabe, Pause, Titelwechsel, Lautstärke, eine Playlist starten, einen Klingelton oder ein Webradio abspielen und danach zur Musik zurückkehren, und auf dem Dashboard sehen, was läuft. Alles bleibt in deinem lokalen Netzwerk: keine Cloud, kein Konto.

Ohne die Hardware entwickelt: Rückmeldungen willkommen. Die Integration wurde gegen einen simulierten MPD-Server gebaut und getestet, der wie MPD 0.23 antwortet, nicht gegen einen echten Player. Melde, was funktioniert und was nicht, in den Issues.

Diese Integration ist weder mit dem MPD-Projekt noch mit moOde, Volumio oder piCorePlayer verbunden.

Was du brauchst​

  • Gladys Assistant 5.2.0 oder neuer.
  • Einen Player mit MPD, den Gladys im Netzwerk über seinen MPD-Port erreicht (standardmäßig 6600). moOde und piCorePlayer (mit seiner MPD-Erweiterung) stellen ihn von Haus aus bereit; MPD selbst hört im Netzwerk, wenn bind_to_address in mpd.conf auf any oder die IP des Rechners steht.
  • Das Passwort von MPD, falls mpd.conf eine password-Zeile hat. Es braucht die Rechte read, add und control (password "secret@read,add,control"). Die meisten Player haben keines.

Einrichtung​

  1. Öffne in Gladys Integrationen, dann Von GitHub installieren, und gib https://github.com/guim31/gladys-mpd ein (oder installiere Music Player Daemon aus dem Katalog, sobald sie dort steht).
  2. Gib unter Konfiguration die Adresse deines Players ein (192.168.1.20, moode.home oder 192.168.1.20:6601 für einen anderen Port), sein Passwort, falls er eines hat, und einen Namen (Wohnzimmer). Darunter bis zu drei weitere Player.
  3. Wähle die Sprache der Geräte (Namen der Funktionen, Meldungen) und, wenn du willst, die Lautstärke der Benachrichtigungen. Speichere.
  4. Klicke auf Verbindung testen: eine Zeile pro Player, mit der MPD-Version, was er gerade tut, seiner Lautstärke und seinen Playlists.
  5. Öffne den Tab Entdecken und füge die Geräte hinzu.

Verwende feste IP-Adressen (eine DHCP-Reservierung in deinem Router) oder Namen, die dein DNS auflöst: Namen auf .local werden im Container der Integration nicht aufgelöst.

Das Gerät jedes Players​

Jeder Player ist ein Gerät. Gladys zeigt es als Musikplayer an: die Musik-Box des Dashboards (Wiedergabe, Pause, zurück, weiter, Lautstärke) und die Szenenaktion Auf einem Lautsprecher sprechen funktionieren damit.

Funktion (deutsche Namen)Was sie tut
WiedergabeSpielt die Warteschlange ab (ein pausierter Titel geht dort weiter, wo er war).
PausePausiert.
Vorheriger TitelSpringt zum vorherigen Titel.
Nächster TitelSpringt zum nächsten Titel.
Lautstärke0 bis 100 %, wie MPD sie sieht. Kein Wert, wenn MPD keinen Mixer hat (feste Lautstärke).
Wiedergabestatus1 während der Wiedergabe, 0 pausiert oder gestoppt. Im Verlauf gespeichert, als Szenenauslöser oder Bedingung nutzbar.
PlaylistEine Liste der in MPD gespeicherten Playlists: Eine auswählen ersetzt die Warteschlange durch sie und spielt sie ab.
BenachrichtigungEmpfängt eine Adresse zum Abspielen und stellt danach wieder her, was lief (siehe unten).

Die Liste der Playlists folgt MPD: Eine auf dem Player gespeicherte oder gelöschte Playlist erscheint in der Liste oder verschwindet daraus.

Dashboard-Widget​

Füge das Widget MPD-Player zu einem Dashboard hinzu. Wähle in seinen Einstellungen einen Player (leer: der erste der Konfiguration). Es zeigt:

  • den Titel des Songs und darunter Interpret und Album (oder den Namen des Webradios);
  • die Lautstärke als Anzeige;
  • den Zustand (spielt, pausiert, gestoppt), die Position in der Warteschlange, Zufallswiedergabe und Wiederholung;
  • vier Tasten: Zurück, Abspielen oder Pause, Weiter und Optionen…. Optionen… öffnet ein Formular mit den aktuellen Werten: die Lautstärke, eine Playlist zum Abspielen, Zufallswiedergabe und Wiederholung. Nur was du änderst, wird gesendet.

Das Widget folgt dem Player: Es wird innerhalb von zehn Sekunden aktualisiert, wenn ein Titel beginnt, sich die Lautstärke ändert oder eine Playlist gespeichert wird. Kein Cover (siehe Grenzen).

Szenen​

Aktionen​

Der Player wird unter den Geräten der Integration ausgewählt.

  • MPD-Playlist abspielen: ersetzt die Warteschlange durch eine in MPD gespeicherte Playlist, anhand ihres Namens (Groß- und Kleinschreibung und Akzente egal), und spielt sie ab. Die Anzahl der eingereihten Titel kann in den folgenden Aktionen der Szene verwendet werden. Ein unbekannter Name lässt die Aktion mit der Liste der Playlists scheitern. Du kannst eine Playlist auch aus einer Liste wählen, mit der Kernaktion Gerät steuern auf der Funktion Playlist.
  • Adresse auf MPD abspielen: spielt eine Adresse ab — ein Webradio (http://…, https://…), einen Ton auf einem Webserver oder eine Datei der MPD-Musikbibliothek (sounds/klingel.mp3) — mit der angegebenen Lautstärke (leer: unverändert). Danach: Vorherige Musik fortsetzen (die Adresse läuft einmal, dann kommt zurück, was lief, siehe unten) oder Weiterspielen (ersetzt die Warteschlange). Die Aktion scheitert, wenn MPD die Adresse nicht abspielen kann.
  • MPD-Warteschlange leeren: entfernt alle Titel aus der Warteschlange; der Player hält an.
  • MPD-Zufallswiedergabe: ein, aus oder umschalten. Das Ergebnis (an oder aus) kann in den folgenden Aktionen verwendet werden.
  • MPD-Wiederholung: aus, die ganze Warteschlange oder der aktuelle Titel.

Benachrichtigungen und „Auf einem Lautsprecher sprechen“​

Die Funktion Benachrichtigung eines Players, die Aktion Adresse auf MPD abspielen mit Vorherige Musik fortsetzen und die Aktion Auf einem Lautsprecher sprechen von Gladys (die Stimme kommt von Gladys Plus) funktionieren gleich:

  1. die Adresse wird ans Ende der Warteschlange gestellt (deine Warteschlange wird nie ersetzt) und sofort abgespielt, mit der Lautstärke der Benachrichtigungen aus der Konfiguration (oder der Lautstärke der Aktion);
  2. MPD hält danach an; sie wird dann aus der Warteschlange entfernt, und die Lautstärke und die Optionen (Zufall, Wiederholung, single, consume) kommen zurück;
  3. der Titel, der lief, geht an der Sekunde weiter, an der er unterbrochen wurde; ein pausierter Titel bleibt pausiert, ein gestoppter Player bleibt gestoppt.

Eine zweite Benachrichtigung während der ersten ersetzt sie. Übernimmt inzwischen jemand den Player (ein anderer Titel, der nächste), endet die Benachrichtigung, ohne die Musik anzufassen. Eine Benachrichtigung, die nach fünf Minuten noch läuft, wird beendet und die Musik kommt zurück. Ein als Benachrichtigung gesendetes Webradio ist keine Benachrichtigung: Es läuft weiter (seine Adresse bleibt in der Warteschlange).

Die Aktion Auf einem Lautsprecher sprechen hat einen Lautstärkeregler, aber Gladys gibt ihn nicht an externe Integrationen weiter: Verwende die Lautstärke der Benachrichtigungen aus der Konfiguration.

Szenenideen​

  • Türklingel: Wenn die Klingeltaste gedrückt wird, Adresse auf MPD abspielen sounds/klingel.mp3 auf dem Wohnzimmer-Player, Lautstärke 70, danach die vorherige Musik fortsetzen.
  • Radiowecker: werktags um 7:00 Adresse auf MPD abspielen mit der Adresse deines Lieblingsradios, Weiterspielen, Lautstärke 25; um 7:45 die Funktion Pause.
  • Niemand zu Hause: Wenn das Haus leer wird, die Funktion Pause jedes Players.
  • Das Licht folgt der Musik: Wenn der Wiedergabestatus des Wohnzimmer-Players nach Sonnenuntergang auf 1 wechselt, die Lampen im Wohnzimmer einschalten.
  • Abend: bei Sonnenuntergang MPD-Playlist abspielen „Apéro“, dann MPD-Zufallswiedergabe ein.

Aktualisierung​

Die Integration hält eine Verbindung zu jedem Player offen und wartet auf seine Änderungen (der MPD-Befehl idle): Was auf dem Player passiert, aus Gladys oder aus einer anderen App, ist in weniger als einer Sekunde in Gladys. Zusätzlich wird jeder Player alle 30 Sekunden gelesen (das prüft auch, ob er noch antwortet), und ein unveränderter Wert wird alle sechs Stunden erneut gesendet, damit Gladys ihn nie als alt anzeigt. Nur die Änderungen werden an Gladys gesendet.

Ein Player, der nicht mehr antwortet, wird als nicht erreichbar angezeigt (Transport-Symbol des Geräts, Verbindungsstatus der Integration), und die Integration versucht es erneut: nach 2, 5, 15, 30 Sekunden, dann jede Minute. Wenn er zurückkommt, ist nichts zu tun.

MPD hat kein Kontingent: Die Integration sendet ein paar Befehle pro Änderung und zwei alle 30 Sekunden, über eine Verbindung pro Player.

Fehlerbehebung​

  • „antwortet nicht“: Prüfe Adresse und Port (6600 oder der Wert von port in mpd.conf), ob MPD im Netzwerk hört (bind_to_address) und ob keine Firewall den Port zwischen Gladys und dem Player sperrt.
  • „Passwort abgelehnt“ oder „ein Passwort ist nötig“: Gib das Passwort der password-Zeile aus mpd.conf ein; es braucht die Rechte read, add und control.
  • „kein MPD-Server unter dieser Adresse und diesem Port“: Etwas anderes antwortet auf diesem Port (zum Beispiel eine Weboberfläche): MPD hört standardmäßig auf 6600.
  • Die Lautstärke bleibt leer: MPD hat keinen Mixer (zum Beispiel mixer_type "none" in moOde für einen DAC mit fester Lautstärke): Ändere die Lautstärke am Verstärker.
  • Eine Benachrichtigung spielt nicht: Die Adresse muss vom Player selbst erreichbar sein (nicht von Gladys), in einem Format, das MPD dekodieren kann; eine Datei der Bibliothek wird mit ihrem Pfad in der Bibliothek angegeben. Verbindung testen und die Protokolle der Integration sagen, warum MPD sie abgelehnt hat.
  • Die Liste Playlist ist leer: MPD hat kein playlist_directory, oder es ist noch keine Playlist gespeichert.
  • Mehr Details: Die Protokolle der Integration (Integrationen → Music Player Daemon → Protokolle) zeigen die Verbindungen, Abbrüche und Wiederherstellungen sowie eine Zeile pro Befehl. Starte den Container mit LOG_LEVEL=debug neu, um jede empfangene Änderung und jede Abfrage zu sehen. Passwörter werden nie geschrieben.

Grenzen​

  • Bis zu vier Player. Ein Player wird über seinen Platz in der Konfiguration erkannt: Eine Änderung seiner Adresse behält das Gerät und seinen Verlauf.
  • Kein Cover im Widget: MPD sendet es unverkleinert, oft größer, als Gladys annimmt.
  • Kein Durchsuchen der Musikbibliothek: nur Playlists, Adressen und Pfade der Bibliothek.
  • Keine Gruppierung von Playern (Snapcast) und keine Auswahl der Ausgänge.
  • MPD wird nicht automatisch im Netzwerk gefunden: Gib die Adressen ein.
  • Die Lautstärke der Aktion Auf einem Lautsprecher sprechen gibt Gladys nicht weiter (es gilt die Lautstärke der Benachrichtigungen).
  • Gladys 5.2.0 oder neuer (das Formular Optionen… des Widgets).

Konfigurationseinstellungen​

Diese Einstellungen fragt Music Player Daemon in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Deine MPD-PlayersectionNeinJeder Music Player Daemon: ein Raspberry Pi mit moOde, Volumio, piCorePlayer oder MPD selbst. Gib seine IP-Adresse ein (standardmäßig Port 6600, sonst :Port anhängen) und das Passwort aus mpd.conf, falls es eines gibt. Bis zu vier Player.
Adresse des PlayersstringNeinIP-Adresse oder Name des Players, mit :Port, wenn MPD nicht auf 6600 hört.
PasswortsecretNeinDie password-Zeile aus mpd.conf. Leer, wenn MPD keines hat (der Normalfall).
NamestringNeinName des Geräts in Gladys. Leer: „MPD“ gefolgt von der Adresse.
Zweiter PlayersectionNeinDieselben Felder, für einen weiteren MPD-Player in deinem Netzwerk.
Adresse des PlayersstringNein
PasswortsecretNein
NamestringNein
Dritter PlayersectionNeinDieselben Felder, für einen weiteren MPD-Player in deinem Netzwerk.
Adresse des PlayersstringNein
PasswortsecretNein
NamestringNein
Vierter PlayersectionNeinDieselben Felder, für einen weiteren MPD-Player in deinem Netzwerk.
Adresse des PlayersstringNein
PasswortsecretNein
NamestringNein
OptionensectionNeinDie Benachrichtigung eines Players spielt eine Adresse ab (ein Klingelton, eine Durchsage) und stellt danach wieder her, was lief.
Lautstärke der BenachrichtigungenselectNeinLautstärke während einer Benachrichtigung, danach wieder die vorherige. Gladys gibt die Lautstärke seiner Aktion „Auf einem Lautsprecher sprechen“ nicht weiter.
Sprache der GeräteselectNeinNamen der Funktionen, wenn ein Gerät hinzugefügt wird (Lautstärke, Playlist…), und Sprache der Meldungen.

So installierst du Music Player Daemon in Gladys​

  1. Öffne in Gladys Integrationen: Music Player Daemon erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-mpd:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-mpd.

Music Player Daemon benötigt Gladys >=5.2.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

Music Player Daemon ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂