Hauptmenü

Sonos und FHEM

Begonnen von 87insane, 13 Juni 2019, 10:12:15

Vorheriges Thema - Nächstes Thema

87insane

Guten Morgen zusammen,

seit langem nutze ich das SONOS Modul und bin auch zufrieden aber ich habe ein paar Fragen..

1. Ich habe seit gestern zwei weitere SONOS ONE. Alle meiner SONOS Boxen sagen mir Dinge wie "Der Trockner ist fertig", "Es hat hinten/vorne geklingelt" usw... Am Anfang hatte ich nur eine Box und mir ist natürlich das folgende nicht aufgefallen. Wenn nun jemand klingelt, sagen alle Boxen (aktuell drei) nacheinander es hat vorne geklingelt.


klingel_hinten {
    if (ReadingsAge("s_trockner", "running", 0) > 5) {
         fhem("set [a-z]?[a-z]_sonos Speak 50 de Es hat hinten geklingelt");
    }
}


Durch das Regex, werden auch alle angesprochen. Ich würde aber gerne haben, das die Boxen das möglichst gleichzeitig sagen. Im SONOS Hauptgerät gibt es leider kein speak. Hat jemand Ideen?

2. Generell werden zu den SONOS Playern weitere Dinge angelegt:
k_sonosRG_Favourites
k_sonosRG_Playlists
k_sonosRG_Queue
k_sonosRG_Radios

Diese werden pro Box angelegt. Mich würde mal interessieren wofür ihr diese nutzt? Seit beginn habe ich diese in dem Room "hidden" verschoben, da ich keinen Nutzen sehe. Aber das liegt sicher daran, dass ich noch keine Idee dafür hatte. Gesteuert werden die Boxen generell über Alexa oder aber die App. ggf. hatte ich deswegen keine Idee für die anderen devices.

3. Welche Ideen bzw. Anwendungsbeispiele habt ihr noch so für die SONOS Boxen? Bitte alles rauß hauen.. Bin sehr interessiert, da ich die Möglichkeiten quasi als unendlich ansehe.

DANKE an ALLE!

DeeSPe

Statt "set [a-z]?[a-z]_sonos Speak..." könntest Du auch "set TYPE=SONOSPLAYER Speak..." absetzen.

Meine Sonos sind standardmäßig immer alle in eine Gruppe gruppiert, somit wird mein Speak Befehl nur an den Gruppen-Master geschickt und damit kommt aus allen Sonos synchron die Ausgabe.
Durch Bewegungsmelder in jedem Raum werden die Sonos auf lautlos gestellt in denen im vordefinierten Zeitraum keine Bewegung mehr erkannt wird. Betritt dann wieder jemand den Raum, wird die Lautstärke wieder hochgefahren. Will jemand individuelle Musik in einem Zimmer, so muss er/sie den Player manuell aus der Gruppe herausnehmen und dann die eigene Musik abspielen. Bei gotosleep wird der Player des jeweils Schlafengehenden aus der Gruppe entfernt (und dann eine Gute Nacht gewünscht) und nach dessen Aufwachen (und Morgengruß) wieder der Gruppe hinzugefügt.

Meine Sonos begrüßen die Ankommenden nach dem Schließen der Eingangstür und geben alle möglichen Warnungen (Fenster offen, Frostwarnung) und Infos (aktuelles Wetter und Vorhersagen, Abfall) aus.
Sobald niemand mehr zu Hause ist werden die Sprachausgaben automatisch als Push Nachricht an die Bewohner verschickt.

Gruß
Dan

P.S. Ich habe ein notify auf die Player gelegt welches bei "appeared" den jeweiligen Player wieder der Gruppe zuweist, falls diese mal durch eine Trennung der Stromzufuhr aus der Gruppe fliegen.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

87insane

Hey und DANKE schonmal :)

Statt "set [a-z]?[a-z]_sonos Speak..." könntest Du auch "set TYPE=SONOSPLAYER Speak..." absetzen.
Das teste ich nachher. Wenn er dann synchron wäre, ist das super!

Meine Sonos sind standardmäßig immer alle in eine Gruppe gruppiert, somit wird mein Speak Befehl nur an den Gruppen-Master geschickt und damit kommt aus allen Sonos synchron die Ausgabe.
Wo sind sie gruppiert? Irgendwo in der APP oder in FHEM? Da ich bisher nur eine hatte, muss ich jetzt erstmal lernen wie ich das alles am besten löse. Dein Text liest sich schon mal sehr gut! Danke auch für deine Anregungen! Das Attr "group" in FHEM ist sicher nicht gemeint, oder? Ich glaube ich weiß einfach nicht genau wie du das meinst.

