Sonos steuern

Begonnen von Will, 05 Januar 2013, 15:51:12

Vorheriges Thema - Nächstes Thema

Will

Hallo reinerlein,
Du hast natürlich recht, da hat fhem irgendwie nicht mitbekommen, dass es die Gruppe nicht mehr gibt. Wie wird in fhem denn die Gruppen aufgelöst? Muss man da immer jeden einzelnen player ungroupen? Ich mache mir dann malmeinen button der das tut......

Sent from my Nexus 7 using Tapatalk


Reinerlein

Hi Will,

das Problem ist, dass es keine Möglichkeit gibt 'in Fhem' zu ungroupen. Ich kann zwar Gruppieren und das auch wieder auflösen, das erfolgt aber durch Versenden von Nachrichten an die Player. Die wirkliche Gruppierungsfeststellung erfolgt dann durch einen Callback-Aufruf seitens der Player bei Fhem.

Soll heissen, man hat keinen direkten Einfluss auf die Zoneplayer-Gruppen in Fhem, sondern die Player senden diesen Zustand an Fhem.

Das bedeutet dann aber auch, dass du einen nicht mehr vorhandenen Player nicht mehr ungroupen kannst (Fhem sagt dir dann richtigerweise dass der Player verschwunden ist :-)

Wie gesagt, ich muss mir da mal Gedanken machen, ob ich das Sonos-System als solches nicht zu einer Status-Aktualisierung überreden kann...

Grüße Reiner

djhans

Hallo,
ich bin neu im fhem Forum. Habe mir heute einen rasperry pi bestellt und will nun in Sachen Homeautomation mit Sonos und Fritzbox anfangen.

In den letzen Tagen habe ich etwas mit php-Sonos herumgespielt, Grruppen gebildet, wieder aufgelöst, Radiosender abgespielt, Playlisten ausgelesen und gespeichert usw.

Da Sonos später mit enocean Komponenten verbinden möchte, habe ich mich inzwischen in einige Systeme eingelesen und mich jetzt für fhem entschieden, da es meiner Ansicht nach meisten Möglichkeiten bietet....


Meine Vorstellungen sind:
- Gruppenkonfigurationen zeitgesteuert oder per Tastendruck bilden und wieder aufzulösen.
- das Bilden von Stereopaaren bei play1 und play3
- Einbinden eines SUBs (play3 + play3 +SUB)
- Musik langsam ein und ausblenden bei Ereignissen (z.B. Telefon klingelt)
- Türklingel mit BigBen-Sound als mp3
- Sleeptimer auf Tastendruck (Lichtschalter)
- Wecker über Google Calendar steuern

Welche dieser Funktionen werden schon stabil unterstützt und welche könnten irgendwann mal funzen...und was ist aus der Sicht der Experten unlösbar!

Zum Testen von Funktionen bin ich gerne bereit, nur leider habe ich keinen großen Plan vom Programmieren..

Vielen Dank,
djhans

Reinerlein

Hallo djhans,

erstmal herzlich willkommen bei Fhem :-)

Zu deinen Fragen kann ich ein paar Antworten geben:
- Gruppenkonfigurationen können über das Modul durchgeführt werden, und sind damit über Fhem-Zeit-Events auch Zeitgesteuert machbar.
- Stereopaare gehen mit dem Modul nicht. Ich habe bislang die Philosophie verfolgt, dass nur das in der Automation landet, was auch automatisiert praktikabel ist. Diese Stereopaare sorgen nach der Einrichtung dafür, dass ein (bzw. zwei) Player "nicht mehr existiert" und damit über das Fhem-Modul auch nicht mehr greifbar wird. Ich vermute, dass es im Anschluss schwer wird, diese wieder aufzulösen (zumindest nicht über eine Umkehr-Operation, sondern durch eine Nachricht an den neu entstandenen Player). Verifiziert habe ich diese Aussage aber jetzt nicht. Ich kann mir das nach den momentan anliegenden Punkten ja mal anschauen...
- Ich weiss jetzt nicht, was du mit Einbinden eines SUBs meinst. Das Einrichten selbst kann das Modul analog zu den Stereopaaren nicht. Benutzen aber schon, da sich das ganze Gebilde dann ja als ein Player meldet.
- Musik langsam ein-/ausblenden ist nicht implementiert. Da kann ich aber mal schauen, ob das System das beherrscht. Ansonsten würde das für ein bisschen Last auf Fhem sorgen, da du eine Art Schleife bauen müsstest. Bedenke dabei aber, das das Modul eine eigene Warteschlange für die Anweisungen an die Player hält, und deine gesammelten Lautstärkeanpassungen dann u.U. in einem Rutsch ankommen...
- Türklingel ist dann kein Problem, wenn diese ein Event in Fhem verursacht :-) Das (temporäre) Abspielen von Dateien geht mit dem Modul
- Der Sleeptimer kann von Fhem aus gesetzt und auch abgefragt werden. Du kannst also auch ein Fhem-Event erzeugen lassen, wenn ein Sleeptimer abläuft. Damit kann man z.B. 10 Sekunden nach Ablauf des Sleeptimers das Licht ausmachen :-) Damit kann man auch auf Steuerungen aus Sonos heraus reagieren.
- Der Wecker ist auch über Fhem einstellbar, und somit über eine geschickte Event-Erzeugung das auch über Google-Calendar einstellen lassen. Der umgekehrte Weg geht auch: Wenn jemand den Sonos-Wecker über seinen Controller anpasst, dann kannst du ein Fhem-Event dazu bekommen.

Im Normalfall sind die Funktionen, die unterstützt werden, auch stabil. Da ich an dem einen oder anderen Punkt aber noch aktiv dran bin, bzw. diese recht frisch sind, kann es immer mal wieder zu einem Fehler kommen...

Zu den Möglichkeiten kannst du auch mal im Fhem-Wiki nachschauen: http://www.fhemwiki.de/wiki/Sonos_Anwendungsbeispiel

Grüße
Reiner

djhans

Hallo Reiner,
ganz lieben Dank für die schnelle Antwort.

Ja, das mit den Stereo-Paaren und dem SUB ist natürlich schade! Aber ich denke auch, daß es recht komplex werden könnte, zumal man die Einstellungen des einzelnen Players vor und nach der Bildung als Stereopaar speichern müsste (Bass, Höhen, Loudness), da diese per Default nach der Zusammenkunft und Trennung auf Std.-Werte zurückgesetzt werden.

Meine Anwendung ist die, daß ich halt ab und zu die beiden Play3s aus dem Schlafzimmer und dem Bad zusammen mit dem "Wohnzimmer-Sub" als Play3-Stereopaar mit SUB im Partykeller betreibe. Wenn man diese Konfigurationen auf Knopfdruck umstellen könnte, wäre das natürlich super genial!

Das mit der Musik ein-und ausblenden geht mit PHP-Sonos. Die Funktion heißt  RampToVolume und funktioniert unter php eigentlich ganz gut bei mir.
$sonos->RampToVolume(AUTOPLAY_RAMP_TYPE, 30); // Lautstärke steigt auf 30% an
$sonos->RampToVolume(SLEEP_TIMER_RAMP_TYPE, 0); //Lautstärke wird ausgeblendet auf 0%
Dafür braucht man keine Schleife. Ich habe es nur nicht hinbekommen, daß der Player beim ausblenden bis auf 0  auch wirklich abschaltet. Er geht halt nur auf "Mute"

Keine Ahnung ob Dir das Bsp. hilft, aber es sollte funzen...

Gruß,
Christian

Reinerlein

Hi djhans,

das mit der RampToVolume-Geschichte wird dann auf jeden Fall gehen. Ich schaue mir das, wie gesagt, mal an, und baue es ein.

Mit dem Umbauen der Zonen kann ich ja mal schauen. Es wird dann halt nicht so bequem gehen, aber vielleicht kann ich da ja eine Art "Roh-Steuerungs-Modus" auf dem zentralen Modul machen (also nicht Device-abhängig). Ich kann ja auch noch einbauen, dass sowas wie Bass und Treble auch einstellbar sind, dann könnte man sich vielleicht zumindest eine Grundkonfiguration bauen.
Wie gesagt, ich schaue mal, ob das sinnvoll geht... Ich habe das ganze Verhalten bei sowas bei mir noch nie untersucht...

Grüße
Reiner

djhans

Hi Reiner,
super genial! Ich teste auch gerne alles durch.....
Aber zuerst muss mein raspberry ans Fliegen kommen (Lieferung ist für morgen angekündigt!). Ich hoffe fhem funzt auch nur mit SONOS!
Und dann muss ich so langsam anfangen alles auf enocean umzustellen, damit die Hütte auch"smart"  wird! ...und das wird ein langer kostenintensiver Weg...
Ich hoffe nur, fhem ist die richtige Wahl gewesen.

Ich melde mich wenn fhem läuft...
Besten Dank und Gruß,
Christian.

djhans

#457
Hallo Reiner,
ich habe fhem nun auf dem pi laufen. Die Sonos Module habe ich lt. wiki mit "update thirdparty http://fhem.lmsoft.de/sonos sonos" in fhem installiert.
Wie kann ich sehen, dass alles ok ist? Ich habe erwartet, dass die Sonos Module unter "Edit files" auftauchen.
Gibt es eine einfache Möglichkeit einen Test zu machen? Oder ist ggf. bei der Installation der Module schief gegangen.

die perl-Libs habe ich installiert.
apt-get install libwww-perl libsoap-lite-perl
Nachtrag:
ich versteh noch nicht, wie man das System anspricht. Per Zufall hatte ich plötzlich Daten vom Sonos. Keine Ahnung wie ich das gemacht habe, habe es wieder gelöscht....wie macht man das ohne Zufall?

Gruß,
Christian

Reinerlein

Hi Christian,

du hast dann erstmal nur meine Moduldateien vorhanden. Du müsstest jetzt mal das Sonos Modul initialisieren.
z.B.:
define Sonos SONOS localhost:4711 30

Dann wirst du vielleicht noch das eine oder andere Perl-Modul nachinstallieren müssen. Das siehst du dann im Log. Dazu gibt es dann auch Hinweise im Wiki-Artikel. Aber das hast du ja auch schon entdeckt :-)

Wenn alles funktioniert, werden automatisch alle Zoneplayer erkannt und angelegt. Wie bei Fhem üblich, erfolgt das alles erstmal nur im Speicher...
Die Weboberfläche erreichst du im Normalfall unter http://ip.adresse:8083

Grüße Reiner


djhans

Hallo Reiner,
1000 Dank!. Das war es! Er findet alle Player.Ich hatte die "define" -  Zeile zwar schon gesehen, aber dachte es wäre nur ein Bsp. Ich konnte mit "4711 30" nix anfangen und habe es weggelassen....

Nun gut!
Jetzt kann ich ein wenig rumspielen.

djhans

Reinerlein

Hi Christian,

schön :-)

Nur zur Erklärung:
Der Parameter
localhost:4711
beschreibt die Adresse, unter der der Subprozess erreichbar ist, bzw. gestartet wird.

Die 30 sind der Timerintervall in Sekunden, in dem die Player auf Vorhandensein geprüft werden sollen.

Viel Spaß beim Probieren...

Grüße Reiner

djhans

Hallo,
Besten Dank! Das verstehe ich (..."4711" erinnert mich immer an das Wasser aus Köln ;-)).
Ich teste mal alles durch. Auf jeden Fall ist das eine feine Sache mit dem Sonos...

Christian.

djhans

Hallo,
also, irgendwie bin ich zu doof die Syntax zu kapieren!

Ich will einfach nur in die fhem.cfg eintragen, daß auf einem bestimmten Sonos ein Radiosender abgespielt wird.

Folgendes ist in der Config eingetragen:

define Sonos SONOS localhost:4711 30
Auf der linken Seite findet fhem nun meine 3 Kisten unter dem Label Sonos:
Sonos_Wohnzimmer
Sonos Schlafzimmer
Sonos_Bad

Wenn ich über das WebInterface nun Befehle absetzte, klappt das wunderbar, z.B.

set LoadRadio WDR%202%20Ruhrgebiet

Nun will ich das Ganze für die Kiste im Schlafzimmer in die Config einbauen und breche mir die Finger dabei!


Setze Lautstärkre auf 20
Lade WDR 2
setzte sleeptimer 15
schalte Schlafzimmer aus


kriege ich nicht hin. Sobald ich versuche mit define Sonos_Schlafzimmer irgendetwas in die cfg einzutragen und speichere, meckert fhem, daß ich zuerst Bad und Wohnzimmer definieren muss...


Das verstehe ich schon wieder nicht. Wie muss ich das aufbauen=


Christian.




Reinerlein

Hi Cristian,

aller Anfang ist schwer:-)

Du hast doch schon mal einen Anfang. Die Geräte reagieren, und du kannst Befehle absetzen... Der Rest ist jetzt Fhem Notation kennenlernen :-)

In meinem Wiki-Artikel gibt es auch ein paar Beispiele, wie man das so machen könnte.
Als Grundlage:
- Du musst dir überlegen, was du eigentlich machen möchtest: Möchtest du auf ein Event (z.B. einen Tastendruck bei einer anderen, in Fhem verfügbaren, Komponente) reagieren? Möchtest du auf der Oberfläche von Fhem eine Steuermöglichkeit haben?
- Ein Event wird z.B. in Fhem mit "notify" eingerichtet, und hat dann die Form
define NameDesNotify notify RegulärerAusdruckDerDasEventBeschreibt AktionDieAusgeführtWerdenSoll

Dazu empfiehlt sich auf jeden Fall auch die Lektüre der diversen Fhem-Einstiegsdokumente...
Z.B.: http://fhem.de/Heimautomatisierung-mit-fhem.pdf

Auf jeden Fall musst du die SonosPlayer nicht mehr per define definieren, da dies bereits erledigt wurde. Du kannst diese Komponenten nun benutzen, indem du sie steuerst, oder auf Events dieser Komponenten reagierst, indem du ein passendes Notify schreibst...

Grüße
Reiner

djhans

Hallo,
danke für den Hinweis. Ich werde mal ein wenig probieren. Ich ahbe im Logfile allerdings zig Fehler, die nach einer gewissen Zeit auftauchen. Kann das jemand deuten? Das ist nur ein Ausschnitt:

2013.11.20 13:48:23 0: SONOS0: ERROR in DoWork: 'play' -> UDN is undefined - []

2013.11.20 13:48:24 0: SONOS0: Fehlerhafter Aufruf von DoWorkAnswer: :LastActionResult:CheckProxyObject-ERROR: SonosPlayer disappeared
2013.11.20 13:48:29 0: SONOS0: ERROR in DoWork: 'pause' -> UDN is undefined - []

2013.11.20 13:48:29 0: SONOS0: Fehlerhafter Aufruf von DoWorkAnswer: :LastActionResult:CheckProxyObject-ERROR: SonosPlayer disappeared


Das ist sicherlich nicht normal:

Dan habe ich versucht einen ganz einfachen Aufruf zu programmieren, aber auch da mache ich immer noch etwas gasch:

define SonosAn at 13:00:00 set Sonos_Schlafzimmer Play

Soll bezwecken, dass er einfach um13:00 Uhr die Kiste einchaltet, aber im Log steht:
2013.11.20 13:00:00 3: SonosAn: Please define Sonos_Schalfzimmer first

Hängt das mit den Fehlermeldungen zusammen, oder ist der Aufruf einfach falsch! Wenn ich in fhem einfach:
set Sonos_Schlafzimmer Play eintippe, spielt das Gerät.

djhans.