Inhaltsverzeichnis

Beschreibung

Leider hatte ich immer wieder Probleme auf den Amazon ECHO Musik über den MDP Server abzuspielen. Meistens wurde der TuneIn Sender angehalten, wenn der der nächste Titel abgespielt wurde. Dieses Verhalten ist massiv auf meinem Amazon ECHO 1. Generation aufgetreten. Das aktuelle Amazon ECHO Show hatte dieses Problem bis jetzt noch nie. Bei den Amazon ECHO Dots trat das Problem nicht so massiv auf. Hier brach die Verbindung nur sehr selten ab. Dieses war für mich Grund genug, um das Problem zu beseitigen. Bei meiner Internetrecherche bin ich dann auf das Debian Paket "icecast2" gestoßen. Da die Installation und die Konfiguration sehr einfach war, konnte ich auch sehr schnell testen, ob sich die Amazon ECHOs damit besser verhalten. Die bisherigen Tests waren alle erfolgreich. Bis jetzt ist keines meiner Amazon ECHO Geräte mehr ausgestiegen.

 

Diese Anleitung setzt voraus, dass die zwei Anleitungen "MPD Streamserver" und "Amazon ECHO TTS/MP3s" durchgeführt wurden. Die Konfiguration der MPD Server muss allerdings noch einmal angepasst werden, damit der IceCast Server den MP3 Stream zur Verfügung stellen kann. 

 

Positive Nebeneffekte:

  • Auf einem ECHO Show wird der aktuelle Titel angezeigt.
  • Zusätzlich wird des FHEM Reading "currentTitle" mit dem aktuelle Titel gefüllt.
  • In der Alexa Amazon Anwendung wird der aktuelle Titel angezeigt

Installation

Diese Anleitung basiert auf einer bereits bestehenden "Debian Stretch" Installation. 

 

Wie schon geschrieben, ist die Installation sehr einfach. Über folgenden Befehl könnt Ihr den IceCast Server installieren:

sudo apt-get update
sudo apt-get install icecast2

Direkt nach der Installation erscheint folgender Dialog.

 

Diesen bestätigt Ihr mit "<yes>".

 

Hier müsst Ihr den Namen Eures Rechners eintragen. Danach geht es mit "OK" weiter

Hier müsst Ihr das Kennwort für den Zugriff eintragen. Danach geht es mit "OK" weiter

Hier müsst Ihr das Kennwort für den Zugriff noch einmal bestätigen. Danach geht es mit "OK" weiter

Hier müsst Ihr das Kennwort für den Zugriff über das WEB Interface eintragen. Danach geht es mit "OK" weiter

Damit ist die Installation und die Grundkonfiguration abgeschlossen.

Konfiguration

Für die Konfiguration gib es die Datei "/etc/icecast2/icecast.xml". Hier beschreibe ich Euch kurz die wichtigsten Einstellungen:

<limits>
    <clients>100</clients>
    <sources>6</sources>
    <queue-size>524288</queue-size>
    <client-timeout>30</client-timeout>
    <header-timeout>15</header-timeout>
    <source-timeout>10</source-timeout>
    <!-- If enabled, this will provide a burst of data when a client
        first connects, thereby significantly reducing the startup
        time for listeners that do substantial buffering. However,
        it also significantly increases latency between the source
        client and listening client.  For low-latency setups, you
        might want to disable this. -->
    <burst-on-connect>1</burst-on-connect>
    <!-- same as burst-on-connect, but this allows for being more
        specific on how much to burst. Most people won't need to
        change from the default 64k. Applies to all mountpoints  -->
    <burst-size>65535</burst-size>
</limits>

 

Wichtig sind die rot markierten Bereiche. 

 

Wenn Ihr mehrere MPD Server habt, müsst Ihr hier die max. Anzahl der MPD Server eintragen.

 

Da ich für jeden meiner Amazon ECHO Geräte einen eigenen MPD Server verwende, habe ich den Standardwert "2" auf "6" erhöht.


<listen-socket>
    <port>9000</port>
    <!-- <bind-address>127.0.0.1</bind-address> -->
    <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
</listen-socket>

 

 

Da in meiner Umgebung der Standardport "8000" schon belegt war, musste ich diesen auf "9000" anpassen.


<mount type="default">
    <public>0</public>
    <on-connect>/etc/mpd/fhem_status.sh</on-connect>
    <on-disconnect>/etc/mpd/fhem_status.sh</on-disconnect>
</mount>

 

Wenn der MPD Server über ein Web Frontend oder ähnlich bedient wird, dann dauert es bis zu einer Minute, bis der FHEM Server die Info darüber erhält. Aus diesem Grund könnt Ihr hier ein Skript angeben, welches die Info direkt an den FHEM Server sendet.


Über folgenden Befehl könnt Ihr dieses Skript anlegen:

sudo nano /etc/mpd/fhem_status.sh

Für jeden MPD Server müsst Ihr dann eine Zeile eintragen. Die IP-Adresse "10.10.0.232" im Skript müsst Ihr mit der Eures FHEM Servers ersetzen. Der Inhalt des Skript kann dann wie folgt aussehen:

