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.2.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 (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 (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 während der Wiedergabe, 0 pausiert oder gestoppt. Im Verlauf gespeichert, als Szenenauslöser oder Bedingung nutzbar.
Aktuelle Wiedergabe„Titel — Interpret“, „Pausiert · …“ oder „Gestoppt“. Bei einem Webradio der angekündigte Titel.
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.

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. Kein Cover (siehe Grenzen).

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​

  • 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.
  • Kein Cover im Widget: Mopidy gibt Bildadressen in seinem eigenen Netz, die das Dashboard nicht unbedingt erreicht.
  • Kein Durchblättern der Bibliothek: Playlists, Suchen, Adressen und URIs.
  • 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.2.0 oder neuer (das Formular Optionen… des Widgets).

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.0.0) 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.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​

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 🙂