Mopidy Smart-Home-Integration, kostenlos und Open Source

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 Standardwert127.0.0.1antwortet 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
- Öffne in Gladys Integrationen, dann Von GitHub installieren, und
gib
https://github.com/guim31/gladys-mopidyein (oder installiere Mopidy aus dem Katalog, sobald es dort steht). - Gib in der Konfiguration die Adresse deines Servers ein
(
192.168.1.20,mopidy.home,192.168.1.20:6681fü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. - Wähle die Sprache der Geräte (Namen der Funktionen, Meldungen) und, wenn du willst, die Lautstärke der Benachrichtigungen. Speichere.
- Klicke auf Verbindung testen: eine Zeile pro Server, mit der Mopidy-Version, was er gerade tut, seiner Lautstärke und seinen Playlists.
- Ö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 |
|---|---|
| Wiedergabe | Spielt die Warteschlange (ein pausierter Titel läuft dort weiter, wo er war). |
| Pause | Pausiert. |
| Vorheriger Titel | Geht zum vorherigen Titel. |
| Nächster Titel | Geht zum nächsten Titel. |
| Lautstärke | 0 bis 100 %, wie Mopidy sie sieht. Ohne Wert, wenn Mopidy keinen Mixer hat (mixer = none). |
| Stumm | An oder aus: die Stummschaltung des Mopidy-Mixers. |
| Wiedergabestatus | 1 Wiedergabe, 0 pausiert, 2 gestoppt. Schreibbar: Gladys startet, pausiert und stoppt die Wiedergabe darüber. Als Szenenauslöser oder Bedingung nutzbar. |
| Titel | Titel des Stücks, oder das Stück, das ein Webradio ankündigt. Leer, wenn nichts geladen ist. |
| Künstler | Künstler des Stücks. |
| Album | Album des Stücks, oder der Sender eines Webradios. |
| Cover | Cover des Stücks, angezeigt von der Box Musik (siehe Grenzen). |
| Dauer | Länge des Stücks in Sekunden, 0 bei einem Webradio. |
| Position | Position 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. |
| Zufallswiedergabe | Die Zufallswiedergabe von Mopidy. |
| Wiederholung | Aus, 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. |
| Playlist | Die Liste der Mopidy-Playlists: Eine auswählen ersetzt die Warteschlange durch sie und spielt sie ab. |
| Benachrichtigung | Empfä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:
- 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);
- 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;
- 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.oggauf 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
portim Abschnitt[http]vonmopidy.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 = falsein[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/wslä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 = noneim 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_dirdes 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=debugneu, 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.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Deine Mopidy-Server | section | Nein | Mopidy 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 Servers | string | Nein | IP-Adresse oder Name des Mopidy-Servers, mit :Port, wenn es nicht 6680 ist. Die Adresse seines Web-Clients geht auch. |
| Name | string | Nein | Name des Geräts in Gladys. Leer: „Mopidy“ gefolgt von der Adresse. |
| Zweiter Server | section | Nein | Dieselben Felder, für einen weiteren Mopidy-Server in deinem Netzwerk. |
| Adresse des Servers | string | Nein | |
| Name | string | Nein | |
| Dritter Server | section | Nein | Dieselben Felder, für einen weiteren Mopidy-Server in deinem Netzwerk. |
| Adresse des Servers | string | Nein | |
| Name | string | Nein | |
| Vierter Server | section | Nein | Dieselben Felder, für einen weiteren Mopidy-Server in deinem Netzwerk. |
| Adresse des Servers | string | Nein | |
| Name | string | Nein | |
| Optionen | section | Nein | Die Benachrichtigung eines Servers spielt eine Adresse ab (ein Klingelton, eine Durchsage) und stellt danach wieder her, was lief. |
| Lautstärke der Benachrichtigungen | select | Nein | Lautstä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äte | select | Nein | Namen der Funktionen, wenn ein Gerät hinzugefügt wird (Lautstärke, Playlist…), und Sprache der Meldungen. |
So installierst du Mopidy in Gladys
- Öffne in Gladys Integrationen: Mopidy erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- 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). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- 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.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation