Sonos steuern

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

Vorheriges Thema - Nächstes Thema

djhans

#750
Hi Reiner,
irgendwie habe ich immer noch Probleme mit dem Sonos Modul unter fhem.
Habe jetzt einen Befehl abgesetzt
{ my $temp = ReadingsVal("Wetter","fc1_low_c","unbekannt");; fhem "set Sonos_Wohnzimmer Speak 30 de $temp"}
und plötzlich spielt der Badezimmer-Sonos die Temperatur...
fhem neu gestartet, versucht den Wohnzimmer-Sonos per Play Butten zu starten -> Absturz fhem. Nur Kill 9 hilft..

Das hängt irgendwie mit den Daten zusammen, die fhem in die fhem.cfg speichert. Wenn ich diese Daten zu Fuß rausschmeisse und die Sonos Kisten neu erkennen lasse, klappt alles perfekt, solange die Daten nicht gespeichert werden. Irgendwie ändert sich etwas im laufenden Betrieb...

Die Sonos-Komponenten wurden nicht vom Stromnetz getrennt, ich habe lediglich mit dem Groups Befehl rumgespielt.

Meine Komponenten:
Connect:Amp + SUB
2 x Play 1 Schlafzimmer, Stereopaar
1 x Play 1 Bad
2 x Play 3
1 x Bridge

Ich weiss aber nicht, wie ich den Fehler reproduzieren kann...im Logfile finde ich keine Anhaltspunkte...
djhans.

NACHTRAG:
ich lösche die ganze fhem.cfg und baue fhem neu auf. Ich würde ja die autodetect-Sonos Sachen in einer separaten Datei auslagern und per include einbinden. Aber wenn ich dann irgendwann wieder save im Webinterface drücke, klatscht er das alles wieder in die fhem.cfg.

NACHTRAG 2:
tja, keine Ahnung was passiert ist, es lässt sich kein Player mehr über fhem steuern. Ich mach den Pi jetzt platt und fang von vorne an...

Reinerlein

Hi djhans,

das ist schon komisch. Ich habe das auch in einer eigenen Config-Datei ausgelagert, und wenn ich save drücke, dann bleibt das auch dort.
Wichtig ist, daß du Fhem beendest (vorher natürlich save drückst), die Konfiguration umschiebst, und Fhem wieder startest. Fhem merkt sich, wo die Konfiguration stand, wenn es gestartet wird, und speichert alles weitere auch dort wieder ab...

Grüße
Reiner

djhans

Hallo Reiner,
habe jetzt das komplette System neu aufgesetzt. Sobald ich irgendeinen Player ansteuern will, stürzt fhem komplett ab.

es läuft außer Sonos nichts mehr auf dem System. Weiss nicht so richtig, wo ich anfangen soll!

Christian.

Reinerlein

Hi Christian,

nicht verzweifeln... das wird schon...

Poste hier (oder per PN) doch mal bitte die Konsolenausgabe mit Level 5. Irgendwas muss ja noch passieren, wobei er dann aussteigt. Bitte vorher sicherstellen, dass du die aktuelle Developerversion des Moduls installiert hast.

Leider ist bei der Vielfalt der Umgebungen nicht alles auf Anhieb abgrenzbar oder funktioniert direkt. Das ganze muss wachsen und gedeihen. Das bedeutet leider auch immer wieder Hürden zu beseitigen...

Grüße
Reiner

djhans

#754
Hi Reiner,
danke für die Unterstützung!. Ich lösche noch mal alle Daten und Zustände und lasse alles noch einmal erkennen.
Hier aber schon mal eine Fehlermeldung, wenn ich fhem per shutdown herunterfahre...

Can't call method "kill" on an undefined value at FHEM/00_SONOS.pm line 4796, <$ client> line 12.

djhans.

NACHTRAG:
habe nun die fhem.cfg zurückgesetzt, die fhem.save gelöscht und alles noch einmal mit viel Zeit erkennen lassen. Bislang läuft wider alle ohne Störung. ICh habe die Sonos-Device-Einträge auslagern können und ein wenig kommentiert. Das scheint auch zu funzen... Der oben beschriebene Fehler kommt aber immer, wenn man fhem beendet.


djhans

