Homematic – SONOS steuern – Teil 01 – Hardware und Software
Ich betreibe seit Jahren eine umfangreiche HomeMatic Installation und parallel dazu habe ich einige SONOS Lautsprecher im Einsatz. Gerne würde ich diese beiden Systeme verbinden um die Lautsprecher auch über mein HomeMatic steuern zu können. In den letzten Monaten habe ich einige Lösungsansätze getestet und mich dann für die Lösung einschieden, die ich euch hier vorstellen möchte. Obwohl einiges an Linux Know How erforderlich ist, habe ich versucht es so einfach zu beschreiben, das es auch Raspberry Pi und Linux Einsteiger hinbekommen sollten.
Allgemeines
Die von mir hier vorgestellte und beschriebene Lösung gibt dem Anwender die Möglichkeit alle Funktionen des SONOS Systemes zu verwenden und über HomeMatic zu steuern. Es ist allerdings eine separate Raspberry Pi notwendig, was ich selbst jedoch nicht als Problem sehe. Bei anderen Lösungen wie IO-Broker oder Mediola ist ebenfalls weitere Hardware erforderlich. Da mein erster Ansatz immer ist, alles über HomeMatic selbst steuern zu können, ist das Github Projekt von Jimmy Shimizu (Jishi): „node-sonos.http.api“ meine favorisierte Lösung. Das Ganze hört sich im ersten Moment ziemlich kompliziert an, aber ich versuche es so einfach wie möglich und Schritt für Schritt zu erklären. Am Ende hoffe ich ihr seid genauso begeistert wie ich.
Nach der Umsetzung des Projektes ist folgendes möglich:
- Jeden SONOS Lautsprecher einzeln, als Gruppe oder alle gemeinsam steuern
- Gruppen bilden und auflösen
- Playlisten abspielen
- Favoriten abspielen
- Radio Sender abspielen
- Durchsagen oder MP3-Sounds abspielen
- Musik aus Internetdiensten (Deezer, Spotify, usw.) abspielen
- Interpreten in Playlisten oder Internetdiensten suchen und abspielen
- Durchsagen auf bestimmten oder allen Lautsprechern abspielen
- MP3 Dateien auf bestimmten oder alle Lautsprecher abspielen
- Playbar Parameter einstellen
Was benötigen wir alles für dieses Tutorial?
Amazon | eBay | ELV | |
Raspberry Pi3 | Link | Link | Link |
Bausatz-Funkmodul | Link | Link | Link |
microSD Karte | Link | Link | Link |
Gehäuse | Link | Link | Link |
Gehäuse für HS | Link | Link | Link |
Netzteil für HS | Link | Link | Link |
USB für Netzteil HS | Link | Link | Link |
externe Antenne | Link | Link | — |
Möglichkeiten
Da die Möglichkeiten so umfangreich sind, ist eine kleine Serie entstanden von insgesamt drei Artikeln mit dem folgenden Inhalt:
- Hardware und Software Installation (Raspbian, Node.js und SONOS API)
- Steuerung der SONOS Lautsprecher über HomeMatic (CCU2/RaspberryMatic)
- Ausgabe von Durchsagen oder Alarmierungen über die Sonos Lautsprecher
Diese einzelnen Artikel werden zeitnah hintereinander erscheinen, da ich sie in den letzten Wochen seit November erstellt habe. Wollte das Ganze aber erst nach einem längeren Testlauf veröffentlichen.
Dieser Test ist nun erfolgreich abgeschlossen und ich möchte euch über diese Artikel das tolle Github Projekt von Jimmy, Schritt für Schritt beschreiben und zeigen was Alles möglich ist. Wenn beispielsweise ein Bewegungsmelder im Bad eine Bewegung erkennt, kann man die gewünschte Musik in der gewünschten Lautstärke auf den gewünschten Lautsprechern abspielen. Oder aber bei einem Einbruchalarm könnte man aus allen SONOS Boxen einen Sirenenton oder Ansagen abspielen. Auch die Wecker Funktion von SONOS erfährt mit dieser Lösung eine deutliche Aufwertung, weil man sich in Abhängigkeit von Feiertag, Wochenende, Arbeitstag oder Urlaub wecken lassen kann. Alle denkbaren Auslöser im HomeMatic können eine Aktion innerhalb des SONOS Systems auslösen.
Durch das Github Projekt von Alex „piVCCU – CCU2 auf Raspberry pi oder Tinkerboard“ ergibt sich eventuell auch die Möglichkeit HomeMatic und die SONOS API auf einer Raspberry Pi laufen zu lassen. Solbald die Tests abgeschlossen sind, wird das ein zusätzlicher Artikel zur SONOS Reihe.
Raspberry Pi Grundinstallation
Als Basis Betriebsystem für dieses Projekt empfehle ich RASPBIAN. Wie ihr auch als Einsteiger diese System auf einer Raspberry installieren könnt, habe ich im Artikel „NOOBS – Einstieg und erste Schritte in die Raspberry Pi Welt“ beschrieben.
Für fortgeschrittene Anwender ist es auch möglich, direkt das RASPBIAN Image herunter zuladen und auf eine SD-Karte zu schreiben. Die Einstellung von WIFI, Sprache usw. ist dann aber nicht so einfach wie bei der Installation über NOOBS.
Die aktuelle RASPBIAN Version findet ihr hier als Download
Installation von RASPBIAN auf einer SD-Karte
- Ihr müsst die folgenden Schritte durchführen, um NOOBS auf dem Raspberry Pi zu installieren:
- RASPBIAN herunterladen (bereits erledigt im vorherigen Schritt);
- Die ZIP-Datei entpacken;
- Formatiert die SD-Karte im FAT32 Format und kopiert die entpackten Dateien anschließend auf die SD-Karte;
- SD-Karte in den Pi stecken und LAN-Kabel einstecken und mit dem Router verbinden. Zusätzlich den Bildschirm über HDMI verbinden, sowie eine Tastatur und Maus über USB. Zum Schluß dann das USB Stromkabel einstecken und mit dem Strom verbinden;
- Dann startet automatisch der Boot Vorgang und RASPBIAN wird gestartet.
Installation von Node.js
Nachdem RASPBIAN auf der Raspberry Pi installiert ist, muss als nächstes Node.js aktualisiert werden.
In unserer Raspbian Installation ist Node.js zwar vorhanden, aber dabei handelt es sich nicht um die benötigte Version. Daher ist es notwendig die erforderliche Version nachträglich zu installieren.
Bevor wir mit der Installation starten können, sollte zuerst die alte Version entfernt werden. Dazu müssen die folgenden Befehle abgesetzt werden.
sudo apt-get remove nodejs sudo apt-get autoremove sudo apt-get autoclean
Installation über das NodeSource Repository
Hierbei handelt es sich sowohl um die einfachste, wie auch die sicherste Methode Node.JS zu installieren. Verwendet wird das Repository von NodeSource, wodurch alle Updates über den Paketmanager installiert werden.
Jetzt müssen wir die erforderliche Version installieren. Das gestartete Setup-Script erkennt automatisch das installierte Betriebssystem und konfiguriert die Pakete entsprechend. Empfohlen wird aktuell die Version 6.x zu installieren. Dies machen wir mit dem folgenden Befehl:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
Nun müssen wir Node.js sowie die benötigten Build-Tools installieren. Dazu müssen wir den folgenden Befehl ausführen.
sudo apt-get install -y nodejs build-essential
Damit haben wir jetzt in unserem Raspbian die empfohlene Node.js Version installiert. Zum Schluss noch mit dem folgenden Befehl alles in das Verzeichnis /usr/local/ kopieren:
sudo cp -R * /usr/local/
Ob das Ganze funktioniert hat können wir mit dem folgenden Befehl kontrollieren:
node –v
Es sollte dann die gewünschte Version angezeigt werden.
v6.12.0
Installation SONOS API
Nachdem wir nun den Server inklusive Node.js Server komplett aufgebaut haben, können wir jetzt mit der Installation der SONOS API starten.
Dazu müssen wir zuerst in das „Home Verzeichnis“ des Users „Pi“ wechseln (1). Mit dem nächsten Befehl die Datei „master.zip“ herunterladen (2). Durch den dritten Befehl wird die Datei „master.zip“ entpackt (3). Mit dem letzten Befehl in das Verzeichnis „node–sonos–http–api–master“ wechseln (4).
cd ~ wget https://github.com/jishi/node-sonos-http-api/archive/master.zip unzip master.zip cd node-sonos-http-api-master
Installation
An dieser Stelle findet dann die eigentliche Installation statt. Während diesem Installationsvorgang werden die benötigten Pakete und Module heruntergeladen und installiert. Mit Abschluss der Installation sind diese dann dem Node.js Server bekannt.
Dieser Vorgang kann etwas länger dauern, aber keine Sorge, dein System arbeitet.
Um sicher zu gehen, den folgenden Befehl eingeben, um in das korrekte Verzeichnis zu wechseln:
cd /home/pi/node-sonos-http-api-master
Jetzt folgt der eigentliche Befehl zur Installation der SONOS API:
npm install --production
Während der Installation seht ihr eine Auflistung der Module und Pakete, die ab dem Moment für Node.js zur Verfügung stehen.
Solange keine „roten Fehlermeldungen“ erscheinen, ist alles einwandfrei gelaufen.
Konfiguration
Nachdem wir die Installation erfolgreichhinter uns gebracht haben, können wiruns jetzt der Konfiguration widmen. Dazu ist es aus meiner Sicht sinnvoll, eine WinSCP Verbindung zur Raspberry herzustellen. Es ist deutlich einfacher Konfigurationsdateien mittels Windows oder Mac Editor anzupassen, als in der Shell.
Die beiden hier beschriebenen Schritte sind nur notwendig, wenn ihr
- Textansagen über Sonos abspielen möchtet (Details im 3. Teil der Sonos Serie)
- Voreinstellungen für eure Sonos Lautsprecher definieren möchtet
Diese Schritte könnt ihr entweder weglassen oder aber auch zu einem späteren Zeitpunkt durchführen, wenn ihr euch anders entschieden habt.
Konfiguration durchführen
Mit WinSCP in das Verzeichnis /home/pi/node-sonos-http-api-master wechseln.
1.) Text-to-Speech (TTS)
Möchtet ihr einen beliebigen Text an eine oder alle Sonos Lautsprecher übergeben, müsst ihr einen sogenannten TTS (Text-to-Speech) Service in Anspruch nehmen. Dieser wandelt einen Test in eine Sprachausgabe um.
Für unser Sonos Projekt nutzen wir den kostenlosen TTS-Service Voice RSS.
Um diesen nutzen zu können, müsst ihr den obigen Link verwenden und auf der Startseite seht ihr gleich die verschieden Profile, welche ihr nutzen könnt.
Ganz links seht ihr die kostenllose Option, mit der ihr täglich bis zu 350 mal den Service nutzen könnt. Ich denke das sollte reichen.
Um den Service nutzen zu können, müsst ihr auf den Button „GET STARTED“ klicken. Dann geht ein Fenster auf in dem ihr euch registrieren müsst. (Existierende Mail-Adresse notwendig).
Nachdem ihr alle notwendigen Felder ausgefüllt habt und auf den Button „Register“ geklickt habt, bekommt ihr eure Registrierungsdaten angezeigt. Das wichtigste für die Funktion ist die API Key.
Zum Abschluß müsst ihr dann nur noch den Button „Update“ klicken. Dann bekommt ihr eine Mail mit den Registrierungsinformationen an die angegebene Mail-Adresse.
Damit ist dann die kostenlose Registrierung bei Voice RSS abgeschlossen. Als nächsten Schritt müssen wir innerhalb der SONOS API diese Registrierung definieren. Dazu gehen wir am besten über WINSCP in das folgende Verzeichnis:
Dort dann eine Datei mit dem Namen „settings.json anlegen, dessen Inhalt wiefolgt aussehen sollte.
Erklärung:
- announceVolume = Hier könnt ihr die Standardlautstärke der Ansagen einstellen.
- voicerss = Hier die „xxx“ durch euren API key ersetzen.
2.) Voreinstellungen für die Lautsprecher
In der folgenden Konfigurationsdatei innerhalb der SONOS API könnt ihr die Standardeinstellungen all eurer Sonos Lautsprecher einstellen. Auch diesen Schritt könnt ihr weglassen, dann werden die Einstellungen aus der Sonos App als Standard genommen. Oder aber zu einem späteren Zeitpunkt einstellen.
Im Verzeichnis „/home/pi/node-sonos-http-api-master/presets/ findet ihr die Beispieldatei „example.json“. Diese könnt ihr über WINSCP an eure SONOS Umgebung anpassen. Damit die Definitionen aktiv werden, müsst ihr die Datei in „original.json“ umbenennen. Wie gesagt, ich nutze diese Option nicht, weil ich die Voreinstellung in der Sonos App vorgenommen habe.
Erster Start SONOS API
Jetzt haben wir alle Voraussetzungen erfüllt und können die SONOS API zum erstenmal starten. Dafür den folgenden Befehl ausführen:
Um sicher zu gehen vorher in das korrekte Verzeichnis zu wechseln, sonst funktioniert der Start Befehl nicht.
cd /home/pi/node-sonos-http-api-master
Jetzt folgt der eigentliche Befehl zum Start der SONOS API:
npm start
Die folgenden Informationen sollten angezeigt werden, dann hat alles funktioniert und die API steht zur Verfügung und „lauscht“ jetzt auf dem port 5005 auf die HTTP Befehle.
Test über Browser
Die API hört nun auf die Namen des jeweiligen Raumes. In meinem Beispiel nehme ich meinen Lautsprecher in der Küche und lasse dort die im Sonos definierte Playliste „TOP100“ abspielen.
Bei den Raumnamen keine Umlaute verwenden, also anstatt „Küche“ bitte „Kueche“ verwenden, ansonsten funktioniert das nicht.
Natürlich müsst ihr die IP Adresse auf die eurer Sonos Raspberry ändern.
In einem Browser folgende URL öffnen:
http://192.168.1.54:5005/kueche/playlist/top100
Es funktioniert, die Box beginnt mit dem ersten Titel der aktuellen Top100. Ihr könnt dann noch ein paar weitere Befehle über den Browser testen.
http://192.168.1.54:5005/kueche/next = springt zum nächsten Titel
http://192.168.1.54:5005/kueche/previous = springt zum vorherigen Titel
http://192.168.1.54:5005/kueche/volume/30 = setzt die Lautstärke auf den Wert 30
http://192.168.1.54:5005/kueche/volume/-10 = reduziert die Lautstärke um den Wert 10
http://192.168.1.54:5005/kueche/pause = stoppt das Abspielen
http://192.168.1.54:5005/kueche/play = startet das Abspielen wieder
http://192.168.1.54:5005/kueche/playlist/lieblingssongs = startet eine andere Playlist
Das soll für den ersten Test über den Browser mal reichen und enn alles funktioniert hat, werdet ihr meine Begeisterung sicher teilen. Ihr könnt das Ganze neben den Aktionen am Lautsprecher auch immer in der SONOS App verfolgen. Im Browser wird angezeigt ob der Befehl korrekt ist, der Raumname bzw. die Playlist existiert. Wenn alles stimmt, bekommt ihr folgende Bestätigung:
Problem mit Node.js Instanz
Obwohl bis jetzt alles super funktioniert, gibt es in der ganzen Konstellation noch ein kleines Problem, zu dem ich euch aber hier auch gleich eine Lösung präsentieren kann.
Ih könnt an dem folgenden Screenshot erkennen, das ihr euch nach dem Start der SONOS API in einer Node.js Instanz befindet. Dies erkennt ihr daran, dass ihr eigentlich keinen Prompt mehr seht, sondern nurden Cursor:
Solange sich euer Node.js Server in diesem Zustand befindet, empfängt er eure HTTP Befehle und setzt sie entsprechend um.
Mit Strg+C beendet man diese Node.js Instanz. Das gleiche passiert wenn ihr eure SSH Verbindung zum Server beendet. Damit beendet ihr auch SONOS API und eure Befehle laufen ins Leere.
Lösung
Um die SONOS API auch laufen zu lassen, wenn kein User auf dem Raspberry Server angemeldet ist, wird SCREEN benötigt. Mit dem Programm SCREEN verwalten wir mehrere virtuelle Konsolen in einem einzigen Terminal-Fenster, lassen Prozesse auf entfernten Servern weiterlaufen (während wir längst vom System abgemeldet sind.
Installation von SCREEN
Um sicher zu gehen vorher in das korrekte Verzeichnis zu wechseln, sonst funktioniert der Start Befehl nicht.
cd /home/pi/node-sonos-http-api-master
Jetzt folgt der eigentliche Befehl zur Installation von SCREEN:
sudo apt-get install screen
Nachdem die Installation abgeschlossen ist, könnt ihr SCREEN mit dem folgenden Befehl starten:
screen
Ihr bekommt dann die nachfolgenden Meldungen und befindet euch dann quasi in einer Shell innerhalb einer Shell in der nun die SONOS API erneut gestartet werden muss.
Um die SONOS API erneut zu starten, geht ihr wieder den folgenden Befehl ein:
npm start
Dadurch läuft nun die SONOS API in einer separaten Shell und die Befehle zur Steuerung der Sonos Lautsprecher werden korrekt bearbeitet.
Um zurück auf die Original Shell zu kommen, müsst ihr „Strg+A+D“ nacheinander drücken (also Strg gedrückt halten, dann A und dann D).
Mit dem folgenden Befehl könnt ihr in die Screen Instanz zurückzukehren:
screen -r
Die SONOS API läuft nun im Hintergrund. Ihr könnt nun ohne Bedenken eure SSH Session (WINSCP oder PUTTY) beenden, ohne das die SONOS API beendet wird.
Damit ist die Installation komplett abgeschlossen, die zusätzliche Raspberry läuft mit dem Node-js Server und der SONOS API und wartet auf die Abarbeitung von HTTP Befehlen. Ihr könnt an dieser Stelle den Test von Oben ja nochmal wiederholen. Es sollte alles funktionieren.
Anmerkung
Solltet ihr aus welchen Gründen auch immer gezwungen sein die SONOS Raspberry neu zu Starten, müsst ihr natürlich erneut innerhalt der SCREEN Instanz die SONOS API neu starten.
Bei mir läuft der Server nun schon zwei Monate ohne Probleme durch und bearbeitet meine HTTP Steuerungs-Befehle ohne zu murren.
Ich teste im Moment noch eine Lösung sowohl SCREEN als auch die SONOS API beim Neustart des Systemes automatisch zu starten. Sollte ich dort eine Lösung finden, werde ich euch informieren.
Steuerung SONOS über HomeMatic
Aufgrund der Länge dieses Artikels werde ich einen noch eine Fortsetzung als weiteren Artikel zu diesem Thema verfassen. Dieser wird zeitnah veröffentlicht. Bis dahin könnt ihr den ersten Teil ja schon umsetzen.
Auch die Möglichkeiten der Programmierung für die SONOS Steuerung innerhalb von HomeMatic sind so umfangreich, dass es dazu viel zu berichten gibt. Also viel Spass bei der Fortsetzung im Artikel „Homematic – SONOS Lautsprecher komplett über Homematic steuern – Teil 02“
Service von uns
Wir bekommen häufig die Anfrage per Mail, ob wir Euch bei der Installation und Einrichtung behilflich sein können. Ich kann Euch gerne ein fertiges System zusammenstellen. Schreibt mich dazu einfach an: werner (@) technikkram.net
Fazit
Abgesehen davon, dass mich dieser Artikel bereits seit November 2017 beschäftigt, finde ich die hier vorgestellte Lösung zur Steuerung eines Sonos Systems wirklich sehr gut. Ich habe glaube ich noch keinen so umfangreichen Artikel geschrieben, aber ich wollte all unseren Lesern die Einrichtung ermöglichen.
Es hat sich mal wieder gezeigt, das es viele tolle Projekte gibt, welche die Möglichkeiten der Hausautomation über HomeMatic erweitern können. Im konkretten Fall gilt mein besonderer Dank Jimmy Shimizu (Jishi).
Um Fragen vorzubeugen hier gleich die Information, das die SONOS API nicht parallel zu RaspberryMatic auf der gleichen Hardware installiert werden kann. Bei der Lösung mit piVCCU werde ich das Testen und anschließend hier berichten.
Bei mir läuft diese Lösung schon seit November 2017 und ich wünsche euch viel Erfolg bei der Umsetzung.
Hallo,
ich habe alle Konfiguriert und ich kann jetzt die Sonos über die Browser Befehle steuern.
Aber ich verstehe nicht wirklich wie ich über die Homematic die Sonos ansteuern kann.
Ich habe das Funk Modul auf dem Pi. Aber wie binde ich das Funkmodul in die CCU3 ein?
Hallo, ich hänge mich hier einfach mal dran.
Meine Startdatei „/etc/init.d/dasher“ sieht wie folgt aus:
#!/bin/sh
### BEGIN INIT INFO
# Provides: dasher
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
dir=“/home/pi/node-sonos-http-api-master“
cmd=“node server.js“
user=“root“
name=`basename $0`
pid_file=“/var/run/$name.pid“
stdout_log=“/var/log/$name.log“
stderr_log=“/var/log/$name.err“
get_pid() {
cat „$pid_file“
}
is_running() {
[ -f „$pid_file“ ] && ps -p `get_pid` > /dev/null 2>&1
}
case „$1“ in
start)
if is_running; then
echo „Already started“
else
echo „Starting $name“
cd „$dir“
if [ -z „$user“ ]; then
sudo $cmd >> „$stdout_log“ 2>> „$stderr_log“ &
else
sudo -u „$user“ $cmd >> „$stdout_log“ 2>> „$stderr_log“ &
fi
echo $! > „$pid_file“
if ! is_running; then
echo „Unable to start, see $stdout_log and $stderr_log“
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n „Stopping $name..“
kill `get_pid`
for i in 1 2 3 4 5 6 7 8 9 10
# for i in `seq 10`
do
if ! is_running; then
break
fi
echo -n „.“
sleep 1
done
echo
if is_running; then
echo „Not stopped; may still be shutting down or shutdown may have failed“
exit 1
else
echo „Stopped“
if [ -f „$pid_file“ ]; then
rm „$pid_file“
fi
fi
else
echo „Not running“
fi
;;
restart)
$0 stop
if is_running; then
echo „Unable to stop, will not attempt to start“
exit 1
fi
$0 start
;;
status)
if is_running; then
echo „Running“
else
echo „Stopped“
exit 1
fi
;;
*)
echo „Usage: $0 {start|stop|restart|status}“
exit 1
;;
esac
exit 0
Vielversprechendes Gerät auf jeden Fall.
Vielen Dank für die gute Anleitung!
Eine Frage, weil sich die Anleitung auf die CCU2 bezieht, ich aber eine CCU3 habe: Da in der CCU3 ja ein Raspberry Pie verbaut ist, wird dann wirklich noch ein weiterer Raspberry Pie erforderlich? Oder lässt sich die Installation auch direkt auf der CCU3 durchführen, sodass keine weitere Hardware nötig ist?
Hallo – mir gehts wie Christian: Bei der Node-Installation wird statt 6.12 die 8.11 installiert und danach läßt sich das Sonos API nicht installieren – es bricht mit dem von Christian schon beschriebenen Fehler ab. Sehr schade – kann man da noch was tun oder wars das dann?
Gruß
Jan
Hallo,
die Version 6 lässt sich nicht installieren, er bügelt automatisch 8.11 drauf.
Und kommt die Fehlermeldung „-bash: npm: command not found.
Hallo,
ich habe das gleiche Problem! Kann bitte jemand helfen?!
Danke.
Hi
Man muss npm auch installieren:
sudo apt-get -f install npm
Gruss
Hallo Werner, Du hast hier einen super Job geleistet, Dafür großen Dank.
Ich nutze alles mit einem Mac und kann bestätigen, dass es ein Putty gibt und für alles andere nehme ich Cyberduck.
Ich habe allerdings das mit dem screen weggelassen und mir ein Startscript aus dem Netz geladen.
### BEGIN INIT INFO
# Provides: noip
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: noip server
# Description:
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
case „$1“ in
start)
echo „node-sonos-http-api wird gestartet“
# Starte Programm
cd /home/pi/node-sonos-http-api-master/
npm start
;;
stop)
echo „node-sonos-http-api wird beendet“
echo „kein Stop-Script installiert!“
# Beende Programm
cd /home/pi/node-sonos-http-api-master/
npm stop
;;
*)
echo „Benutzt: /etc/init.d/sonos {start|stop}“
exit 1
;;
esac
exit 0
Du kannst die Datei direkt aus dem Editor anlegen mit: sudo nano /etc/init.d/sonos
Dort kopierst Du den Text hinein, wobei Du natürlich deinen Pfad anpassen must.
Speichern und schließen.
Danach gibst Du noch in die Commando-Zeile ein:
chmod 755 /etc/init.d/sonos
update-rc.d sonos defaults
Ich habe den Befehl „/etc/init.d/sonos start“ einfach in die Datei „/etc/rc.local“ eingefügt und so startet automatisch der „npm -start“ Befehl.
Vielleicht hilft das dem einen oder anderen.
Gruß Manfred
Vielen Dank für den Beitrag!
Hat mir wir immer sehr geholfen!
Weiter so, Leute!
Kann es sein das man sich nicht mehr bei Voice RSS regestrieren kann? Wenn ich auf Register klicke , geht bei mir nichts, oder mache ich was falsch ?
Hallo Werner,
hast Du hier schon was erreichen können, ich komme da nicht weiter, es funktioniert einfach nicht mit dem automatischen Neustart.
Ich teste im Moment noch eine Lösung sowohl SCREEN als auch die SONOS API beim Neustart des Systemes automatisch zu starten. Sollte ich dort eine Lösung finden, werde ich euch informieren.
Alles Andere läuft super, es ist eigentlich jetzt nur noch ein Schönheitsfehler.
Gruß Udo
Hallo Udo,
da ich zur Zeit viele andere Projekte laufen habe und meine Sonos Raspberry schon seit Monaten durchläuft, habe ich den Punkt ein wenig aus dem Fokus verloren.
Ich werde das Thema demnächst nochmal aufgreifen und hier im Blog darüber berichten.
Gruss
Werner
Hallo Werner,
danke für Deine tollen Projekte, habe mir bei Dir schon einiges angeschaut und es hat auch alles funktioniert.
Wenn ich was erreicht habe werde ich Dir berichten, wird aber frühestens nächstes Wochenende sein.
Gruß Udo
Hallo Udo,
hast Du Dir meinen Kommentar vom 8.2.18 mal angesehen?
-JJ
Hallo Werner,
damit hatte ich es schon probiert, aber es funktioniert leider nicht,
Habe eine andere Lösung gesehen und probiere die so bald ich Zeit habe.
Gruß Udo
Hallo Werner,
das ist die Lösung.
https://maker-tutorials.com/node-js-init-script-neustart-reboot-automatisch-starten-linux-raspberry-pi/
Gruß Udo
Sorry,
ich meine natürlich: node –version
(2 Striche)
Hallo Werner,
den folgenden Hinweis könnte ich an vielen Stellen in Technikkram.net hinterlassen. Dass ich es hier tue ist reiner Zufall.
In Euren wirklich tollen Beiträgen, die den Raspberry verwenden beschreibt Ihr stets die Eingaben über ein verbundenes Windows. Ich arbeite allerdings mit einem Mac. Wäre es möglich, vielleicht einmal auf die Aufrufe (SSH, etc.) von einem Mac aus einzugehen? Welche Softwre wird hierfür empfohlen, etc.
Vielleicht bin ich nur ein DAU. Aber ein solcher, kurzer Beitrag würde mir und vielleicht einigen anderen auch das Leben mit dem Raspberry erleichtern.
Viele Grüße,
Rico
Hallo Rico,
da ich selbst leider keinen Mac habe, bin ich an dieser Stelle auch nicht der Fachmann.
Was ich weiß, ist das dort die Befehle Telnet und SSH direkt im Terminal vom Mac implementiert sind.
Ich habe gerade mal ein wenig recherchiert und gesehen, das es sogar einen „PuTTY“ für den Mac gibt. Hier ist der Link und vielleicht hilft dir das ja weiter. Es existiert dort auch ein kurzes Installationsvideo: https://macsoftware.ch/putty-fuer-mac/
Grüße
Werner
Hallo Werner,
vielen Dank für die schnelle Antwort.
Dann werde ich mich einfach mal näher mit dem integrierten Terminal näher befassen. Warum ein Werkzeug anschaffen, wenn es schon eines gibt
Vielen Dank nochmal und weiter so…
Rico
Habe die Fehlermeldung zwar auch erhalten, habe dann aber einfach weiter installiert und hat dann alles auch geklappt. Super!!! :-)
Endgeil!! Funktioniert super. Vielen Dank.
Anmerkung zum Thema Neustart:
Mit PM2 geht das bei mir ganz geschmeidig:
Installation:
$ sudo npm install -g pm2
$ pm2 startup
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u pi –hp /home/pi
Autostart:
$ cd /home/pi/node-sonos-http-api-master/
$ pm2 start server.js -x –name „http-api“
$ pm2 save
Quellen:
https://github.com/jishi/node-sonos-http-api/issues/20
https://github.com/Unitech/pm2su
http://pm2.keymetrics.io/docs/usage/quick-start/
Grüße
-Jochen
Ersetzt das auch screen?
Das sind ja zwei verschiedene Punkte. Erstens die sich blendend Sitzung vom sonos http Server und zweitens der Neustart bei dem man Screen und den Server neustarten muss.
Vg Torsten
Super, werde ich morgen mal testen. Seit neuesten werden bei dem Image von
ihm die Leerzeichen nicht mehr decodet (AlpineLinux based)
VG Torsten
Hallo Werner,
kann ich für die Installation auch einen Raspi nutzen auf welchem schon io.Broker incl. Node.js und Pi-Hole installiert ist oder sollte ich mir dan einen weiteren Raspi nur für Sonos zulegen?
Danke im vorraus und Gruss Andreas
Hallo Andreas,
ich teste zur Zeit genau diese Möglickeiten und werde diese Woche noch einen Bericht darüber schreiben.
Hoffe du hast noch ein paar Tage Geduld.
Gruss
Werner
Hallo Werner,
ja klar die Geduld bringe ich gern auf! Vielen Dank!
Gruss Andreas
Guten Abend, die Anleitung ist wie immer super beschrieben.
Leider komme ich ab dem Punkt:
„1
node –v
Es sollte dann die gewünschte Version angezeigt werden.
v6.12.0“
nicht mehr weiter. Bekomme dort nur einen Err angezeigt.
Auch kann ich weder SSH noch per WinSCP auf den raspberry zugreifen.
Das ist der Fehler der nach dem Eintrag node -v erscheint:
module.js:471
throw err;
^
Error: Cannot find module ‚/home/pi/–v‘
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:383:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:496:3
Hallo Björn,
um den Fehler analysieren zu können, benötige ich weitere Informationen.
Du schreibst: Auch kann ich weder SSH noch per WinSCP auf den raspberry zugreifen.
Wie gibst du dann den Befehl: „node -v“ ein?
Kannst du mir deine einzelnen Schritte bis zu dem Fehler beschreiben und vielleicht ein paar Screenshots an die Mailadress werner (@) Technikkram.net schicken.
Danke und Gruss
Werner
@Duracell
Kann es sein, dass du Stretch installiert hast?
Probiere mal node –version
statt node -v