MPD: Unterschied zwischen den Versionen
Drhirn (Diskussion | Beiträge) K (Screenshot eines angelegten MPD-Devices hinzgefügt) |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
{{Infobox Modul | {{Infobox Modul | ||
|ModPurpose=FHEM Modul zur Steuerung des Music Player Daemons | |ModPurpose=FHEM Modul zur Steuerung des Music Player Daemons | ||
Zeile 8: | Zeile 7: | ||
|ModOwner=Wzut ({{Link2FU|5110|Forum}}/[[Benutzer Diskussion:Wzut|Wiki]]) | |ModOwner=Wzut ({{Link2FU|5110|Forum}}/[[Benutzer Diskussion:Wzut|Wiki]]) | ||
}} | }} | ||
FHEM Modul zur Steuerung des '''MPD''' (oder Mopidy) ähnlich dem MPC (MPC = [http://en.wikipedia.org/wiki/Music_Player_Daemon Music Player Command], das Kommandozeilen-Interface für den Music Player Daemon ). | |||
== Voraussetzungen == | == Voraussetzungen == | ||
=== FHEM-Server === | |||
Um das Modul [[MPD]] benutzen zu können, sind folgende Voraussetzungen zu erfüllen: | Um das Modul [[MPD]] benutzen zu können, sind folgende Voraussetzungen zu erfüllen: | ||
*Installiertes Perl-Modul '''XML:Simple''' | * Das Modul benötigt zwingend JSON, installation z.B. mit | ||
: <code>sudo apt-get install libjson-perl</code> | |||
* Installiertes Perl-Modul '''XML:Simple''' | |||
: Die Installation erfolgt mittels | |||
: <code>sudo apt-get install libxml-simple-perl</code> | |||
: oder | |||
: <code>cpan install XML:Simple</code> | |||
=== MPD === | |||
Um den MPD auf einem Raspberry Pi zu installieren finden sich im Internet zahlreiche gute Dokumentaionen z.B. [http://www.forum-raspberrypi.de/Thread-tutorial-music-player-daemon-mpd-und-mpc-auf-dem-raspberry-pi hier] sowie im [http://forum.fhem.de/index.php/topic,18517.0.html Thread im FHEM Forum : Modul für MPD] | |||
== Installation == | |||
Syntax | |||
<code>define <name> MPD <IP MPD Server | default localhost> <Port MPD Server | default 6600></code> | |||
Beispiel | |||
<code>define myMPD MPD 192.168.0.99 7000</code> | |||
Wenn FHEM und der MPD auf dem gleichen Server laufen: | |||
<code>define myMPD MPD</code> | |||
== 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 === | |||
<code>set <name> <was></code> | |||
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 === | |||
<code>get <name> <was></code> | |||
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 == | == Anwendungsbeispiele == |
Version vom 1. April 2017, 17:18 Uhr
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
Installation
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