Inhaltsverzeichnis

Beschreibung

Über das FHEM Modul "echodevice" ist es jetzt möglich, Musik aus dem eigenen LAN abzuspielen. Dazu muss die Anleitung "Amazon ECHO TTS/MP3s" umgesetzt sein. Leider hat die Lösung einen Nachteil. Da sie über einen FAKE TuneIn Link arbeitet, unterliegt die Steuerung der Musik den TuneIn Regeln. Hier ist keinerlei Steuerung der Musik möglich. Aktuell können nur einzelne Titel oder ganze Playlisten abgespielt werden. Um diesem Nachteil zu beseitigen, könnt Ihr den MPD Server verwenden. Der MPD Server kann einen HTTP Stream zur Verfügung stellen. Dieser lässt sich dann über das FHEM Modul "MPD" oder dem Smartphone mit passendem MPD Client Steuern. 

Wie immer basiert diese Anleitung auf einem bereits bestehen Debian Stretch Installation.

Installation

Die Installation des MPD Server ist sehr einfach. Über folgenden Befehl könnt Ihr den MPD Server installieren.

sudo apt-get update
sudo apt-get install mpd

Wenn Ihr später mehrere Amazon ECHO über einen MPD Server steuern möchtet, müsst Ihr den automatischen Start des MPD Server verhindern. Hierfür müsst Ihr folgenden Befehl ausführen:

sudo systemctl disable mpd.service

Jetzt wird nach einem Reboot des Debian der MPD Server nicht mehr gestartet.

Konfiguration

Damit Ihr später für jeden Amazon ECHO einen eigenen MPD Server habt, müsst Ihr für jede MPD Server Instanz ein eigenes Konfigurationsfile anlegen. Dafür muss zuerst ein Konfigurationsverzeichnis angelegt werden:

sudo mkdir /etc/mpd

In das neu erstellte Verzeichnis legt Ihr jetzt für jedes Amazon ECHO eine eigene Konfigurationsdatei ab.

sudo nano /etc/mpd/echo_buero.conf
# Files and directories
music_directory         "/opt/fhem/www/echodevice"
playlist_directory      "/opt/fhem/www/echodevice/playlists"
db_file                 "/var/lib/mpd/tag_cache"
log_file                "/var/log/mpd/mpd_buero.log"
pid_file                "/run/mpd/pid_buero"
state_file              "/var/lib/mpd/state_buero"
sticker_file            "/var/lib/mpd/sticker.sql"

# General music daemon options
user                    "mpd"
bind_to_address         "10.10.0.232"
port                    "6600"

input {
    plugin "curl"
}

audio_output {
        type            "httpd"
        name            "My HTTP Stream"
        encoder         "vorbis"
        port            "8000"
        bind_to_address "10.10.0.232"
        quality         "5.0"
        max_clients     "0"
        always_on       "yes"
        enabled         "yes"
}

# Character Encoding
filesystem_charset      "UTF-8"
id3v1_encoding          "UTF-8"

 

Wichtig sind die rot markierten Bereiche. 

 

Diese müssen in jeder Konfiguration unterschiedlich sein!

 

z.B. für Büro

port = 6600

audio port = 8000

 

z.B. für Küche

port = 6601

audio port = 8001

 

usw.......

 

Die grün markierten Bereiche müssen mit Euren Informationen ausgefüllt sein. 

 

music_directory = Hier das "echodevice" Verzeichnis des Modules eintragen. Wer möchte kann hier aber auch einen Pfad eintragen, in welchem wirklich Musik liegt. 

playlist_directory = Hier das "playlists" Verzeichnis des Modules eintragen

bind_to_address = IP-Adresse des MPD Server


Autostart MPD Server

Nachdem Ihr dann alle Konfigurationsdateien angelegt habt, benötigt Ihr noch ein Skript, welches die einzelnen MPD Server starten. Über folgenden Befehl könnt Ihr dieses Skript anlegen:

sudo nano /etc/mpd/mpd.local
#!/bin/sh -e
#
# mpd.local
/usr/bin/mpd /etc/mpd/echo_buero.conf
/usr/bin/mpd /etc/mpd/echo_kueche.conf

exit 0

In diesem Beispiel verwende ich zwei MPD Server:

  • Büro = "/etc/mpd/echo_buero.conf"
  • Küche = "/etc/mpd/echo_kueche.conf"

Damit das Skript auch ausgeführt werden kann, müsst Ihr die Berechtigung noch ändern. Hierfür müsst Ihr folgenden Befehl ausführen:

sudo chmod +x /etc/mpd/mpd.local

