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
Jetzt auf das Zahnrad beim Punkt State klicken
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
Dann schaltet ihr die Sonos aus, und lasst das Script noch einmal laufen
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“.
Dazu brauchen wir jetzt noch Regeln
Hier kommt der Inhalt für die HTTP Requests
„Sonos AUS“
„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
– 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
Gute Idee!
Diese Methode klappt aber nicht, wenn man zu einer bestimmten Zeit die Sonos *ein*schalten will. Ich benutze sie nämlich als Wecker, will aber nicht, daß sie die ganze Nacht Strom verbraucht. Per ein/aus-Schalter schalte ich meine drei Play:1 nachts aus und morgens ein, aber im Moment ist es (glaube ich) unmöglich, mit der Zipabox die Lautsprecher zu gruppieren. Ich werde versuchen, mit ein Programm wie Do It Again im Laptop die Sonos-Controller automatisch zu steuern – etwas primitiv aber es fällt mir nichts mehr ein.
Hallo,
wo hast du denn die SOAP API her? Gibts irgendwo eine Beschreibung?
Hallo,
das ist nur die Status-Seite der Sonos.
Gruß Helle
Hallo Helle
bei mir steht nichts von URL….es taucht immer nur UUID auf….
was habe ich falsch gemacht?
Hast du mal nen Screenshot?
Hallo
versuche seit langer Zeit mein Philips hue Dimmer Switch mit sonos aus und einzuschalten leider bekomme ich es nicht hin
Hast du vielleicht wie ich das hinbekommen kann Danke im Voraus
Hi, kannst du bitte nochmal genau erklären was du machen möchtest?
Gruß Helle
Danke für deine antwort habe von der Seite den Script her leider fehlt da irgendwas
https://www.iphone-ticker.de/der-philips-hue-dimmer-mehr-funktionen-pro-taste-sonos-steuern-per-script-94612/
Leider komm ich da nicht weiter
Hi Frank,
aso, das hat ja nichts mit der Zipabox zu tun….am besten mal dort nachfragen.
Gruß Helle
Hallo,
kannst du mal bitte ausführen wie du den Raspberry aufgesetzt und die Verbindung zum Sonos hergestellt hast.
Ich würde gerne deine Routine für die Steuerung meines Connect:Amp verwenden. Wie nehme ich dann noch die Sender Einstellung vor?
Gruß
Werner