MPD

Aus FHEMWiki
Wechseln zu: Navigation, Suche
MPD
Zweck / Funktion
FHEM Modul zur Steuerung des Music Player Daemons
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Thema
Support (Forum) Multimedia
Modulname 73_MPD.pm
Ersteller Wzut (Forum /Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


FHEM Modul zur Steuerung des MPD (oder Mopidy) ähnlich dem MPC (MPC = Music Player Command, das Kommandozeilen-Interface für den Music Player Daemon ).

Voraussetzungen

FHEM-Server

Um das Modul MPD benutzen zu können, sind folgende Voraussetzungen zu erfüllen:

  • Das Modul benötigt zwingend JSON, installation z.B. mit
sudo apt-get install libjson-perl
  • Installiertes Perl-Modul XML:Simple
Die Installation erfolgt mittels
sudo apt-get install libxml-simple-perl
oder
cpan install XML:Simple

MPD

Um den MPD auf einem Raspberry Pi zu installieren finden sich im Internet zahlreiche gute Dokumentaionen z.B. hier sowie im Thread im FHEM Forum : Modul für MPD

Falls jemand eine höhere Version benötigt als diejenige, die in der Paketverwaltung angeboten wird, findet sich hier eine gute Anleitung zum Selbst-Kompilieren.

Installation

MPD-Device in FHEM

Syntax

define <name> MPD <IP MPD Server | default localhost> <Port MPD Server | default 6600>

Beispiel

define myMPD MPD 192.168.0.99 7000

Wenn FHEM und der MPD auf dem gleichen Server laufen:

define myMPD MPD

Anwendung

Attribute

  • password
Password falls in der mpd.conf definiert
  • loadMusic 1|0
lade die MPD Titel beim FHEM Start : mpd.conf - music_directory
  • loadPlaylists 1|0
lade die MPD Playlisten beim FHEM Start : mpd.conf - playlist_directory
  • volumeStep x
Schrittweite für Volume +/-
  • titleSplit 1|0
zerlegt die aktuelle Titelangabe am ersten Vorkommen von - (BlankMinusBlank) in die zwei Felder Artist und Titel, wenn im abgespielten Titel die Interpreten Information nicht verfügbar ist (sehr oft bei Radio-Streams default 1). Liegen keine Titelangaben vor wird die Ausgabe durch den Namen der Radiostation ersetzt
  • timeout (default 1)
Timeoutwert in Sekunden für die Verbindung fhem-mpd waits (default 60)
Überwachungszeit in Sekunden für den Idle Prozess. In Verbindung mit refresh_song der Aktualisierungs Intervall für die aktuellen Songparamter, (z.B. um den Fortschrittsbalken bei TabletUI aktuell zu halten)
  • stateMusic 1|0
zeige Musikliste als DropDown im Webfrontend
  • statePlaylists 1|0
zeige Playlisten als DropDown im Webfrontend
  • player mpd|mopidy|forked-daapd (default mpd)
welcher Player wird gesteuert ACHTUNG : Mopidy unterstützt nicht alle Kommandos des echten MPD ! (siehe Mopidy Dokumentation) Cover Art Funktionen von last.fm :
  • image_size -1|0|1|2|3 (default -1 = keine Interpretenbilder und Infos von last.fm verwenden)
last.fm stellt verschiedene Bildgroessen zur Verfügung :
0 = 32x32 , 1 = 64x64 , 2 = 174x174 , 3 = 300x300
  • artist_content 0|1
stellt Interpreteninformation im Reading artist_content zur Verfügung
  • artist_summary 0|1
stellt weitere Interpreteninformation im Reading artist_summary zur Verfügung
Beispiel Anzeige mittels readingsGroup :
define rg_artist readingsGroup <MPD name>:artist,artist_image_html,artist_summary
attr rg_artist room MPD
  • cache
(default lfm /fhem/www/lfm) Zwischenspeicher für die JSON und PNG Dateien
Wichtig : Der User unter dem der fhem Prozess ausgeführt wird (default fhem) muss Lese und Schreibrechte in diesem Verzeichniss haben! Das Verzeichnis sollte auch unterhalb von www liegen, damit der fhem Webserver direkten Zugriff auf die Bilder hat.
  • unknown_artist_image
Ersatzimage wenn kein anderes Image zur Verfügung steht (default : /fhem/icons/1px-spacer)
  • bookmarkDir
ein vom FHEM User les- und beschreibbares Verzeichnis. Wennn dieses definiert wird, ist das Speichern und Wiederherstellen von Playlistzuständen mit Hilfe von set/get bookmark möglich
  • autoBookmark
wenn dies auf 1 gesetzt wird, dann werden automatisch Playlistenzustände geladen und gespeichert, immer wenn die Playliste mit diesem Modul gewechselt wird
  • seekStep
wenn definiert, wird dadurch die Sprungweite von forward und rewind gesetzt. Der Wert gilt als Prozentwert. default: 7
  • seekStepSmall
Wenn diesem Attribut kann für den Anfang eines Tracks innerhalb der ersten per seekStepSmall definierten Prozent eine kleinere Sprungweite definiert werden, um so z.B. die Intromusik von Hörspielen oder Hörbüchern überspringen zu können. default: 1
  • seekStepSmallThreshold
unterhalb dieses Wertes wird seekStepSmall benutzt, oberhalb seekStep default: 0 (ohne Funktion)
  • no_playlistcollection (default 0)
wenn auf 1 gesetzt wird das Reading playlistcollection nicht erzeugt

Set

set <name> <was>

z.Z. unterstützte Kommandos

  • play
spielt den aktuellen Titel der MPD internen Playliste
  • clear
löscht die MPD interne Playliste
  • stop
stoppt die Wiedergabe
  • pause
Pause an/aus
  • previous
spielt den vorherigen Titel in der Playliste
  • next
spielt den nächsten Titel in der Playliste
  • random
zufällige Wiedergabe an/aus
  • repeat
Wiederholung an/aus
  • toggle
wechselt von play nach stop bzw. stop/pause nach play
  • volume (%)
ändert die Lautstärke von 0 - 100%
  • volumeUp
Lautstärke schrittweise erhöhen , Schrittweite = ( attr volumeStep size )
  • volumeDown
Lautstärke schrittweise erniedrigen , Schrittweite = ( attr volumeStep size )
  • playlist (name|SongNr|Position)
lade Playliste aus der MPD Datenbank und starte die Wiedergabe. Werden SongNr und/oder Position nicht mit übergeben, startet die Wiedergabe mit dem ersten Titel (Song=0) am Anfang (Position=0)
  • playfile (file)
erzeugt eine MPD interne Playliste mit file als Inhalt und spielt dieses ab
  • updateDb
wie MPC update, Update der MPD Datenbank
  • reset
reset des FHEM MPD Moduls
  • mpdCMD (cmd)
sende cmd direkt zum MPD Server ( siehe auch MPD Comm Ref )
  • IdleNow
sendet das Kommando idle zum MPD und wartet auf Ereignisse
  • clear_readings
löscht sehr viele Readings
  • mute
on,off,toggle
  • seekcur (zeit)
Format: [[hh:]mm:]ss. nicht vor MPD Version 0.20
  • forward
Springt im laufenden Track um einen optional per seekStep oder seekStepSmall definierten Wert nach vorne bzw. defaultmäßig um 7%.
  • rewind
Springt so wie bei forward beschrieben entsprechend zurück.
  • channel
Wechsele zur Playliste mit der angegebenen Nummer
  • channelUp
wechselt zur nächsten Playliste
  • channelDown
wechselt zur vorherigen Playliste
  • save_bookmark
speichert den aktuellen Zustand (Tracknummer und Position innerhalb des Tracks für die gerade geladene Playliste. Dies funktioniert nur, wenn die Playliste mit dem Modul geladen wurde und wenn das Attribut bookmarkDir gesetzt ist.
  • load_bookmark
stellt den zuletzt gespeicherten Zustand (set bookmark) der geladenen Playliste wieder her und springt zum gespeicherten Track und Position wird zusätzlich mit übergeben wird zuvor die entsprechend Playliste geladen

Get

get <name> <was>

z.Z. unterstützte Kommandos

  • music
zeigt alle Dateien der MPD Datenbank
  • playlists
zeigt alle Playlisten der MPD Datenbank
  • playlistsinfo
zeigt Informationen der aktuellen Playliste
  • webrc
HTML Ausgabe einer einfachen Web Fernbedienung Bsp :.
define <name> weblink htmlCode {fhem("get <name> webrc", 1)}
attr <name> room MPD
  • statusRequest
hole aktuellen MPD Status
  • currentsong
zeigt Informationen zum aktuellen Titel der MPD internen Playliste
  • outputs
zeigt Informationen der definierten MPD Ausgabe Kanäle ( aus /etc/mpd.conf )
  • bookmarks
zeigt eine Liste aller bisher gespeicherten Bookmarks

Readings

alle MPD internen Werte sowie vom Modul direkt erzeugte Readings:

  • playlistinfo: (TabletUI Medialist)
  • playlistcollection: (TabletUI)
  • playlistname: (TabletUI)
  • artist_image: (bei Nutzung von Last.fm)
  • artist_image_html: (bei Nutzung von Last.fm)
  • album_image: (bei Nutzung von Last.fm)
  • album_image_html: (bei Nutzung von Last.fm)
  • artist_content: (bei Nutzung von Last.fm)
  • artist_summary: (bei Nutzung von Last.fm)
  • playlistinfo: (z.B. für die TabletUI Medialist)
  • playlistcollection: (TabletUI) Liste der Playlisten
  • playlistname: (TabletUI) Name der aktuellen Playliste aus playlistcollection
  • playlist_num: Playlisten Nr. (0 .. n) der aktuellen Playliste aus playlistcollection playlist_json : (notwendig fü das Medialist Modul)
  • Cover: Cover Bild zum aktuellen Song aus playlist_json
  • currentTrackProvider: Radio / Bibliothek - Unterscheidung Radio Stream oder lokale Datei
  • rawTitle: Title Information ohne Veränderungen durch das Modul

Anwendungsbeispiele

Den eigenen Radiosender steuern

Früher schleppte man das Notebook ins Wohnzimmer, schloss es an die Stereoanlage an und spielte mittels Programm auf dem Notebook die Musik von der heimischen Festplatte ab.

Hat man die Musik auf einem Server oder NAS liegen, bietet sich ein Internetradio im Wohnzimmer mit einem eigenen Internet-Radiosender als Alternative an. Fehlt nur noch die passende Fernbedienung. Die Music Player Daemon-Software wird auf dem Server oder einem Raspi installiert und durchsucht nach passender Konfiguration die Festplatte nach Musik. Einmal in einer Datenbank inventarisiert, können mittels MPD-Client Playlisten zusammengestellt und abgelegt werden.

Mit dem MPD-Modul kann FHEM die Kontrolle übernehmen. Dies betrifft den Wechsel der Playlisten, als auch das Überspringen von Titeln sowie die Lautstärkeregelung.

Links