Damit diese Skript bei jedem Systemstart automatisch gestartet wird, müsst Ihr noch die Datei "/etc/systemd/system/mpd-local.service" erzeugen

sudo nano /etc/systemd/system/mpd-local.service
[Unit]
Description=/etc/mpd/mpd.local
ConditionPathExists=/etc/mpd/mpd.local

[Service]
Type=forking
ExecStart=/etc/mpd/mpd.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Abschließen müsst Ihr das System noch für den Start des Skripts konfigurieren. Hierfür müsst Ihr folgenden Befehle ausführen:

sudo systemctl enable mpd-local
systemctl start mpd-local.service
sudo systemctl status mpd-local.service

Das Ergebnis sollte dann ungefähr so aussehen:

Konfiguration FHEM

Für jeden MPD Server muss in FHEM ein eigenes Device angelegt werden. Zum Anlegen benötigt Ihr jeweils die IP-Adresse und den dazugehörigen Port. Mit folgendem Befehlen könnt Ihr dann die jeweiligen FHEM Device anlegen:

define mpd.buero MPD 10.10.0.232 6600
define mpd.kueche MPD 10.10.0.232 6601

Der Befehl ist in mehrere Bereiche unterteilt:

  • mpd.buero = Name des neuen FHEM Devices
  • MPD = Modulname
  • 10.10.0.232 = IP-Adresse des MPD Servers
  • 6600 = Port des MPD Servers

Das FHEM Modul MPD fängt direkt nach dem anlegen an, die ganze Musik als SET Befehl einzulesen. Dies kann sehr lange dauern, und die Bedienung des FHEM Webfrontend wird dadurch auch sehr langsam. Daher würde ich Euch empfehlen, diese Funktion abzuschalten. Hierfür müsst Ihr folgenden Befehl noch absetzen:

attr mpd.buero loadMusic 0
attr mpd.kueche loadMusic 0

Zusätzlich habe ich noch folgende Attribute angepasst:

attr mpd.buero webCmd previous:play:pause:stop:next
attr mpd.kueche webCmd previous:play:pause:stop:next

Damit die Änderung greift, müsst Ihr den FHEM Server einmal neu starten. Hierfür ist das FHEM Command "shutdown restart" ausreichend.

 

Das fertig konfigurierte FHEM Device sieht dann ungefähr so aus.

 

Über das Dropdown Menü könnt Ihr jetzt alle vorhandenen Playlisten auswählen. Hier werden alle Playlisten angezeigt, welcher Ihr anhand der Anleitung "MP3 Playlisten" erstellt habt.

 

Direkt nach der Auswahl, fängt der MPD Server mit dem Streamen der Musik an. Testen könnt Ihr den Stream, indem Ihr einen Browser öffnet und die URL "http://10.10.0.232:8000" in die Adressleiste eintragt.

 

Im Browser sollte jetzt direkt der Stream gestartet werden.

 

Über das FHEM Device könnt Ihr jetzt den Stream steuern z.B.

  • Nächster Titel
  • Pause
  • usw....

Wenn der erste Test funktioniert hat, könnt Ihr an Eurem ECHO über folgenden Befehl den Stream abspielen:

set <Echoname> playownmusic http://10.10.0.232:8000

Der zweite Stream wäre über die URL "http://10.10.0.232:8001" erreichbar.

Als letztes könnt Ihr noch einen "Notify" einrichten, damit Eurer ECHO automatisch startet, wenn Ihr den dazugehörigen MPD Server startet. Damit der "Notify" richtig arbeitet, müsst Ihr an dem MPD FHEM Device noch das Attribut "event-on-change-reading" auf ".*" setzen. Hierfür müsst Ihr folgenden Befehl absetzen:

attr mpd.buero event-on-change-reading .*

Über folgenden Befehl könnt Ihr das "Notify" FHEM Device anlegen:

define mpd.buero.play.notify notify mpd.buero:play {}

Damit das neu "Notify" Device auch etwas tun kann, müsst Ihr den Bereich DEF noch abändern. Hierfür könnt Ihr folgendes Skript verwenden:

mpd.buero:play {
   if ($EVENT eq 'play') {
      fhem ("set ECHO_NAME playownmusic http://10.10.0.232:8000;");
   }
}

 

Den Namen "ECHO_NAME" müsst Ihr mit dem Namen Eures ECHOs ersetzen.


 

Das Ergebnis sollte dann ungefähr so aussehen.

Kommentar schreiben

Kommentare: 1
  • #1

    pfeffi (Mittwoch, 07 August 2019 12:55)

    ist ne wunderbare Sache, die ich bis vor kurzen gut nutzen konnte.
    neuerdings stoppt allerdings der mpd-player sobald ich alexa anspreche.