#755
Hallo,
ich suche immer noch nach dem Besten Konzept für die Konfiguration von Weckern/Alarm. M.E. ist es am Besten, die Wecker im Sonos zu konfigurieren und über fhem bei Abweichungen (z.B. Ferien, Urlaub, Feiertage, etc.) modifizieren zu lassen. Das stellt u.a. auch sicher, dass der Sonos auch weckt, falls fhem mal ein Problem hat und gerade nicht "online" ist (passiert leider ab und zu, das fhem abkachelt!)

Eine Frage zum Sonos-Alarm:
die Duration des Weckers lässt sich sekundengenau einstellen, aber kann man die Duration auch auf "unbegrenzt" setzen? Hat das schon jemand probiert?
Hintergedanke ist, das Wecksignal nach dem Einschalten unbegenzt laufen zu lassen und es dann über den Sleeptimer irgendwann langsam auszublenden. Erstens finde ich das plötzliche Abschalten der Mucke doof und zweitens kann man am Controller sehen, wie lange die Mucke noch läuft. Die Sleeptimer Restlaufzeit wird ja angezeigt. Bei dem normalen Sonos-Alarm kann man das langsame ausblenden m.E. nicht nutzen, oder? Aks Workaround könnte man die Duration auf 24h setzten und dann mit dem Sleeptimer arbeiten,  aber das finde ich unschön!

Danke,
Christian

NACHTRAG:
set Sonos_Buero Alarm Update 35 { StartTime => '17:04:00', Volume => 10, Duration => '', Enabled => 1 }

Dauer: unbegrenzt. Das geht schon mal!
..wie heißt denn das Event, dass ausgelöst wird, wenn der Sonos aufgrund eines Alarms einschaltet? Das brauche ich ja, um meinen Sleeptimer zu starten.

Reinerlein

Hi Christian,

wenn du den Alarm auf Einmal-Ausführen gestellt hast, erhältst du sofort bei Alarm-Auslösung ein Event, dass ein Alarm verändert wurde (Enabled wird von Sonos auf 0 gesetzt).

Ansonsten bekommst du nur mit, dass das Abspielen gestartet hat. Warum sieht man zunächst nicht...
Aber im Controller wird z.B. ein Icon angezeigt, dass gerade eine Alarm-Abspielung erfolgt. Das muss ja irgendwo herkommen. Ich kann ja mal bei Gelegenheit schauen, was ich so mitgeteilt bekomme...

Grüße
Reiner

djhans

Hi,
hm! das ist blöd! Auf Play kann man nicht gehen, das könnte ja zu jeder Zeit manuell und gewollt ausgelöst werden und dann würde der Sleeptimer jedes mal starten...
Muss mal gucken, im Moment fällt mir dazu auch nichts ein. Ich dachte, es würde jedes Mal ein Ereignis ausgelöst, wenn der Alarm startet.

...da fällt mir ein: Man könnte doch jede Nacht um 4 Uhr die Alarm-Startzeit aus dem Sonos auslesen und dann einen Sleeptimer mit der "Sonos-Alarm-Zeit" setzten. Ist zwar nicht so elegant, aber sicherlich machbar... (für mich mit meinen fhem und perl-Kenntnissen sicherlich ein Jahrhundertprojekt  8))

Bis dann...
Christian

Reinerlein

Hi Christian,

ich habe mal gerade nachgeschaut: Ich bekomme die Info natürlich auch.
Ich baue gerade mal ein neues Reading, was diesen Wert repräsentiert... Dann gibt es auch ein Event dazu :-)

Ich bin aber auch gerade dabei, die Namenserkennung beim Player-Discovery umzubauen...

Grüße
Reiner

Reinerlein

Hallo zusammen,

ich habe die Developer-Version noch mal aktualisiert.

Folgendes bitte testen:
- Die Namensgebung beim Playererkennen wurde überarbeitet. Das betrifft nur Stereopaare und Surroundkonstellationen...
- Das Reading 'AlarmRunning' wurde hinzugefügt, welches immer dann eine '1' enthält, wenn das aktuelle Abspielen durch einen Alarm gestartet wurde. Leider bekomme ich nicht explizit mitgeteilt, wielange das Abspielen durchgeführt werden wird. Das kann man nur indirekt über den Alarm selbst herausfinden...

Wie immer:

update thirdparty http://fhem.lmsoft.de/sonos_dev sonos


Danke schonmal...

Grüße
Reiner

djhans

Hi Reiner,
Besten Dank für die superschnelle Reaktion. Habe einnen Test gemacht und es scheint zu funzen...
define AlarmRunning notify Sonos_Schlafzimmer:AlarmRunning.*1 set Sonos_Wohnzimmer Play