#!/bin/sh
curl --data "fwcsrf=$(curl -s -D - 'http://10.10.0.232:8084/fhem?XHR=1' | awk '/X-FHEM-csrfToken/{print $2}')" http://10.10.0.232:8084/fhem?cmd.dummy=get%20mpd.buero%20statusRequest
curl --data "fwcsrf=$(curl -s -D - 'http://10.10.0.232:8084/fhem?XHR=1' | awk '/X-FHEM-csrfToken/{print $2}')" http://10.10.0.232:8084/fhem?cmd.dummy=get%20mpd.kueche%20statusRequest

Solltet Ihr an Eurem FHEM Server den csrfToken deaktiviert haben, dann sollte das Skript wie folgt aussehen:

#!/bin/sh
curl -s http://10.10.0.232:8084/fhem?cmd.dummy=get%20mpd.buero%20statusRequest
curl -s http://10.10.0.232:8084/fhem?cmd.dummy=get%20mpd.kueche%20statusRequest

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/fhem_status.sh

Die restlichen Einstellungen könnt Ihr auf Standard belassen. Um die Konfiguration aktiv zu schalten, müsst Ihr mit folgendem Befehl den IceCast Server neu starten:

sudo service icecast2 restart

Über den Aufruf der URL "http://10.10.0.232:9000" könnt Ihr die generelle Grundfunktion testen. Die IP-Adresse der URL müsst Ihr natürlich mit Eurer IP-Adresse ersetzen. Danach sollte sich der Browser wie folgt zeigen:

Sobald Ihr auf den Punkt "Administration" klickt, müsst Ihr Euch am IceCast Server anmelden. Wenn Ihr das Kennwort auf Standard belassen habt, könnt Ihr Euch mit folgenden Daten anmelden:

  • Benutzername = "admin"
  • Kennwort = "hackme"

Danach sollte sich die Webseite wie folgt darstellen:

MPD Anpassungen

Diese Anleitung setzt voraus, dass die Anleitung "MPD Streamserver" durchgeführt wurden, daher gehe ich hier nur noch auf die Abweichungen ein.

 

Wie schon in der Anleitung "MPD Streamserver" beschrieben, solltet Ihr für jeden Amazon ECHO einen eigenen MPD Server anlegen. Aus diesem Grund müsst Ihr jede MPD Konfigurationsdatei wie folgt anpassen:

# 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"
}

 

Der rot markierten Bereiche war seither für den Stream zuständig. Da der MP3 Stream jetzt aber über den IceCast Server laufen soll, müsst Ihr diesen Part der Konfiguration komplett löschen.

 

 


audio_output {
       type            "shout"
       encoder         "mp3"
       name            "My Stream Buero"
       host            "10.10.0.232"
       port            "9000"
       mount           "/buero.mp3"
       password        "hackme"
       bitrate         "320"
       format          "44100:16:1"
       user            "source"
}

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

 

Der grün markierten Bereiche beinhaltet jetzt die neue Konfiguration. Hier müsst Ihr einmal die IP-Adresse des IceCast Servers angeben. Hier im Beispiel die 10.10.0.232. Wichtig ist dass der Port, wie in der IceCast Konfiguration, ebenfalls auf "9000" zeigt.

 

Die wichtigste Angabe ist der Parameter "mount". Wichtig ist hierbei, dass Ihr für jeden MPD Server eine eindeutige URL-Erweiterung angebt.

 

Hier in diesem Beispiel verwenden Ihr "/buero.mp3".

 

Um später von dem IceCast Server die Musik von dieser Konfiguration abzuspielen, würde die URL wie folgt aussehen:

 

"http://10.10.0.232:9000/buero.mp3"


Nachdem Ihr alle MPD Server Konfigurationsdateien angepasst habt, müsst Ihr die MPD Server einmal neu starten. Dies könnt Ihr über folgende Befehle durchführen:

sudo pkill mpd
sudo /etc/mpd/mpd.local

Um einen ersten Test des IceCast Servers durchführen, müsst Ihr an Eurem MPD Player Musik abspielen. Jetzt könnt Ihr auf der IceCast Web Seite prüfen ob der MPD Server sich erfolgreich verbunden hat. Hierfür müsst Ihr auf der Web Seite auf den Punkt "Mountpoint List" klicken. Danach sollte die Web Seite wie folgt aussehen:

 

Hier muss jetzt Euer MPD Player mit seinem Mountpoint erscheinen.

 

Wenn Ihr die URL in Euren Browser eingebt, muss direkt danach die Musik des MPD Server zu hören sein.

Damit ist die komplette Konfiguration abgeschlossen.

FHEM Anpassungen

Wie schon in der Anleitung "MPD Streamserver" beschrieben, könnt Ihr für jeden MPD Server ein "Notfiy" anlegen, welches Eurer Amazon ECHO Geräte automatisch startet, wenn Ihr den dazugehörigen MPD Server startet. Damit dies auch über den IceCast Server möglich ist, müsst Ihr den Bereich DEF noch abändern.

vorher

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

nachher

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

 

Das Ergebnis sollte dann ungefähr so aussehen:

Kommentar schreiben

Kommentare: 0