Stromsparen bei SONOS Lautsprechern

Barungar

Well-known member
Hallo zusammen,

ich habe mir ein kleines Projekt überlegt, bei dem ich den Stromverbrauch meiner SONOS Lautsprecher optimieren möchte.
Insgesamt habe ich in verschiedenen Räumen zehn SONOS Lautsprecher installiert. Die Standby-Leistung von allen zehn Lautsprechern ist ca. 30 Watt insgesamt.
Die meiste Zeit des Tages befinden sie sich in genau diesem Standby, nun würde ich gerne hier etwas sparen.

Die Funktionsweise von SONOS ist, dass es sich um ein dezentrales System handelt und es keine festen IPs benötigt. Vom Prinzip bestimmen die Lautsprecher unter einander einen Koordinator, der dann die Kommunikation für den gesamten Verbund führt. Wenn nun die SONOS App oder ein Media-Player mit den Geräten Kontakt aufnimmt so bestimmt er zweigleisig mittels MDNS per Multicast an die Gruppe 224.0.0.251 und mittels SSDP per M-Search an die lokale Broadcast-Adresse den aktuellen Koordinator.

Das versucht die jeweilige App bzw. Mediaplayer für mehrere Sekunden, bis es dann dem User einen "timeout" meldet.

An dieser Stelle würde ich nun gerne meine Automation ansetzen... Mein Home Assistant müsste also nur irgendwie die MDNS- oder SSDP-Anfragen mitbekommen und dann die Stromversorgung für die SONOS Lautsprecher wiederherstellen.

Im umgekehrten Fall würde ich es mir einfach machen, wenn die Summenleistung der SONOS Lautsprecher unter 30 Watt fällt, wird zentral der Strom "abgedreht".

Für den Abschaltweg ist mir alles klar. Nur habe ich noch keine richtige Idee, wie ich den Trigger für die MDNS bzw. SSDP hinbekommen kann.
Also falls jemand da eine gute Idee hat - ich bin für Anregungen offen.
 
Moin,

da hast Du Dir ja wieder was ausgedacht... 😄 Mir würde spontan nur einfallen, dass man den Traffic überwacht, auf die gewünschten Pakete filtert und bei Vorkommnissen einen entsprechenden Vorgang einleitet (evtl. via Webhook/API), womit die Steckdosen dann wieder eingeschaltet werden... aber auf die Idee bist Du ja sicherlich auch schon gekommen 😅

Hab grade mal geschaut und evtl. halt via HomeAssistant mit z.B. netalertx. Ist halt nur die Frage, ob sich das gewünschte damit dann auch entsprechend umsetzen lässt. Die Trigger dort scheinen auch eher für Objekte zu gelten, von daher wäre die Variante vermutlich garnicht mal so hilfreich...

Alternativ halt eine Regel für genau diesen Traffic erstellen, das Logging aktivieren und die Logs dann Richtung Syslog schreiben. Dann halt via Syslog-Trigger eine entsprechende Aktion auslösen.

Wäre ja schon irgendwo wichtig, dass das Event auch "zeitnah" erkannt wird, ansonsten ist es ja auch etwas blöd 😅

Hätteste dann da zufällig eine Info bzgl. der Trigger-Möglichkeiten?

Also nur mal so als Beispiel - etwas rudimentär, aber... weisst scho... 😅

Bash:
#!/bin/bash
tcpdump -i eth0 -l -A -nn -vvv port 5353 | while read -r line; do
    # Filter (Paket nach Ausdruck durchsuchen)
    if echo "$line" | grep -q "osmc._airplay._tcp.local."; then
    # Aktion (Hier dann z.B. via Webhook o.ä. eine Aktion auslösen)
    echo "Trigger ausgelöst: "$(date)
    fi
done

Beispielausgabe wäre dann:
Trigger ausgelöst: Tue Feb 17 11:07:20 CET 202

Da müsstest Du halt hingehen und den Ausdruck ändern auf irgendwas mit Sonos (k.A. musste Dir mal die Pakete anschauen und auch die richtigen erwischen, damit der richtige Ausdruck gesucht wird) und kannst dann über den Trigger halt irgendwas Richtung HomeAssistant starten, was dann die Steckdosen schaltet. Ansonsten schauste mal hier rein: https://www.home-assistant.io/docs/automation/trigger/. Vielleicht kann man da auch direkt was via Bash Richtung MQTT lostreten und dann den MQTT-Trigger und HA nutzen, aber da bin ich dann auch eher raus 😄
 
@blurrrr Diese Idee hatte ich auch. Ich habe mich zusätzlich etwas von Deinen tcpdump-Parametern inspirieren lassen. Da bisher niemand was eleganteres vorgeschlagen hat, habe ich es erst mal mittels eines kleinen Shell-Skripts, dass per curl einen WebHook im HA aufruft umgesetz.

Dabei ist mir aufgefallen, dass in den ersten 30 Sekunden die SONOS App alle fünf Sekunden einen SSDP M-SEARCH sendet, und anschließend für die Laufzeit der App alle 50 Sekunden erneut einen... es könnte ja im Betrieb noch irgendwoher ein neuer Lautsprecher kommen. :D

Gibt es denn keine Datenpunkte, die anzeigen, wenn die Lautsprecher was abspielen?
Theoretisch gibt es in der SONOS-Integration den Zustand der Lausprecher-Entität "Standby", allerdings habe ich noch nicht erlebt, dass ein Lautsprecher diesen auch erreicht hat. Laut Websuche sollte ein SONOS-Lautsprecher nach 3 Minuten ohne Interaktion in Standby gehen. Nicht das die HA-Integration wiederrum genau das verhindert... :rolleyes:

Es bleibt also erstmal dabei, dass ich als Trigger die Gesamtleistung (in Watt) aller SONOS-Lautsprecher heranziehe, zusätzlich kann ich über die Lautsprecher-Entitäten prüfen, ob diese in "Pausiert" und/oder "Leerlauf" stehen.

Das Einschalten über Shell-Skript mit WebHook funktioniert schon... jetzt baue ich dann mal die Abschalt-Automation.
 

Letzte Anleitungen

Statistik des Forums

Themen
7.788
Beiträge
76.330
Mitglieder
8.405
Neuestes Mitglied
Lemmy32
Zurück
Oben