Squeezebox-Integration mit der HomeMatic

Im Schlafzimmer lasse ich den Verstärker der Squeezebox automatisch von der HomeMatic schalten

3709 Zeichen
Score aktualisiert
100%
Code: 90f2a20b821d4397bd7050fe22d3bd95
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert

Im Schlafzimmer betreibe ich ein minimalistisches Ensemble bestehend aus einer Squeezebox Classic, einem kleinen Verstärker von Conrad sowie zwei Boxen einer alten Schneider-Anlage, welche erstaunlich gut klingen.


Hängeregal mit kompletter Squeezebox-Anlage

Der Verstärker ist nicht fernbedienbar, daher habe ich ihn an einen Schaltaktor aus dem HomeMatic-Programm angeschlossen, der ganz normal an der CCU angelernt ist. Meine Squeezeboxen betreibe ich an einem virtuellen Ubuntu-Server, auf dem der Logitech Media Server läuft. Damit habe ich alles zusammen, um den Verstärker automatisch ein- und ausschalten zu lassen.

Die Lautstärke regle ich über die Squeezebox – und mit dem PowerSave-Plugin brauche ich mich nicht mal um das Ausschalten zu kümmern, wenn ich unter sanfter Musikberieselung eingeschlafen bin.

Programmierung der CCU

Auf der CCU ist kein eigenes Programm nötig. Der Ubuntu-Server schaltet einfach bei Bedarf den Aktor über dessen URL ein oder aus.

Damit der Aktor über eine URL direkt erreichbar ist, muss jedoch mein DB-Access-Add-on (oder eine entsprechende Alternative) auf der CCU installiert sein.

Das Server-Script

Auf dem Server läuft ein Shell-Script, das in regelmäßigen Abständen den Zustand der Squeezebox im Schlafzimmer abfragt und dann entsprechend den Aktor ein- und ausschaltet.

#!/bin/bash

power=`cat /var/tmp/squeezebox-status`

while [ `date +%S` -lt 55 ] ; do
        x=`(echo '00%3A04%3A20%3A12%3A43%3Acf power ?' ; sleep 1 ; echo 'exit') | telnet sbs 9090 2>/dev/null | awk '/power/ { print $3 }'`
        if [ "$x" == "1" ] ; then
                newpower='true'
        fi
        if [ "$x" == "0" ] ; then
                newpower='false'
        fi
        if [ "$newpower" != "$power" ] ; then
                wget -O /dev/null -q 'http://ccu2/addons/db/state.cgi?item=Schlafzimmer.Squeezebox&dp=STATE&value='$newpower
                power=$newpower
        fi
        sleep 5
done

Anpassung des Scripts

Das Script muss natürlich an die eigene Installation angepasst werden:

Adresse der Squeezebox

Die Squeezebox wird durch ihre MAC-Adresse identifiziert. Diese kann man direkt in der Web-Oberfläche des Logitech Media Servers unter „Information“ ablesen.

Für das Script muss der Doppelpunkt durch %3A ersetzt werden.

Adresse des Servers

Die IP-Adresse, auf dem der Logitech Media Server erreichbar ist. In meinem Fall ist der Server unter dem Namen „sbs“ erreichbar – ohne entsprechenden lokalen DNS-Server wird hier eine IP-Adresse benötigt, zum beispiel 192.168.0.55.

Die Adresse ist dieselbe, unter der auch die Weboberfläche aufgerufen werden kann.

Adresse der CCU

Hier muss die IP-Adresse oder der Name eingetragen werden, unter dem die CCU erreichbar ist. Bei mir wäre das „ccu“.

Name des Aktors

Zum Schluss muss noch der Name des Aktors angegeben werden – bei mir „Schlafzimmer.Squeezebox“ entsprechend meiner persönlichen Namenskonvention.

Das Script speichert man an passender Stelle unter einem sinnvollen Namen ab – zum Beispiel als /usr/local/bin/squeezebox-schalter.sh. Natürlich muss es ausführbar gemacht werden:

sudo chmod +x /usr/local/bin/squeezebox-schalter.sh

Cron-Job

Damit das Script jederzeit läuft und automatisch gestartet wird, richtet man es als Cron-Job ein. Ich lasse es als root laufen:

sudo crontab -e

In der Tabelle fügt man die passende Zeile ein und speichert sie ab.

* * * * * /usr/local/bin/squeezebox-schalter.sh

Fertig! Das Script wird ab jetzt jede Minute gestartet. Nach jedem Start prüft es eine Minute lang alle 10 Sekunden, ob die zugeordnete Squeezebox eingeschaltet ist oder nicht. Anschließend wird bei Bedarf der Aktor für den Verstärker ein- oder ausgeschaltet.

Navigation