Die Idee mit den Bewegungsmeldern finde ich gut. Habe ich nur leider noch nicht soweit.

Wie entnimmt eine Person bei dir, die jeweilige SONOS aus der Gruppe?

Das mit dem schließen der Türe usw. mache ich auch noch. Leider habe ich aber auch noch nicht überall Fenster/Türkontakte. Da es leider kein Neubau ist, muss ich immer schauen was an welcher Stelle geht und Sinn macht. Ist leider nicht immer so einfach.

PS: Das mit den Gruppen hatte ich ja gerade oben schon gefragt. Da bin ich mal gespannt. Fummel mich aktuell auch noch durch die ganzen Multiroom Geschichten in Kombination mit Alexa usw.

Danke, Danke!

DeeSPe

Zitat von: 87insane am 13 Juni 2019, 15:12:48
Statt "set [a-z]?[a-z]_sonos Speak..." könntest Du auch "set TYPE=SONOSPLAYER Speak..." absetzen.
Das teste ich nachher. Wenn er dann synchron wäre, ist das super!

Nein, synchron ist es damit auch nicht, es ist nur eine andere Schreibweise.
Wenn Du es synchron haben möchtest, dann bleibt m.E. nur der Weg über eine Gruppe.

Gruppieren (oder vereinzeln) kannst Du sowohl über die App als auch über FHEM.
Die automatischen Dinge passieren bei mir über FHEM, wenn jemand in seinem Raum den Player vereinzeln möchte, dann macht er/sie das über die App, denn da muss er/sie dann ja auch die eigene Musik starten. Sicher wäre das auch über einen entsprechenden Schalter in HomeKit lösbar (die Idee muss ich mir mal selbst aufschreiben und testen).

Weitere Infos zu Befehlen usw. findest Du im Wiki oder der Commandref (Groupcontrol).

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

87insane

Lese gerade... Also ist das Gruppieren in FHEM nichts anderes als Multiroom-paare. Klar, kann man auch Stereo-Paare bilden aber in dem Fall ist das wohl die Lösung.
Ach ja, ich arbeite eigentlich ganz gerne mit Regex. Hatte anfangs viel zu kämpfen damit und nun kommt es quasi einfach so, dass macht glücklich :)

Die beiden neuen Sonos sind Sonos One mit Alexa. Deswegen brauch man nicht unbedingt die App. Dann muss ich mal testen wie ich das mache. Es sollen ja nicht immer alle der Gruppe angehören, sondern nur in diesem Moment. Generell muss ich meine Ausgaben (Push und Sprache) nochmal überarbeiten. Ich denke das geht besser. Ich habe quasi für jedes Event immer den gleichen kram im Quelltext. Besser ich setze den Text einfach in eine Variable.

Ich gehe mal davon aus, es werden sich weitere Fragen ergeben in ein paar Tagen. Zuerst muss ich das mal schön machen. Ich danke Dir!

87insane

Okay - Ich merke jetzt schon das mit den Gruppen/Durchsagen bei Sonos ist so eine Sache.

Wenn ich die Gruppierung vor dem Sprachbefehl mache (nach dem Befehl wieder trenne), dauert die Gruppierung mir zu lange. Hinzu läuft das gehörte dann nicht weiter wie vorher.
Ich weiß nicht ob das mittlerweile geht aber am schönsten wäre es ca. so:
Ich höre z.B. Musik im Bad, meine Freundin was anderes im Wohnzimmer und das gleiche läuft auch in der Küche (also wie im WZ).
Nun klingelt jemand und die Durchsage soll zeitgleich an allen SONOS Boxen ertönen aber danach sollen die Gruppen sein wie vorher und die Musik soll auch genauso weiterlaufen.

Das müsste doch theoretisch jeder FHEM / SONOS User schon mal gemacht haben oder vorgehabt haben... hmmm

Otto123

#6
Hi,

das erscheint mir eine unlogische Anforderung. Wenn ihr separat (asynchron) irgendwas hört, wozu sollte da eine Durchsage synchron sein?
Vergiss das mit der Umgruppierung, in der Zeit ist Postbote im nächsten Haus. ;D
Ich würde die Gruppen ermitteln (Reading MasterPlayer) und einmal an jede Gruppen senden.

