BölkerBlog

Was das Home-Office mit Musikern macht

Es folgt ein kurzes Intro - wer keinen Bock auf meine Hinführung zur Thematik hat, sollte direkt zu Punkt 1 wechseln. Für alle Anderen: zuhause sitzen als Musiker - das macht die Quarantäne noch unattraktiver, als sie es sowieso schon ist. Womit also beschäftigen? Ich, der Lukas, ein technik-begeisterter Nerd & Musik-Fanatist, mache dann so Dinge wie mein Smart-Home ausbauen. Und was ich richtig gerne möchte, ist eine einfachere Kontrolle über Musik und die Musik bei uns zuhause läuft über Sonos. Dieses System ist aber leider nicht so richtig mit Homekit kompatibel. Über viele Umwege war das Ziel also Folgendes: ich möchte einen Schalter drücken können und daraufhin soll Musik abgespielt werden. Klingt einfach. Die Ausführung ist es auch, aber der Weg dorthin - naja, sagen wir einfach, der hat mich motiviert dieses Tutorial zu schreiben. Ursprünglich wollte ich gerne das Nuimo-Click-System der Firma Senic (von denen ist auch das Bild vom Schalter oben - als ob ich solche Fotos bei mir an der Wand machen könnte, also: (c) Senic GmbH) nutzen - das wurde aber leider vom Markt genommen, bevor ich dazu kam. Also habe ich ungefähr 97 Stunden Internet-Recherche gemacht und schließlich eine Lösung gefunden, die auf mehreren Komponenten basiert.


Die in diesem Tutorial verwendete Software ist Freeware, die Hardware nicht - wir werden aber nicht gesponsert.

    1. Die Voraussetzungen

    Was braucht man also, um musikfähige Schalter zu realisieren?

    1. Einen Server, auf dem Node.js läuft - das kann so ziemlich alles sein, von einem Raspberry mit Homebridge (so wie in meinem Fall) bis hin zu einem NAS-Server, wichtig ist nur, dass dieser permanent läuft
    2. Ein SONOS-System bestehend aus mindestens einer Box
    3. Einen oder mehrere Friends-of-Hue-Schalter, sowie eine Hue-Bridge - oder jedes andere System, was Schalter konfigurierbar in der Home-App anzeigt
    4. Die Home-App von Apple


    2. NODE-Sonos-HTTP-API installieren

    Die Grundvoraussetzung für alles, was folgt, ist wie oben erwähnt ein stetig laufender Server mit ständig laufender Node-SONOS-HTTP-API. Ich beschreibe das im Folgenden am Beispiel eines Raspberry Pi auf dem das Homebridge-System HOOBS installiert ist. Es ist nicht notwendig einen Bildschirm anzuschließen, die ganze Installation lässt sich über eine SSH-Verbindung erledigen. Bei einer HOOBS-Installation ist der Login so simpel wie es nur geht:

    ssh hoobs@[ip-adresse-des-raspberry-pi]

    Daraufhin wird man nach einem Passwort gefragt, das - Obacht! Sehr kompliziert! - "hoobsadmin" (ohne Anführungszeichen) lautet. In den meisten Fällen wird man hiernach gefragt, ob man der Verbindung vertraut (blabla, Fingerprint unbekannt, diesdas) und muss das mit einem ausgeschriebenem "yes" bestätigen.

    Jetzt geht es an die eigentliche Installation. Hierfür lauten die Befehle wie folgt (jede Zeile ist ein eigener Befehl und muss mit "Enter" bestätigt werden):

    sudo wget https://github.com/jishi/node-sonos-http-api/archive/master.zip

    sudo unzip master.zip

    cd node-sonos-http-api-master

    sudo npm install -g

    Das Ganze dauert einen Moment und dann ist die hauptsächliche Installation bereits geschafft. Das Problem, was bleibt, ist: der Prozess soll weder immer manuell, noch nach jedem Neustart erneut gestartet werden müssen. Also muss noch ein anderes Programm installiert werden, was uns das abnimmt. Hierfür eignet sich der Prozessmanager PM2 am Besten. Also folgen noch ein paar Zeilen Code:

    sudo npm install pm2 -g

    sudo pm2 start server.js

    sudo pm2 save

    sudo pm2 startup

    Zehn Zeilen Code und schon ist das Wichtigste geschafft. Lässt sich auch ganz einfach testen. Raspberry Pi neustarten und dann einfach in irgendeinen Browser im selben Netzwerk folgende Zeile eingeben:

    http://[ip-adresse-des-raspberry-pi]:5005/[raum]/say/juhu/de-de

    oder - im Falle einer HOOBS-Installation - geht auch:

    http://hoobs.local:5005/[raum]/say/juhu/de-de

    Alles in eckigen Klammern sind übrigens immer Variablen - also muss der Inhalt ohne Klammern durch deine eigenen Konfigurations-Variablen (beispielsweise den Raum-Namen in der SONOS-App) ersetzt werden.

    Wenn das geklappt hat: geil! Punkt 2 erledigt!

    Wenn nicht: verdammt. Sicher, dass alle Schritte richtig ausgeführt wurden? Ansonsten hilft es an dieser Stelle häufig das Ganze noch einmal von vorne durchzugehen. Eine Übersicht über alle möglichen Befehle findet man, wenn man die oben angegebene Adresse nur bis zur 5005 eingibt und alle Variablen weglässt. Hier einige Beispiele:

    http://hoobs.local:5005/küche/favorite/1%LIVE

    http://hoobs.local:5005/klo/volume/+5

    http://hoobs.local:5005/wohnzimmer/pause

    http://hoobs.local:5005/küche/join/klo

    http://hoobs.local:5005/wohnzimmer/repeat/on

    3. Das Programmieren in der Home-App


    Die OS15-Generation von Apple einen eklatanten Bug mit sich gebracht: das SSH-Skript in Kurzbefehlen in Homekit funktioniert nicht mehr. Ohne Fehlermeldung oder so. Die Anleitung ist deshalb entweder für die OS-Generationen bis 14 oder für OS-Generation ab 15 aufklappbar. (Stand: 10/2021)

    Jetzt können wir also erreichen, dass was immer wir auch wollen per HTTP://-Eingabe im Browser anschließend auf unseren SONOS-Boxen passiert. Das ist schon auch ziemlich schön. Nur hat ja auch niemand Bock dafür zirka 800 Browser-Lesezeichen anzulegen und unser eigentliches Ziel war es ja, das auf die Schalter zu programmieren, damit wir nur noch diese betätigen müssen. Ich persönlich nutze die oben erwähnten Senic-Schalter, da sie nicht nur fantastisch mit meinem GIRA System 55 E2 funktionieren, sondern auch mit der EnOcean-Technologie arbeiten, was bedeutet sie brauchen niemals eine externe Stromversorgung und haben keine Akkus, die jemals ersetzt werden müssten. Traumhafte Teile. 

    Ich überspringe hier die Einrichtung der Schalter selbst.

    Die Schalter werden in der Home-App mit dem Namen angezeigt, den man in der Hue-App festgelegt hat. In den folgenden Fotos heißt er einfach "Senic Schalter" - ja, ich bin Pragmatiker und da die Home-App den Raum-Namen automatisch ausblendet, wenn man ihn als Präfix benutzt, heißen die Dinge bei mir, wie sie nunmal heißen, also... Schalter. Kreativität olé!

    Die Benennung der Home-App ist selten dämlich. Ich habe letzten Endes auch nur durch herumprobieren herausgefunden, welcher der Punkte welche Schalterfläche ist. Es ist recht simpel: ein Punkt ist links oben, zwei Punkte ist links unten, drei Punkte ist rechts oben und vier Punkte rechts unten.

    So weit, so gut. Also suchen wir uns jetzt eine Schalterfläche aus, die wir belegen wollen und klicken auf "Hinzufügen". Danach öffnet sich der übliche Dialog, in dem wir die entsprechenden Geräte wählen können, mit denen irgendwas passieren soll - das wollen wir ja aber gar nicht. Also scrollen wir nach ganz unten und wählen den Punkt "In Kurzbefehl konvertieren".

    Und endlich sind wir da angekommen, wo die Magie dann tatsächlich passiert. Wer schon mal die App "Kurzbefehle" genutzt hat, kennt den Dialog, der sich dann öffnet. Als Erstes muss nun der Punkt "Szenen und Geräte wählen" gelöscht und dann stattdessen "Skript über SSH ausführen" hinzugefügt werden. Dieser sieht ungefähr so aus:

    Der Host ist die IP-Adresse des Raspberry Pi, der Port stimmt so, der Benutzer ist (um dem Beispiel einer HOOBS-Installation hier treu zu bleiben) "hoobs" und das Passwort "hoobsadmin". Keine Variable. Falls du eine andere Installation von Homebridge oder einen komplett anderen Server nutzt, muss der Benutzer den du hierfür wählst über die entsprechenden Rechte verfügen, ein SSH-Login durchzuführen.

    Und dann wird einfach noch eine simple Zeile Code eingefügt, um den entsprechenden SONOS-Befehl auszuführen und ein Befehl um das Skript wieder zu schließen:

    curl http://localhost:5005/[raum]/[befehl]/[variable]

    exit

    Dann wird noch fix alles abgespeichert und - zack - kann man einfach auf den Schalter drücken und es wird beispielsweise der Lieblingsradiosender in der Küche abgespielt. Und dann kann man ganz viele tolle Sachen basteln, wenn man Langeweile hat. Ich habe einen Schalter auf einer Holzplatte mit Tafelfolie verschraubt, den ich überall in der Wohnung mit hinnehmen kann, und der verschiedene Dinge (von einer Urlaubs-Playlist über einen Torjubel bis hin zu völligen Disko) auslösen kann. Wahnsinn, oder?

    Und endlich sind wir da angekommen, wo die Magie dann tatsächlich passiert. Daran hat sich nichts geändert. Aber wie man die Magie umsetzt, daran schon. Wer schon mal die App "Kurzbefehle" genutzt hat, kennt den Dialog, der sich dann öffnet. Als Erstes muss nun der Punkt "Szenen und Geräte wählen" gelöscht und dann stattdessen "Inhalte von URL abrufen" hinzugefügt werden. Dieser sieht ungefähr so aus:

    Für die Variable URL setzt man dann ein, was immer man lustig ist, also zum Beispiel "http://hoobs.local/flur/volume/15". Und dann ist die Musik im Flur plötzlich auf Lautstärke 15 eingestellt. Magie!

    Die Syntax ist die Folgende:

    http://[ip-adresse]:5005/[raum]/[befehl]/[variable]

    Wenn mehrere Dinge nacheinander passieren sollen, den Befehl einfach duplizieren und die Variablen ändern.

    Ab hier läuft es wieder simultan, egal welches OS:

    Alles wird noch fix abgespeichert und - zack - kann man einfach auf den Schalter drücken und es wird beispielsweise der Lieblingsradiosender in der Küche abgespielt. Und dann kann man ganz viele tolle Sachen basteln, wenn man Langeweile hat. Ich habe einen Schalter auf einer Holzplatte mit Tafelfolie verschraubt, den ich überall in der Wohnung mit hinnehmen kann, und der verschiedene Dinge (von einer Urlaubs-Playlist über einen Torjubel bis hin zur völligen Disko) auslösen kann. Wahnsinn, oder?

    Ende.

    Ich freue mich sehr über Fragen und/oder Anregungen.

    Schreiben Sie den ersten Kommentar