NEWS
Sonos Arc & Satelliten LS per Steckdose ein- und ausschalten
-
Hallo,
Ich habe folgende Idee, weis aber nicht wie ich es am besten umsetzen soll.
Meine Idee: Wenn meine Sonos Arc gerade nichts abspielt bzw nicht erreichbar ist, soll die Smarte Steckdose aus sein (also mein Satelliten LS nicht mehr mit Strom versorgt werden), sonst soll die Steckdose ein sein und die LS mit Strom versorgen.Ich habe versucht über Blockly den simple_state zu verwenden bzw. den alive Status. Ich bekomme meine Steckdose einfach nicht dazu richtig zu schalten.
Was wäre hier der richtige Ansatz?LG
Michael -
Zeig doch mal deinen Blockly Versuch/Ansatz. Ggf. noch welche Datenpunkte zur verfügung stehen, habe kein Sonos
-
@skapi
unabhängig davon ob dein Script schaltet, meinst Du dass Du mit der Lösung am Ende glücklich sein wirst?Ich hatte zunächst eine "Sonos Play 1" im Badezimmer über eine geschaltete Steckdose mit dem Licht gekoppelt. Allerdings dauert das Starten der "Sonos Play 1" derart lange, dass für mich das ganze sinnlos erschien ... es fing regelmäßig erst dann an zu dudeln, wenn ich schon wieder auf dem Weg aus dem Bad hinaus war. Nun lasse ich die "Play 1" im StandBy und die Musik spielt augenblicklich mit dem Betreten des Bades.
Vielleicht - sofern noch nicht durchgespielt - probierst Du erst einmal aus, ob diese Verzögerung - wenn der Strom weg war - dich womöglich ebenso stört wies es bei mir der Fall war?!
[Edit]
Du könntest versuchen die Arc auch über folgende Datenpunkte abzufragen:
play=true
stop=false
state=play
state=stop
volume>1Ich setze alle meine Sonos` zum Beispiel immer auf "Volume=1" wenn diese nicht spielen sollen, daher das letzte Beispiel mit "Volume>1".
-
@cinimod
anbei mein Versuch
on({id: "sonos.0.root.192_168_1_125.state_simple"/*Binary play/pause state*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (true) { setState("hue.0.Steckdose_Wohnzimmern.on"/*Steckdose Wohnzimmern.on*/, true); } else if (false) { setState("hue.0.Steckdose_Wohnzimmern.on"/*Steckdose Wohnzimmern.on*/, false); } });
@BBTown
Das mit dem Badezimmer kann ich nachvollziehen!
Für die Satelliten LS ist es aus meiner Sicht ok wenn die etwas verspätet starten, da in erster Linie die Tonausgabe eh von der Arc kommt... -
Dein Skript kann so nicht funktionieren.
versuch es mal so:
Den roten "Wert" Baustein findest du unter der Rubrik "Trigger" er wird aus dem hier umgewandelt.
-
@cinimod
Danke!! Das Script funktioniert!
Was ich nur noch nicht versteht, woher weiße die schleife dass beim Wert "true" (Arc) die Steckdose auf "true" geschalten werden soll und nicht beim Arc Wert false?Wäre eine Negation des simple State der Sonos auch möglich?
Also "if Sonos Arc simplestate ! true (not true); then .... (ich weis, false würde anstatt der negation gehen - nur aus Interesse)Danke!!
-
Mit dem WERT Block aus dem Trigger, benutzt du direkt den "Wert von Objekt ID" des Trigger Datenpunktes.
Der blaue falls Block, braucht immer als Ergebnis ein WAHR um auszuführen.
So wie du es vorher hattest geht es nicht, wenn du mal nicht den Trigger als Falls abfrage brauchst, dann machst es so, in der Therorie:Da du dir die abfrage auf Wahr allerdings sparen kannst, macht man es in der Praxis eher so:
Und da bei True/False Datenpunkten ja nur entweder oder sein kann, sieht es so aus wie du es jetzt schon nachgebaut hast.
(falls "wert von objekt ID" des trigger Datenpunktes WAHR, mache XY)
( und SONST (kann ja nur false sein) mache XX)Phu ... ganzen Roman ... hoffe ich hab es halbwegs verständlich erklärt.
-
@cinimod
Wow! Danke!!
Das hilft mir beim verstehen mal definitiv weiter! -
@cinimod
Das ganze funktioniert wirklich super, jedoch müsste ich beim sonst nochmal etwas verfeinern. Ich hab das Problem dass mein lieber Sohnemann gerne mal auf die Play/Pause Taste drück und dadurch das ausschalten der Steckdose auslöst.Ich habe den sonst teil mit einer Verzögerung von 5 Minuten eingestellt, jedoch ist das auch nicht praktikabel da der Status nicht mehr aktualisiert wird.
Was wäre denn der Richtige Ansatz dass beim "sonst" teil ein Wait von 5 Minuten vorkommt, danach der "simplestate" nochmal geprüft wird und danach wenn wahr mache, wenn false mache?
-
Du kannst dort einfach einen Timeout einfügen, das erst nach z.b. 2 Minuten Inaktivität die LS ausgeschaltet werden. Sollte sich der Datenpunkt innerhalb der 2 Minuten wieder ändern wird der Timeout angehalten
-
wenn der Trigger true/false liefert braucht es kein sonst, dann steuert man mit "wert"
EDIT:
mit dem Timeout ist das dann keine Einsparung mehr -
-
er meinte wenn der timeout jetzt nicht notwendig währe kann man einfach die LS direkt mit dem WERT von trigger ansteuern:
Auch einzig dieser block währe möglich: WO zu beachten ist das Objekt2 immer das (nach-)macht was Objekt1 vorgibt (NICHT ANDERSRUM!)
bei beiden Varianten kannst du keine Abschaltverzögerung einbauen.
-
@skapi sagte in Sonos Arc & Satelliten LS per Steckdose ein- und ausschalten:
ich kann dir leider nicht folgen...
bin leider nicht mehr am PC.
wenn die Verzögerung beim Ausschalten nicht wäre und wenn der triggernde Datenpunkt einen bool'schen Wert (true/false) liefert reicht quasi eine Zeile innerhal des triggers.
Nämlich : steuere 2.ID mit Wertnoch rinfacher wäre nur noch die Konstruktion mit binde
Dann wird einfach bei true auch der zweite true, und bei false der zeite ebenfalls false.
Wenn du willst kann ich morgen ein Bild machen.EDIT
Habe ich am Tablet jetzt >5Minuten gebrsucht? -
-
Hallo,
ich würde mal wieder ein wenig Hilfe benötigen da sich seit dem letzen Sonos update wieder was geändert hat...Ich weis nicht wieso aber ich tu mir mit der Blockly Logik echt schwer...
Logik aktuell: wenn Objekt ID Simplestate = true, dann mache
Folgende Logik würde noch benötigt werden: wenn Objekt ID Simplestate = true oder coordinator ist nicht 192_168_1_125, dann macheWürde mich freuen wenn mir hier jemand behilflich sein könnte!
LG