Als Klingel ist das Ganze nach meiner Erfahrung sowieso nicht wirklich zu gebrauchen. Es entspricht nicht der Erwartungshaltung von dem, der auf den Knopf drückt.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Hey Otto123,

die Durchsage von z.B. der Klingel soll ja jeder hören im Haus. So wird auch irgendwer zur Tür laufen und öffnen.
Das mit dem Umgruppieren und der Geschwindigkeit habe ich gerade gemerkt. Deswegen ja auch die Frage...
Ich habe so gesehen keine Gruppen. Bisher gab es keine riesen Party im Haus. Und ich hoffe so Partys bleiben auch im Garten^^ Weswegen ich auch keinen Master/Slave habe. Habe aktuell in der Küche, im Bad und im Wohnzimmer eine SONOS. Aus meiner Sicht macht es Sinn wenn man dort die "Schelle" auch hört.

Die Anforderung an sich ist auch nicht unlogisch. Wenn du z.B. im Schwimmbad bist (größere Freibäder). Dort läuft meist leise Hintergrundbeschallung und diese ist z.B. am Baby Becken anders als bei den Sprungtürmen. Trotz allem macht der Bademeister seine "bitte nicht vom Beckenrand springen" Durchsage überall. Also gleiches Verhalten, nur wird dort kein FHEM/SONOS genutzt. Ich habe zwar ein wenig ausgeholt aber an sich ergibt es Sinn. Wobei das natürlich auch vom Haus/der Wohnung abhängig ist.

Was den Menschen vor der Tür angeht, ist mir das egal. Die Person soll ja nur drücken und warten. Und wenn die Durchsage zeitnah kommt (wie als wäre es nur eine Box), dann passt das. Mich nervt es nur wenn ich quasi mittig von allen Boxen bin und alle nacheinander trallern höre.

Gruß,
Kai

Otto123

#8
Hallo Kai,

ich habe ja nicht gesagt, dass es nicht jeder hören soll. Aber wenn ihr Musik asynchron hört, kann/sollte man auch die Klingel asynchron hören.
ZitatMich nervt es nur wenn ich quasi mittig von allen Boxen bin und alle nacheinander trallern höre.
Dann darfst Du nicht mit Deiner Freundin getrennt Musik hören   ::):o ;D

Also wenn keiner Musik hört, realisierst Du einfach Dan seinen Vorschlag.

Gruß Otto

P.S. Wenn Dir der Mensch vor der Tür an der Klingel egal ist - brauchst Du keine Klingel. ::)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Guten Morgen zusammen,

warum verstehen die Menschen meine Texte in erste Instanz immer falsch? Muss ja an mir liegen :-\

Ich hatte mir gestern die ganze Comref und das Wiki angesehen. Sowohl in englisch als auch in deutsch (ab und an sind die Übersetzungen ja so ne Sache).
Ich verstehe das ganze Groups Theme ggf auch falsch aber habe mir folgendes gedacht....
... Man kann ja standalone Gruppen basteln. Wenn ich das korrekt verstanden habe, können die SONOS auch in mehreren Gruppen einzeln sein. Wenn ich nun alle Sonos in eine Group schicke und zusätzlich jeder Sonos eine einzelne Gruppe gebe, müsste man diese doch einzeln aber auch komplett ansprechen können, oder?

Bisher gab es in FHEM NICHTs was nicht irgendwie doch ging. Deswegen bin ich so verwundert. Bin das Thema mit dem Musik hören gestern auch nochmal durchgegangen und habe es dem "Management" erklärt. Da hieß es auch nur, ich warte einfach bis du das irgendwann hin bekommst. Naja - Nun stehe ich vor einer Aufgabe, ohne Ideen :-\

Der / die Mensch(en) vor der Tür ist/sind mir nur in sofern egal, dass sie sich nicht aussuchen wie es innen klingelt sondern ich. Natürlich sind die Personen mir an sich nicht egal.

DeeSPe scheint sich mit diesem Thema sehr gut aus zu kennen. Hier im Forum fand ich noch einen alten Thread, indem ging es genau um das gleiche Thema aber leider auch keine Lösung am Ende. Der Thread ist irgendwann eingeschlafen. Allerdings ist dieser auch schon alt.

