NEWS
Gelöst! einfaches Sonos Play/Pause
-
Hallo,
ich stehe noch relativ weit am anfang und habe vor wenigen Tagen auf einem Raspberry Pi 3 iobroker installiert und diverse Adapter installiert. (unteranderem Xs1, Homekit, Hue, Sonos…)
Das einbinden von Xs1 und Homekit hat bereits wunderbar fuktioniert, somit konnte ich meine normalen Funksteckdosen bereits per Homekit/Siri schalten.
Jedoch habe ich mit dem Sonos vermutlich ein Verständnis Problem.
Ich bekomme den Sonos Lautsprecher per Homekit gestartet, aber nicht gestopt. Auf dem folgenden Bild ist meine konfiguration zu sehen.
Muss ich für den Stop befehl noch etwas zusätzliches anlegen? (schalte ich eine Steckdose, reicht ja ein Befehl...)
Habe es bereits mit Play, Stop und dem Pausebefehl versucht
Hat jemand evtl. eine Idee dazu?
Im Anhang befindet sich ein konfigurations Bild
5405_sonos_iobro.jpg -
Hallo und Willkommen im ioBroker Forum.
Wenn Du die SONOS sicher schalten willst, dann sind im Grunde folgende Datenpunkte im Spiel:
state: (play, stop, pause)
play: (true, false)
stop: (true, false)
pause: (true, false)
volume: (0-100)
favorite_set: (Musikquelle)
coordinator (bei Gruppenschaltungen)
Um nun nicht jedesmal alle diese Datenpunkte beachten oder schalten zu müssen, wende ich folgenden "Trick" an:
Ich habe ein javascript im Hintergund laufen, dass von allen SONOS Geräten die Lautsärke überwacht.
Ist die Lautstärke (volume) größe als eins (>1), dann werden folgende Datenpunkte gesetzt
"play=true", "stop=false", "pause=false", "state=play"
Ist die Lautsärke < 2 dann werden folgende Datenpunkte gesetzt:
"play=false", "stop=true", "state=stop"
Ich kann also allein durch ändern der Lautstärke alle diese Datenpunkte schalten und muss diese in anderen Scripten nicht weiter adressieren.
Ich habe im cloud-Adapter für jedes SONOS ein Smart-Gerät angelegt (SONOS Küche, SONOS Bad usw.) und zeige auf "volume"
Für jeden Raum habe ich eine Standard-Start-Lautstärke eingestellt.
"Schalte SONOS im Bad ein" stellt das "volume" z.B. auf 20, "Schalte SONOS Bad aus" stellt "volume" auf 0.
Damit werden dann - durch das oben beschrieben Script - alle anderen Datenpunkte automatisch mit eingestellt.
Hier ist das entsprechende Java-Script:
! ````
/* Alexa_Sonos_schalten
! reagiert auf Lautstärkeänderungen
Alexa Smartname zeigt auf .volume
Sonos-Adapter Version 1.6.0 voraus!
! http://forum.iobroker.net/viewtopic.php?f=37&p=75526#p75526
! 15.07.2017 erstellt von pix nach Idee von BBTown
16.07.2017 Quelle zugefügt
*/
const logging = true;
! // sonos.0.root.XXX_XXX_XXX_XXX.volume
var regex_vol = /^sonos.[0-9].root.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)_(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).volume$/;
! on({
id: regex_vol,
change: 'ne'
}, function(data) {
var pfad = getIdByName(data.channelName);
if (logging) log(data.channelName + ' (' + pfad + '.' + data.name + ') Lautstärke auf ' + data.state.val + '% geändert');
if (data.state.val >= 2) {
setState(pfad + '.muted', false);
setState(pfad + '.state', 'play');
setState(pfad + '.play', true);
setState(pfad + '.stop', false);
}
if (data.state.val < 2) {
setState(pfad + '.state', 'stop');
setState(pfad + '.play', false);
setState(pfad + '.stop', true);
}
});Vielleicht hilft dur zudem diese HowTo weiter [http://forum.iobroker.net/viewtopic.php?f=37&t=7395](http://forum.iobroker.net/viewtopic.php?f=37&t=7395) [Edit] Screenshot der SONOS Smart Geräte angefügt [1917_sonos_smartger_t.jpg](/assets/uploads/files/1917_sonos_smartger_t.jpg)
-
ok,
vielen Dank erstmal.
Da muss ich mich erstmal etwas mit befassen!
Dachte ich kann den Sonos Lautsprecher blöd gesagt, wie eine Steckdose einfach ein und aus schalten.
-
Habe ein einfaches Play / Pause mit dem folgendem Befhel realisieren können.
Ggf. ist dies ja auch ein ansatz für weitere Neulinge:
sonos.0.root.(Ip von Sonos "xxx.xxx.xxx.xxx").state_simple
wichtig war einfach nur nicht blind auf die Play / Pause funktion zu setzen.
-
Hi, ich klemme mich einfach mal mit in den Thread ein.
Ich möchte auch meine Sonos Via YAHKA und Siri steuern. Bis jetzt fehlt mir als absoluter Anfänger noch der Schuss in die richtige Richtung.
Bis jetzt weiss ich nur das Ich mit dem Cloud Adapter virtuelle Geräte die das können was ich alles möchte errichten muss.
Wie kriege ich die denn anschliessend im YAHKA rein?
Ich würde mir für Play Pause eine Schalter nehmen.
Lauter Leiser wäre das Quasi ein Dimmer???
Hört sich bestimmt grade für euch doof an aber so richtig plan habe ich dann noch nicht. Learning by Doing ist meine Devise.
-
Weiter oben findest Du einen Link zu einem HowTo
-
Ja den habe ich mir auch durchgeschaut. Ist das auch mit Siri möglich? Das Alexa irritiert mich. Ich finde imYAHKA da leider keinen Ansatz
-
ich nutze Siri nicht, daher kann ich dir nicht dabei nicht helfen.
allerdings ist dem HowTo erklärt wie Sonos geschaltet wird und wie man einen Datenpunkt im cloud adapter anlegt und anspricht, dass musst Du nur adaptieren
-
Ok Danke, das mit den Cloud Adapter habe ich auch so verstanden. Das hast du auch echt gut erklärt. Ich habe das im YAHKA mal über ne Lampe versucht aber das geht schief. Jetzt heisst es denn mal ausprobieren für mich.
-
Hallo Zusammen,
ich spiele auch gerade mit dem Sonos Adapter in Verbindung mit yahka.
Folgendes Szenario:
Ich habe eine Szene für die Sonos erstellt und definiere True und False Parameter für die Sonos
State der Szene True False
State play stop
Play true false
Stop false true
Volume 25 0
Coordinator ID-der Sonos
Favorites_Set Favorite
In Homekit habe ich einen Switch erstellt und den State der Szene verknüpft. Alles funktioniert soweit korrekt.
Allerdings wird beim Status False der Szene (korrekt aus Homekit übernommen, der State stop kurz gesetzt und dann auf play zurückgestellt. Der State der Szene springt auf undefined. Wenn ich das Webinterface des Sonos Adapter die Sonos manuell stoppe springt der State der Szene auf Falsch und das Stop bleibt gesetzt.
Habt Ihr eine Idee was ich übersehe? Besten Dank im voraus…
-
wie ist denn das Verhalten, wenn Du "state" nicht selbst setzt, sondern durch:
play - false
stop = true
den Wert von state setzen läßt?
-
das hat keine Einfluss. Ich habe aber vermutlich nun den "Schuldigen" gefunden.
Ich habe in den Sollwerten für Falsch (State kommt aus dem Homekitschalter) auch Favorite_Set erneut mit dem Favoriten gefüllt.
Das scheint ebenfalls ein "Play" zu triggern.
Es funktioniert nun fast korrekt. Lediglich wenn ich per Homekitschalter stoppe und per Taste an der Sonos wieder starte laufe ich einen "undefinierten" State
State = Play
Play = Falsch
Ich versuche ihn mittels Script zu synchronisieren… "mühsam ernährt sich das Eichhörnchen"
Besten Grüße
Ansgar Niestradt