Habe ein bissl gebraucht, bis ich verstanden habe, dass bei einem bestehenden AlarmRunning kein notify ausgelöst wird, sondern auf den Wechsel von 0->1 und von 1->0 reagiert wird.

Frage:
was hat sich an den Namen bei den Stereopaaren geändert? Mir ist nichts aufgefallen! Die heißen weiterhin Sonos_Schlafzimmer (für links) und Sonos_Schlafzimmer_RF (für rechts). Oder muss ich die Sonos.cfg löschen und die Geräte neu erkennen lassen.

djhans


Reinerlein

Hi Christian,

schön, daß das mit dem Event klappt. Allgemein passe ich Readings immer nur dann an, wenn sich der Wert auch ändern würde (Ausnahme ist das "SomethingChangedEvent"). Das sorgt für etwas entspanntere Datenkommunikation zwischen den Modulbestandteilen :-)
Wenn Fhem dauerhaft läuft, entspricht das Reading ja auch immer der Realität, sodass es stets passen sollte...

Die Sache mit der Namensgebung ist eher für die Surround-Systeme interessant, da dort ein Problem aufgetreten war (es befanden sich "_X"-Bestandteile im generierten Devicenamen), und greift nur bei einer Neu-Erkennung der Sonos-Landschaft (bestehende Devicenamen werden natürlich nie verändert, die sind Benutzersache)...

Aber ich habe auch die Erkennung der Stereopaare mit angepasst, sodass ein Test sicherlich sinnvoll wäre.
Dazu bräuchtest du ja nur testweise das Include für die Sonos.cfg auskommentieren, und nach einem Fhem-Neustart ein Sonos-Device definieren.
Bei dir sollten die Namen hoffentlich wieder genauso generiert werden.

Grüße
Reiner

djhans

Hi Reiner,
habe es getestet. Der rechte Kanal eines Stereopaars heisst nun Sonos_Schlafzimmer_X und nicht mehr Sonos_Schlafzimmer_RF

Gruß,
Christian.

Reinerlein

Hi Christian,

na super... Das war nicht so geplant :-)
Kannst du mir kurz den Inhalt des Readings "ZoneGroupState" des Sonos-Devices zukommen lassen?
Dann kann ich mal schauen, was die regulären Ausdrücke so falsch machen...

Außerdem habe ich noch einen kleinen Tippfehler entdeckt, der aber große Wirkung haben kann...
Kannst du das nochmal mit der neuen Version testen?

Danke schon mal...

Grüße
Reiner

djhans

Hi,
habe nun das Update noch einmal gemacht, die Sonos.cfg auskommentiert und die Kisten neu erkennen lassen.
Du kannst mich jetzt verrückt erklären, aber jetzt stimmt es wieder... heute morgen hat er da ein X hinter gepackt! Ganz bestimmt!

get Sonos Groups liefert nun:
[Sonos_Wohnzimmer, Sonos_Wohnzimmer_SW], [Sonos_Buero], [Sonos_Schlafzimmer, Sonos_Bad, Sonos_Schlafzimmer_RF], [Sonos_Terrasse]

...und das aus dem ZoneGroupState: Ich hoffe das ist das, was Du sehen wolltest...
<ZoneGroupMember UUID="RINCON_000E58C6EF1C01400" Location="http://192.168.1.46:1400/xml/device_description.xml" ZoneName="Schlafzimmer" Icon="x-rincon-roomicon:masterbedroom" Configuration="1" SoftwareVersion="24.0-71060" MinCompatibleVersion="22.0-00000" ChannelMapSet="RINCON_000E58C6EF1C01400:LF,LF;RINCON_000E58C6F31C01400:RF,RF" BootSeq="2"/><ZoneGroupMember UUID="RINCON_000E58C6F31C01400" Location="http://192.168.1.45:1400/xml/device_description.xml" ZoneName="Schlafzimmer" Icon="x-rincon-roomicon:masterbedroom" Configuration="1" Invisible="1" SoftwareVersion="24.0-71060" MinCompatibleVersion="22.0-00000" ChannelMapSet="RINCON_000E58C6EF1C01400:LF,LF;RINCON_000E58C6F31C01400:RF,RF" BootSeq="3"/></ZoneGroup><ZoneGroup Coordinator="RINCON_000E58F224CE01400" ID="RINCON_000E58F224CE01400:26"><

Christian