Ach ja - Was mir noch aufgefallen ist und das könnte die Ansage ja um einiges beschleunigen....
Alle Ansagen - "Es hat vorne/hinten geklingelt" usw. werden bei mir im Moment des Auslösens generiert. Nun kann man diese Dateien aber bei Ansagen die öfter vor kommen auch in dem Pfad liegen lassen, wie ich im Wiki las. Das muss ich mir nochmal genauer ansehen. Ist sicher auch besser um etwas Rechenleistung zu sparen. Hat hier noch jemand weitere Infos?

Danke und Gruß,
Kai

Otto123

Moin Kai,

nimm meine Aussagen nicht krumm, ich verstehe schon was Du willst.
Meine persönliche Erfahrung ist: Der Mensch der klingelt erwartet ein Feedback innerhalb von weniger als 400 ms, egal ob kurz oder lang gedrückt wird.
Wenn er gar nichts hört, ist er unsicher ob es überhaupt geklingelt hat.
Das ist mit Sonos, egal wie, nicht oder kaum zu machen. Gruppierung dauert "ewig", deswegen vergiss den Ansatz im Moment des Klingelns gruppieren zu wollen.
Jeder Lautsprecher kann meines Wissens nur in einer normalen Wiedergabe-Gruppe sein. Ich meine damit nicht  Stereo oder Surround Lautsprecherpaare.

Also meines Wissens bleibt Dir nur der Ansatz: Wenn keine Wiedergabe erfolgt, wird der Lautsprecher in eine "Ruhe-Gruppe" gestellt.
Deine Signalisierung sendest Du immer bloß einmal an jede Gruppe im System.

Du kannst ja als Klingel direkt ein mp3 spielen, da fällt jede "Denkpause" im System weg. Gecached werden gleiche Ansagetexte aber meines Wissens sowieso - oder ist das bloß bei Text2Speech so?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Hey Otto,

zuerst einmal bin ich dankbar für jeden der hilft. Aber auch Kritik darf ruhig sein... Ist hier genau wie in whatsapp oder sonst wo - Schrift alleine macht kein Gesicht/Mimik usw....Also alles gut :)

Feedback wäre in dem Fall tatsächlich die Sonos Box. Diese würde man an der jeweiligen Tür auch hören. Die erste Box ist auch im Rahmen (zeitlich).
Das was ich gelesen habe, bestätigt was du sagst zu den Wiedergabe-Gruppen.

Die Idee - bei nicht Nutzung - eine Art Gruppe im "Ruhemodus" ist okay aber auch nicht das was ich als Ziel habe.

Ich nutze (wie im ersten Post zu sehen) ein notify mit dem Speak Befehl des Sonos Moduls. An sich ist das auch gut und schnell. Der Befehl sagt mir an welcher der beiden Türen es geschellt hat, da ich diese von keinem Raum aus direkt sehen kann. Dann weiß ich wenigstens in welche Richtung ich laufen muss. Wie das genau mit dem chache läuft muss ich gleich mal schauen. Ich meine gelesen zu haben, dass man dies explizit sagen muss. Also die Datei behalten und andere individuelle oder sich ändernde Texte immer wieder neu generieren.

Auch wenn das hier gerade aussichtslos erscheint, ggf. hat hier ja noch einer die zündende Idee. Ich bin mir sicher, hier werden sich VIELE freuen.

Otto, alle anderen - Ein schönes und sonniges WE wünsche ich schon mal :)

Otto123

#12
Ich habe mal noch was probiert: Meine Idee mit dem Reading MasterPlayer ist "Mist". ::)
Was ganz einfach geht, (zum probieren ein list):
Alle Master der Gruppen
list TYPE=SONOSPLAYER:FILTER=IsMaster=1
Alle nicht gruppierten.
list TYPE=SONOSPLAYER:FILTER=IsMaster=1:FILTER=SlavePlayer=\[\]
Falls man die Stereopaare /Suroundgruppen bei anderen Konstellationen noch extra ausfiltern möchte
FILTER=IsBonded=0

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

87insane

Da komme ich nicht ganz mit. Was mache ich mit dem list?

(Kurz weil Handy)

Otto123

#14
Das list ist nur zum Test des DEVSPEC :) Ansonsten im Klingel notify
set TYPE=SONOSPLAYER:FILTER=IsMaster=1 speak 50 de Es hat hinten geklingelt
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz