Zum Hauptinhalt springen

Mopidy Smart-Home-Integration, kostenlos und Open Source

Mopidy-Integration für Gladys Assistant

Steuere deine Mopidy-Server: Musik, Lautstärke, Playlists, Webradios, Suche, Hinweise.

Steuere deine Mopidy-Musikserver aus Gladys: lokale Dateien, Webradios und jede Quelle, die eine Mopidy-Erweiterung hinzufügt (Jellyfin, YouTube Music, TuneIn, Subsonic…). Abspielen, pausieren, Titel, Lautstärke und Stummschaltung ändern, eine Playlist oder eine Suche starten, einen Klingelton oder ein Webradio abspielen und danach zur Musik zurückkehren, auf dem Dashboard sehen, was läuft. Alles bleibt in deinem lokalen Netzwerk: keine Cloud, kein Konto.

Die Integration spricht mit Mopidy über dessen native API (Mopidy-HTTP: JSON-RPC und der Ereignis-WebSocket): Die Integration sieht Änderungen in dem Moment, in dem sie passieren, und kennt die Mopidy-URIs. Getestet wurde gegen echte Mopidy-Server getestet, Mopidy 3.4.2 (Debian-Paket) und 4.0.5. Wenn dein Mopidy nur MPD anbietet (Mopidy-MPD), nimm stattdessen die Integration gladys-mpd. Rückmeldungen sind in den Issues willkommen.

Diese Integration ist nicht mit dem Mopidy-Projekt verbunden.

Voraussetzungen​

  • Gladys Assistant 5.3.0 oder neuer.
  • Mopidy 3 oder 4 mit seiner HTTP-Schnittstelle (Mopidy-HTTP, standardmäßig aktiv), von Gladys aus im Netzwerk erreichbar: Setze in mopidy.conf, Abschnitt [http], hostname = 0.0.0.0 (der Standardwert 127.0.0.1 antwortet nur dem Rechner selbst). Der Port ist standardmäßig 6680.
  • Mopidy-HTTP hat kein Passwort: Lass es in deinem Heimnetz. Ein Mopidy hinter einem Reverse-Proxy mit HTTPS geht auch (gib https://… ein), solange der Proxy von Gladys kein Passwort verlangt.

Einrichtung​

  1. Öffne in Gladys Integrationen, dann Von GitHub installieren, und gib https://github.com/guim31/gladys-mopidy ein (oder installiere Mopidy aus dem Katalog, sobald es dort steht).
  2. Gib in der Konfiguration die Adresse deines Servers ein (192.168.1.20, mopidy.home, 192.168.1.20:6681 für einen anderen Port, oder die aus dem Browser kopierte Adresse seines Web-Clients, http://192.168.1.20:6680/iris/) und einen Namen (Wohnzimmer). Bis zu drei weitere Server darunter.
  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 Server, mit der Mopidy-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 Servers​

Jeder Mopidy-Server ist ein Gerät. Gladys zeigt es als Musikplayer: Die Dashboard-Box Musik und die Szenenaktionen Auf einem Lautsprecher sprechen und Musik auf einem Lautsprecher abspielen funktionieren damit (siehe nächsten Abschnitt).

Funktion (deutsche Namen)Was sie tut
WiedergabeSpielt die Warteschlange (ein pausierter Titel läuft dort weiter, wo er war).
PausePausiert.
Vorheriger TitelGeht zum vorherigen Titel.
Nächster TitelGeht zum nächsten Titel.
Lautstärke0 bis 100 %, wie Mopidy sie sieht. Ohne Wert, wenn Mopidy keinen Mixer hat (mixer = none).
StummAn oder aus: die Stummschaltung des Mopidy-Mixers.
Wiedergabestatus1 Wiedergabe, 0 pausiert, 2 gestoppt. Schreibbar: Gladys startet, pausiert und stoppt die Wiedergabe darüber. Als Szenenauslöser oder Bedingung nutzbar.
TitelTitel des Stücks, oder das Stück, das ein Webradio ankündigt. Leer, wenn nichts geladen ist.
KünstlerKünstler des Stücks.
AlbumAlbum des Stücks, oder der Sender eines Webradios.
CoverCover des Stücks, angezeigt von der Box Musik (siehe Grenzen).
DauerLänge des Stücks in Sekunden, 0 bei einem Webradio.
PositionPosition im Stück in Sekunden; eine Änderung springt dorthin. Gesendet bei einem Wechsel von Stück oder Status und bei einem Sprung: Gladys bewegt den Balken selbst weiter.
ZufallswiedergabeDie Zufallswiedergabe von Mopidy.
WiederholungAus, die ganze Warteschlange oder das aktuelle Stück.
Aktuelle Wiedergabe„Titel — Interpret“, „Pausiert · …“ oder „Gestoppt“. Bei einem Webradio der angekündigte Titel. Seit Version 1.0, für die Dashboards und Szenen beibehalten, die sie nutzen.
PlaylistDie Liste der Mopidy-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 Mopidy: Eine erstellte oder gelöschte Playlist erscheint oder verschwindet in der Liste.

Musikplayer von Gladys 5.3​

Seit Gladys 5.3 ist die Box Musik des Dashboards ein echter Player, und Mopidy füllt sie vollständig:

  • Cover, Titel, Künstler und Album, ein Fortschrittsbalken, den du zum Springen ziehst, Wiedergabe und Pause, zurück, weiter, Zufallswiedergabe, Wiederholung, Lautstärke und Stummschaltung;
  • die Warteschlange (Listen-Knopf): die Stücke der Mopidy-Warteschlange, das aktuelle hervorgehoben; ein Tippen spielt ein anderes ab;
  • Suchen und Durchblättern (Lupen-Knopf): Die Suche fragt jedes Mopidy-Backend, das suchen kann (Künstler, Alben, Stücke), und die Namen der Playlists; das Durchblättern beginnt mit Playlists, dann den Ordnern von Mopidy (Files, Local media mit Mopidy-Local, die deiner anderen Erweiterungen). Ein Tippen spielt den Eintrag anstelle der Warteschlange ab; die zweite Geste fügt ihn nach dem aktuellen Stück oder am Ende der Warteschlange ein. Ein Ordner öffnet sich, er wird nicht abgespielt.

Die Szenenaktion Musik auf einem Lautsprecher abspielen von Gladys wählt eine Playlist, ein Album oder ein Stück im selben Bereich und spielt es ab, wenn die Szene läuft.

Ein vor Version 1.1.0 hinzugefügtes Gerät funktioniert wie bisher, ohne die neuen Funktionen: Öffne den Tab Entdecken der Integration und klicke beim Server auf Aktualisieren (Gladys bietet es an, weil sich die Funktionen geändert haben). Die neuen Funktionen kommen hinzu; die bisherigen behalten ihre Szenen und Dashboards. Zwei ändern sich: Stumm wird eine Musik-Stummschaltung (vorher ein Schalter), und Wiedergabestatus zeigt 2 statt 0, wenn Mopidy gestoppt ist.

Die Cover kommen von Mopidy: Mopidy-Local liefert die Cover-Datei des Albumordners oder das in die Dateien eingebettete Cover, andere Erweiterungen ihre eigenen. Gladys zeigt ein Cover von höchstens 300 KB, und Mopidy-Local liefert die Datei so, wie sie auf der Platte liegt: Die Integration verkleinert ein größeres Cover (ein JPEG von höchstens 400 Pixeln), bis 10 MB (siehe Grenzen).

Dashboard-Widget​

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

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

Das Widget folgt dem Server: Es wird innerhalb von zehn Sekunden aktualisiert, wenn ein Titel startet, sich die Lautstärke ändert oder eine Playlist erstellt wird. Die Box Musik von Gladys 5.3 (oben) ist der vollständige Player; dieses Widget ergänzt das Formular Optionen… und hat kein Cover.

Szenen​

Auslöser​

  • Mopidy-Titel gestartet: Mopidy beginnt einen Titel — Wiedergabe, nächster Titel, eine Playlist, ein anderer Client wie Iris oder eine Handy-App. Auf einen Server beschränkbar. Die Szene erhält Titel, Interpret, Album, die URI des Titels und „Interpret · Album“. Benachrichtigungen lösen ihn nicht aus, auch nicht der danach fortgesetzte Titel.
  • Mopidy-Server verloren: Ein Server, der antwortete, antwortet nicht mehr (aus, abgestürzt, nicht im Netz). Auf einen Server beschränkbar; die Szene erhält seinen Namen.

Ob Musik läuft, sagt die Funktion Wiedergabestatus: Nutze dafür den Auslöser des Kerns auf einem Gerätezustand.

Aktionen​

Der Server wird unter den Geräten der Integration gewählt (leer: der erste der Konfiguration).

  • Mopidy-Playlist abspielen: ersetzt die Warteschlange durch eine Mopidy-Playlist, über ihren Namen (Groß-/Kleinschreibung und Akzente egal) oder ihre URI, und spielt sie ab. Die Zahl der eingereihten Titel ist in den folgenden Aktionen der Szene nutzbar. 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 Mopidy abspielen: spielt eine Adresse — ein Webradio (http://…, https://…), einen Ton auf einem Webserver oder eine Mopidy-URI (file:///musik/klingel.ogg, local:track:…, tunein:station:…) — 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 Mopidy die Adresse nicht abspielen kann.
  • Auf Mopidy suchen und abspielen: durchsucht die Mopidy-Bibliothek (alle Backends mit Suche: lokale Dateien mit Mopidy-Local, Jellyfin, YouTube Music…) nach einem Interpreten, einem Album oder einem Titel und spielt die ersten 50 gefundenen Titel anstelle der Warteschlange. Die Zahl der Titel ist in den folgenden Aktionen nutzbar.
  • Mopidy-Warteschlange leeren: stoppt den Server und entfernt alle Titel aus seiner Warteschlange.
  • Mopidy-Zufallswiedergabe: ein, aus oder umschalten. Das Ergebnis (an oder aus) ist in den folgenden Aktionen nutzbar.
  • Mopidy-Wiederholung: aus, die ganze Warteschlange oder der aktuelle Titel.

Benachrichtigungen und „Auf einem Lautsprecher sprechen“​

Die Funktion Benachrichtigung eines Servers, die Aktion Adresse auf Mopidy abspielen mit Vorherige Musik fortsetzen und die Aktion Auf einem Lautsprecher sprechen von Gladys (die Stimme kommt von Gladys Plus) funktionieren alle 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. Mopidy hält danach an; sie wird 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 Server bleibt gestoppt.

Eine zweite Benachrichtigung während der ersten ersetzt sie. Übernimmt jemand in der Zwischenzeit den Server (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​

  • Musik am Morgen: Um 7:00 Musik auf einem Lautsprecher abspielen mit der Playlist Morgen auf dem Küchen-Server.
  • Türklingel: Wenn der Klingelknopf gedrückt wird, Adresse auf Mopidy abspielen file:///musik/toene/klingel.ogg auf dem Server im Wohnzimmer, Lautstärke 70, dann die vorherige Musik fortsetzen.
  • Radiowecker: werktags um 7:00 Adresse auf Mopidy abspielen mit der Adresse deines Lieblingsradios, Weiterspielen, Lautstärke 25; um 7:45 die Funktion Pause.
  • Abend: bei Sonnenuntergang Auf Mopidy suchen und abspielen „jazz“, dann Mopidy-Zufallswiedergabe ein.
  • Niemand zu Hause: Wenn das Haus leer wird, die Funktion Pause jedes Servers.
  • Server ausgefallen: bei Mopidy-Server verloren der Familie eine Nachricht schicken: Der Musikserver im Wohnzimmer antwortet nicht mehr.

Aktualisierung​

Die Integration hält den Ereignis-WebSocket von Mopidy auf jedem Server offen: Was auf Mopidy passiert, aus Gladys oder aus einem anderen Client, ist in weniger als einer Sekunde in Gladys. Zusätzlich wird jeder Server alle 30 Sekunden gelesen (das prüft auch, dass er noch antwortet, und öffnet den WebSocket wieder, wenn ein Proxy ihn getrennt hat), und ein unveränderter Wert wird alle sechs Stunden erneut gesendet, damit Gladys ihn nie als alt anzeigt. Nur die Änderungen gehen an Gladys.

Ein Server, der nicht mehr antwortet, wird als nicht erreichbar angezeigt (Transport-Badge 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 weiter zu tun.

Mopidy hat kein Kontingent: Die Integration sendet einen Stapel Abfragen pro Änderung und einen alle 30 Sekunden pro Server.

Fehlerbehebung​

  • „antwortet nicht“: Prüfe Adresse und Port (6680, oder der port im Abschnitt [http] von mopidy.conf), dass Mopidy im Netzwerk lauscht (hostname = 0.0.0.0) und dass keine Firewall den Port zwischen Gladys und dem Server blockiert.
  • „kein Mopidy-HTTP unter dieser Adresse und diesem Port“: Etwas anderes antwortet auf diesem Port, oder Mopidy-HTTP ist deaktiviert (enabled = false in [http]).
  • „Zugriff verweigert (ein Proxy vor Mopidy?)“: Ein Reverse-Proxy verlangt ein Passwort: Lass Gladys Mopidy direkt über Port 6680 erreichen.
  • „keine Live-Ereignisse“ bei Verbindung testen: Der WebSocket /mopidy/ws lässt sich nicht öffnen (ein Proxy, der keine WebSockets durchlässt): Die Zustände werden dann alle 30 Sekunden gelesen.
  • Die Lautstärke bleibt leer: Mopidy hat keinen Mixer (mixer = none im Abschnitt [audio], für einen Ausgang mit fester Lautstärke): Ändere die Lautstärke am Verstärker.
  • Eine Benachrichtigung spielt nicht: Die Adresse muss vom Mopidy-Server selbst erreichbar sein (nicht von Gladys) und einem installierten Backend bekannt: http(s):// braucht das Stream-Backend (eingebaut), file:// einen Ordner des Abschnitts [file], tunein: die TuneIn-Erweiterung. Keine Mopidy-Erweiterung kann diese Adresse abspielen heißt, dass kein Backend ihr Schema kennt.
  • Die Liste Playlist ist leer: Mopidy hat noch keine Playlist (M3U-Playlists liegen im playlists_dir des Abschnitts [m3u]).
  • Mehr Details: Die Protokolle der Integration (Integrationen → Mopidy → Protokolle) zeigen die Verbindungen, die Ausfälle und die Rückkehr sowie eine Zeile pro Befehl. Starte den Container mit LOG_LEVEL=debug neu, um jedes empfangene Ereignis zu sehen.

Grenzen​

  • Bis zu vier Server. Ein Server ist über seinen Platz in der Konfiguration bekannt: Seine Adresse zu ändern behält das Gerät und seinen Verlauf.
  • Cover über 10 MB oder 25 Megapixel werden nicht angezeigt, ebenso Cover in einem anderen Format als JPEG, PNG und WebP (GIF…) und WebP-Cover über 300 KB: Die Integration verkleinert nur JPEG und PNG.
  • Die Suche der Box Musik fragt alle Backends gleichzeitig: Eine langsame Streaming-Erweiterung bremst sie (Gladys wartet 10 Sekunden).
  • Die Suche reiht höchstens 50 Titel ein, eine Playlist höchstens 500.
  • Mopidy wird nicht automatisch im Netzwerk gefunden: Gib die Adressen ein.
  • Gladys gibt die Lautstärke der Aktion Auf einem Lautsprecher sprechen nicht weiter (es gilt die Lautstärke der Benachrichtigungen).
  • Gladys 5.3.0 oder neuer (der Musikplayer und seine Bereiche).

Konfigurationseinstellungen​

Diese Einstellungen fragt Mopidy in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Deine Mopidy-ServersectionNeinMopidy mit seiner HTTP-Schnittstelle (Mopidy-HTTP, Port 6680), von Gladys aus erreichbar: Setze hostname = 0.0.0.0 im Abschnitt [http] von mopidy.conf. Gib seine IP-Adresse ein (mit :Port, wenn es nicht 6680 ist). Bis zu vier Server.
Adresse des ServersstringNeinIP-Adresse oder Name des Mopidy-Servers, mit :Port, wenn es nicht 6680 ist. Die Adresse seines Web-Clients geht auch.
NamestringNeinName des Geräts in Gladys. Leer: „Mopidy“ gefolgt von der Adresse.
Zweiter ServersectionNeinDieselben Felder, für einen weiteren Mopidy-Server in deinem Netzwerk.
Adresse des ServersstringNein
NamestringNein
Dritter ServersectionNeinDieselben Felder, für einen weiteren Mopidy-Server in deinem Netzwerk.
Adresse des ServersstringNein
NamestringNein
Vierter ServersectionNeinDieselben Felder, für einen weiteren Mopidy-Server in deinem Netzwerk.
Adresse des ServersstringNein
NamestringNein
OptionensectionNeinDie Benachrichtigung eines Servers 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 Mopidy in Gladys​

  1. Öffne in Gladys Integrationen: Mopidy 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-mopidy:1.1.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-mopidy.

Mopidy benötigt Gladys >=5.3.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​

Mopidy 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 🙂