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

 

10 thoughts on “Sonos Steuerung mit einer Regel”

  1. David Pritchard sagt:

    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.

  2. Werner Krause sagt:

    Hallo,

    wo hast du denn die SOAP API her? Gibts irgendwo eine Beschreibung?

    1. derHelle sagt:

      Hallo,

      das ist nur die Status-Seite der Sonos.

      Gruß Helle

  3. Andreas sagt:

    Hallo Helle
    bei mir steht nichts von URL….es taucht immer nur UUID auf….
    was habe ich falsch gemacht?

    1. derHelle sagt:

      Hast du mal nen Screenshot?

  4. Frank sagt:

    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

    1. derHelle sagt:

      Hi, kannst du bitte nochmal genau erklären was du machen möchtest?

      Gruß Helle

      1. Frank sagt:

        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

        1. derHelle sagt:

          Hi Frank,

          aso, das hat ja nichts mit der Zipabox zu tun….am besten mal dort nachfragen.

          Gruß Helle

  5. Werner Emmerich sagt:

    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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.