Sonos Steuerung mit einer Regel

Heute geht es um darum, eure Sonos automatisch abzuschalten, wenn keiner mehr im Raum ist.

Leider gibt die Sonos Steuerung in der Oberfläche nicht viel her, deswegen habe ich mir da mal etwas Neues ausgedacht.

Ich habe einen Virtuellen Schalter gebastelt, der die Sonos ausschalten kann, also Perfekt um den Schalter in eine Regel zu integrieren.
Wie ihr den Schalter baut, zeige ich euch weiter unten.

Das ganze Projekt ist ein bisschen größer da ihr auch noch ein kleines Bash Script braucht, um den Status der Sonos zu erfragen.

Unsere Sonos Play 1 steht bei uns in der Küche und beschallt Küche und Esszimmer.
Da es im Stress ab und an passiert, das wir nach Haus kommen und die Sonos immer noch läuft hat mich auf diese Idee gebracht diese Projekt zu starten.

Kurzer Überblick:
Es gibt es Bash Script das auf meinem Rasberry läuft, und den Status der Sonos alle 5 Minuten abfragt.
Ist die Sonos Aktiv, wartet die Zipabox eine bestimmte Zeit ab, und sollte in der Zeit keine Bewegung erfasst worden sein, wird die Sonos abgeschaltet.

Sollte ihr Fragen habe, wir ihr einen Raspberry aufsetzten, dann könnte ihr euch gerne in den Kommentaren verewigen.

Dann fangen wir mal mit dem Bash Script an.
Script Name: sonos_status.sh

#!/bin/bash
# Author: Helle
# Version 0.1
result=$(curl http://XXX.XXX.XXX.XXX:1400/status/perf |grep currently | awk ‚{print $2}‘)
if [ „$result“ = „PLAYING“ ]; then
curl „https://my.zipato.com/zipato-web/remoting/attribute/XXXtrue“
elif [ „$result“ = „STOPPED“ ]; then
curl „https://my.zipato.com/zipato-web/remoting/attribute/XXXfalse“
else
echo „Sonos nicht verbunden“
exit 1
fi

 

Weiter unten könnte ihr das Script noch Herunterladen, dann gibt es keine Formatierungsfehler.

Bitte denkt dran, nach dem anlegen des Script´s die Recht mit dem Befehl „chmod 777 SCRIPTNAME“ zu setzten, damit ihr es ausführen könnt.

Was macht das Script:
Es fragt per HTTP die Sonos ab, und schaut ob dort „Stopped“ oder „Playing“ steht, und sendet dann einen HTTP Request, der einen Virtuellen Sensor in der Zipabox schaltet.
Habe ihr die IP Adresse und die URLs angepasst (wie ihr diese bekommt, zeige ich euch noch) dann könnt ihr das Script schon einmal testen.
Wenn das dann klappen sollte, könnt ihr einen Cronjob erstelle, der alle 5 Minuten läuft.

Im nächsten Schritt bauen wir den Virtuellen Sensor.
Anlegen mit Neues Gerät hinzufügen, Virtuelle Geräte, und dort den Virtuellen Sensor auswählen. Einen Namen vergeben und fertig.

Im Gerätemanager klickt ihr jetzt solange auf das Gerät bis es komplett aufgeklappt ist

Virtueller Sensor

Jetzt auf das Zahnrad beim Punkt State klicken

Virtueller Switch Status

Hier ist der Punkt URL Wichtig. Diese muss in das Script kopiert werden.
Ihr müsst am Ende der URL jetzt nur noch ein FALSE oder TRUE anhängen.
FALSE schaltet den Sensor AUS und
TRUE schaltet ihn AN.

Um das ganze zu testen könnt ihr die Sonos anschalten und das Scirpt ausführen, dann sollte das hier passieren

Sonos Status

Dann schaltet ihr die Sonos aus, und lasst das Script noch einmal laufen

Sonos Status

Wenn wir hier angekommen sind, brauchen wir jetzt noch einen Schalter, der die Sonos abschalten kann.

Dazu legt ihr wieder ein neues Virtuelles Gerät an, aber diesmal einen Virtuellen Switch.
Dann gebt ihr dem Kind noch den Namen „Sonos an oder aus“.

Sonos Switch

 

Dazu brauchen wir jetzt noch Regeln

Sonos Regel

 

Hier kommt der Inhalt für die HTTP Requests

„Sonos AUS“

Sonos AUS

„Sonos AN“

Sonos AN

Hier kommen die Daten in Klartext für die Copy/Paste Freunde 😉

Sonos AUS:

 

URL: http://xxx.xxx.xxx.xxx:1400/MediaRenderer/AVTransport/Control

Headers: SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop"

Body: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID>,<Speed>1</Speed></u:Play></s:Body></s:Envelope>

Sonos AN:

URL: http://xxx.xxx.xxx.xxx:1400/MediaRenderer/AVTransport/Control

Headers: SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"

Body: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID>,<Speed>1</Speed></u:Play></s:Body></s:Envelope>

 

Was mit aufgefallen ist, ist das wenn ihr die Sonos vom Strom getrennt hattet und dann die Sonos per Zipabox anschalten wollt, passiert leider nichts.
Ich denke das wird daran liegen, das noch kein Track „eingelegt“ ist.
Am besten mal vorher die Sonos APP benutzten und auf AN/AUS klicken, danach die Virtuellen Schalter testen.

Wenn das auch klappt können wir zum nächsten Schritt gehen.

Jetzt brauchen wir nur noch eine Regel

Regel

 

– Diese Regel wird aktiviert, wenn der Sonos Status auf Aktiv ist.
– Wenn dann noch 2 Sensoren (Küche und Eßzimmer) auf  „No Motion“ für
länger als X Minuten ist
– Wird die Sonos ausgeschaltet
– Und 5 Sekunden später der Status der Sonos manuel auf „Aus“ gesetzt

 

SO! Bei mir läuft es soweit ganz gut, sollte ihr evt Fehler finden, oder Verbesserungsvorschläge habt, dann schreibt doch nen Kommentar.

Und jetzt viel Spaß beim nachbauen 😉

 

Downloads:  sonos_status.sh

 

ZipatoTV…Video Anleitungen für eure Zipabox

Mal was schnelles für zwischendurch…

Zipato hat jetzt einen Youtube Channel der ZipatoTV heißt.
Hier findet ihr Anleitungen wie div. Geräte eingebunden werden.

Schaut es euch doch mal an.

https://www.youtube.com/user/zipatotv

Sonos und die Zipabox

Jaaa, endlich its es soweit!! Es gibt die ersten anständigen Funktionen für die Sonos.

 

sonos-zipabox

 

Die ersten wichtigen Funktionen wie Play und Stop funktionieren.
Damit können dann auch hoffentlich die ersten Regeln erstellt werden.

Da ich Zuhause die Sonos 1 nutze kann ich leider nicht sagen, welche Modelle noch unterstützt werden.
Ihr könnt in den Kommentaren aber gerne ergänzen, welche Modelle noch unterstützte werden.

Ich werde die Tage auch noch die ersten Regeln erstellen und testen.