Sonos steuern

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

Vorheriges Thema - Nächstes Thema

djhans

#705
Reiner,
das ist nur eine Idee, mehr nicht!

Die Sonos-Komponenten verbleiben in meinem Bsp schon an Ort und Stelle. Sie werden halt nur anders angesteuert. Einmal als 5.1 Anlage und einmal als 2.1 in einer Gruppe, je nachdem was gerade angesagt ist.....ob das überhaupt machbar ist, keine Ahnung! (cool wäre es aber!)

Wenn das mit der Pegeleinstellung des SUBs klappt, wäre das schon mal gut:-)

Schönen Gruß,
Christian

P.S. Ich bin sowieso erst am Anfang mit fhem und kann noch nicht einmal 10% deines Moduls nutzen...

ArminK

Zitat von: ArminK am 20 Januar 2014, 17:02:44
Hallo Reiner,

vielen Dank für die Hilfe. Kurzes Update: Habe die Rechte via FTP wieder auf 644 gesetzt und nochmal einen Reboot gemacht. Es kam mir so vor als ob fhem nicht von alleine starten wollte (war sehr lange nicht erreichbar) also nochmal via ssh fhem händisch gestartet, ein paar Minuten später noch einmal nachgeschaut und siehe da: fhem ist wieder via dyndns zu erreichen! Und was noch besser ist: Ich hab jetzt bei meinen Devices die Sonos bridge und den Sonos Player gelistet....erklären kann ich mir das nicht...ich werde jetzt mal versuchen damit zu spielen und gebe Dir ein Feedback wie es aussieht!

Grüße
Armin

Hallo Reiner,
Kurzes Statusupdate: Sonos ist mittlerweile halbwegs am Laufen....Den Status meiner zwei Player kann ich sehen (Radiosender mit Cover, aktuelle Sendeinfos usw.) Was nicht funktioniert ist das Steuern.. Volume Up/Down funktioniert meistens, alles ander nicht (Play/Pause/Mute).
Hatte eben mal über Eingabe von set Sonos_Kueche Pause das Teil anzuhalten... danach noch ein paar mal Volume Down übers Webinterface ...das ist das was ich im Log angezeigt bekomme: 2014.02.02 13:15:16 3: SONOS0: Received: 'DoWork:RINCON_000E58C5234601400_MR:pause:'
Thread 1 terminated abnormally: junk 'lowedValue>
        ' after XML element
2014.02.02 13:16:36 3: SONOS0: Received: 'DoWork:RINCON_000E58C5234601400_MR:pause:'
2014.02.02 13:17:34 3: SONOS0: Received: 'DoWork:RINCON_000E58F4EC2601400_MR:setRelativeVolume:-7'
2014.02.02 13:17:44 3: SONOS0: Received: 'DoWork:RINCON_000E58F4EC2601400_MR:setRelativeVolume:-7'
2014.02.02 13:17:51 3: SONOS0: Received: 'DoWork:RINCON_000E58F4EC2601400_MR:setRelativeVolume:-7'


An anderer Stelle im Log habe ich ziemlich viele dieser Meldungen: 2014.02.02 13:01:28 3: SONOS9: Event: Received Transport-Event for Zone "Sonos_Kueche".
2014.02.02 13:01:28 3: SONOS9: Event: End of Transport-Event for Zone "Sonos_Kueche".
Use of uninitialized value in string eq at ./FHEM/00_SONOS.pm line 4313.
Use of uninitialized value in string eq at ./FHEM/00_SONOS.pm line 4309.
Use of uninitialized value in string eq at ./FHEM/00_SONOS.pm line 4313.
Use of uninitialized value in string eq at ./FHEM/00_SONOS.pm line 4313.


Seltsam... sollte ich auch mal die dev-Version von Sonos installieren (falls ja, wo finde ich die auf die Schnelle?)?

Grüße und einen schönen Sonntag noch..
Armin
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

ArminK

kleiner Nachtrag: habe eben in meinem Includefile für die Küche ein paar (nicht Sonos betreffende) Änderungen gemacht und nach einem rereadcfg  wird plötzlich Sonos_Kueche um die 3 Tastendrücke leiser! seltsam...jetzt reagiert auch wieder VolumeU und VolumeD Pause allerdings nicht....
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

Reinerlein

Hallo zusammen,

kurzes Status-Update:
Ich habe meinen Code nun so umgebaut, dass im laufenden Betrieb keine Informationsanfragen an Fhem mehr durchgeführt werden. Das sollte auf jeden Fall für eine Entspannung an der Dead-Lock-Front sorgen. Ob es das Problem komplett beseitigt bleibt abzuwarten :-)

Ich habe die Developer-Version entsprechend aktualisiert, wer es also gerne testen möchte:

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


Folgende neue Dinge sind dort zu erwarten:

  • Neuer Mechanismus für die initiale Informationsübertragung von Fhem in Richtung SubProzess
  • Es gab ein Start-Problem, wenn man das verbose-Attribut an einem Sonos-Device gesetzt hatte.
  • Das Fehlerhandling von Fehlern im UPnP-SubModul wurde erweitert, sodass einige Fehler automatisch durch einen Neustart des Sub-Threads behoben werden
  • Änderungen von Zonennamen und Icon werden nun gemeldet und an der Oberfläche aktualisiert
  • Man kann das Zonen-Icon ändern
  • Man kann den Zonen-Namen ändern. Hier sind auch viel mehr Zeichen möglich, als der Controller anbietet. Da gehen lustige Titel :-)
    Achtung: Es ist tatächlich möglich den Zonennamen mehrfach zu vergeben. Auch die Sonos-Komponenten haben damit kein Problem, außer dem Anwender, der im Controller u.U. nicht mehr erkennen kann, welcher Player gerade gesteuert wird :-)
  • Man kann sich mit dem Getter "PossibleRoomIcons" die Liste der möglichen Icon-Namen ausgeben lassen.

Also ein bißchen was passiert, aber am Wichtigsten ist die Änderung der Informationsschicht.
Wenn das jetzt einigermaßen läuft, bzw. die letzten Kinken daran ausgemerzt wurden, dann würde ich daraus mal wieder ein Release machen, damit das im Wiki auch mal wieder passend aktualisiert werden kann...

@Armin: In deinem Log gibt es eine "echt harte" Fehlermeldung:

Thread 1 terminated abnormally: junk 'lowedValue>
        ' after XML element
Die machte genau das, was da steht: Der SubProzess wird/wurde angehalten und läuft nicht mehr. Danach kann keine Kommunikation zu den Playern (und umgekehrt) mehr funktionieren.
Ich habe das Fehlerhandling an der Stelle sowieso schon angepasst gehabt, sodass es bzgl. dieses Fehlers tatsächlich hilft, auf die Developer-Version zu gehen.

Grüße
Reiner

ArminK

Vielen Dank Reiner für Deinen Einsatz! Ich probiere das gleich mal aus!
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

ArminK

Nochmal ein Zwischenbericht, an der Funktion hat sich nichts geändert, ausser Statusanzeige und Lauter / Leiser geht nichts...

Als erstes ein Update gemacht:
2014.02.02 14:35:29 3: update get http://fhem.lmsoft.de/sonos_dev/controls_sonos.txt
2014.02.02 14:35:30 1: update saving statefile
2014.02.02 14:35:30 2: Backup with command: tar -cf - fhem.cfg ./FHEM/!statusm.inc ./FHEM/!treppenhaus.inc ./FHEM/!schlafzimmer.inc ./FHEM/!balkon.inc ./FHEM/!kueche.inc ./FHEM/!henryx.inc ./FHEM/!bad.inc ./FHEM/!wohnzimmer.inc ./FHEM/!dwt.inc ./FHEM/!df.inc ./FHEM/!wetter.inc ./FHEM/99_myFHTsettings.conf ./log/fhem.save ./CHANGED ./contrib ./demolog ./docs ./FHEM ./fhem.cfg ./fhem.cfg.demo ./fhem.pl ./fhem2mail ./log ./README_DEMO.txt ./RINCON_000E58C5234601400_MR_Speak.mp3 ./sendEmail ./telefonbuch.txt ./unused ./www |gzip > ./backup/FHEM-20140202_143530.tar.gz
2014.02.02 14:35:57 1: backup done: FHEM-20140202_143530.tar.gz (10420398 Bytes)
2014.02.02 14:35:57 3: update get http://fhem.lmsoft.de/sonos_dev/FHEM/00_SONOS.pm
2014.02.02 14:35:58 3: update get http://fhem.lmsoft.de/sonos_dev/FHEM/21_SONOSPLAYER.pm
2014.02.02 14:35:59 1: update 2 file(s) have been updated.


dann Fhem-Neustart:
2014.02.02 14:38:50 0: Server shutdown
2014.02.02 14:38:50 3: SONOS0: Received: 'shutdown'
2014.02.02 14:38:50 3: SONOS0: Disconnecting client and shutdown server...
2014.02.02 14:38:50 3: SONOS0: Trying to kill Sonos_Thread...
2014.02.02 14:38:50 3: SONOS0: Trying to kill PlayerRestore_Thread...
2014.02.02 14:38:50 1: SONOS2: Restore-Thread wurde beendet.
2014.02.02 14:38:50 3: SONOS1: Controlpoint-Listener wurde beendet.


dann 12 mal das:
Unsubscription request failed with error: 412 Precondition Failed at FHEM/lib/UPnP/ControlPoint.pm line 1001 thread 1


dann wird die CFG abgearbeitet und als Sonos an die Reihe kommt gehts so weiter:
Prototype mismatch: sub main::head: none vs ($) at ./FHEM/00_SONOS.pm line 177
Warning, threads::shared has already been loaded.  To
enable shared variables, 'use threads' must be called
before threads::shared or any module that uses it.
2014.02.02 14:39:30 1: SONOS0: Kein UPnP-Server gefunden... Starte selber einen und warte 8 sekunden darauf...
Current: "fhem.pl", gPath: "./FHEM"
Current: "FHEM/00_SONOS.pm", gPath: ""
2014.02.02 14:39:36 1: SONOS0: FHEM/00_SONOS.pm is listening to Port 4711
2014.02.02 14:39:38 3: Opening Sonos device localhost:4711
2014.02.02 14:39:38 1: SONOS0: Connection accepted from localhost:42794
2014.02.02 14:39:38 3: Sonos device opened
2014.02.02 14:39:39 1: Including ./log/fhem.save
2014.02.02 14:39:40 1: statefile: Reading Sonos_BRIDGE->presence must not be used out of statefile.
Reading Sonos_Bad->presence must not be used out of statefile.
Reading Sonos_Kueche->presence must not be used out of statefile.
2014.02.02 14:39:40 1: usb create starting
.
.
.
2014.02.02 14:39:50 3: SONOS1: UPnP-Thread gestartet.
2014.02.02 14:39:51 1: SONOS2: Restore-Thread gestartet. Warte auf Arbeit...
2014.02.02 14:39:53 2: SONOS1: Discover Sonosplayer 'K?che' (S3) Software Revision 4.2 with ID 'RINCON_000E58F4EC2601400_MR'
2014.02.02 14:40:01 2: SONOS1: SonosPlayer 'Kueche' (S3) Software Revision 4.2 with ID 'RINCON_000E58F4EC2601400_MR' is already defined and will only be updated
2014.02.02 14:40:01 2: SONOS1: SonosPlayer 'Kueche' is now updated
2014.02.02 14:40:01 2: SONOS1: Service-subscribing successful with SID="uuid:RINCON_000E58F4EC2601400_sub0000003128" and Timeout="86400s"
2014.02.02 14:40:01 2: SONOS1: Rendering-Service-subscribing successful with SID="uuid:RINCON_000E58F4EC2601400_sub0000003129" and Timeout="86400s"
2014.02.02 14:40:01 2: SONOS1: Alarm-Service-subscribing successful with SID="uuid:RINCON_000E58F4EC2601400_sub0000003130" and Timeout="86400s"
2014.02.02 14:40:01 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID="uuid:RINCON_000E58F4EC2601400_sub0000003131" and Timeout="86400s"
2014.02.02 14:40:01 2: SONOS1: DeviceProperties-Service-subscribing successful with SID="uuid:RINCON_000E58F4EC2601400_sub0000003132" and Timeout="86400s"
2014.02.02 14:40:01 3: SONOS1: Discover: End of discover-event for "K?che".
2014.02.02 14:40:03 2: SONOS1: Discover Sonosplayer 'Bad' (S1) Software Revision 4.2 with ID 'RINCON_000E58C5234601400_MR'
2014.02.02 14:40:11 2: SONOS1: SonosPlayer 'Bad' (S1) Software Revision 4.2 with ID 'RINCON_000E58C5234601400_MR' is already defined and will only be updated
2014.02.02 14:40:11 2: SONOS1: SonosPlayer 'Bad' is now updated
2014.02.02 14:40:11 2: SONOS1: Service-subscribing successful with SID="uuid:RINCON_000E58C5234601400_sub0000001221" and Timeout="86400s"
2014.02.02 14:40:11 2: SONOS1: Rendering-Service-subscribing successful with SID="uuid:RINCON_000E58C5234601400_sub0000001222" and Timeout="86400s"
2014.02.02 14:40:11 2: SONOS1: Alarm-Service-subscribing successful with SID="uuid:RINCON_000E58C5234601400_sub0000001223" and Timeout="86400s"
2014.02.02 14:40:11 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID="uuid:RINCON_000E58C5234601400_sub0000001224" and Timeout="86400s"
2014.02.02 14:40:11 2: SONOS1: DeviceProperties-Service-subscribing successful with SID="uuid:RINCON_000E58C5234601400_sub0000001225" and Timeout="86400s"
2014.02.02 14:40:11 3: SONOS1: Discover: End of discover-event for "Bad".
2014.02.02 14:40:12 2: SONOS1: Discover Sonosplayer 'BRIDGE' (ZB100) Software Revision 4.2 with ID 'RINCON_000E581C935601400_MR'
2014.02.02 14:40:14 2: SONOS1: SonosPlayer 'BRIDGE' (ZB100) Software Revision 4.2 with ID 'RINCON_000E581C935601400_MR' is already defined and will only be updated
2014.02.02 14:40:14 2: SONOS1: SonosPlayer 'BRIDGE' is now updated
2014.02.02 14:40:14 1: SONOS1: Service-subscribing not possible due to missing TransportService
2014.02.02 14:40:14 2: SONOS1: ZoneGroupTopology-Service-subscribing successful with SID="uuid:RINCON_000E581C935601400_sub0000000080" and Timeout="86400s"
2014.02.02 14:40:14 2: SONOS1: DeviceProperties-Service-subscribing successful with SID="uuid:RINCON_000E581C935601400_sub0000000081" and Timeout="86400s"
2014.02.02 14:40:14 3: SONOS1: Discover: End of discover-event for "BRIDGE".
2014.02.02 14:40:14 3: SONOS1: Event: Received Alarm-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:14 3: SONOS1: Event: End of Alarm-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: Received ZoneGroupTopology-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: End of ZoneGroupTopology-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Bad".
2014.02.02 14:40:15 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Bad".
2014.02.02 14:40:15 3: SONOS1: Event: Received DeviceProperties-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: End of DeviceProperties-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: Received ZoneGroupTopology-Event for Zone "Sonos_BRIDGE".
2014.02.02 14:40:15 3: SONOS1: Event: End of ZoneGroupTopology-Event for Zone "Sonos_BRIDGE".
2014.02.02 14:40:15 3: SONOS1: Event: Received Alarm-Event for Zone "Sonos_Bad".
2014.02.02 14:40:15 3: SONOS1: Event: End of Alarm-Event for Zone "Sonos_Bad".
2014.02.02 14:40:15 3: SONOS1: Event: Received Rendering-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: End of Rendering-Event for Zone "Sonos_Kueche".
2014.02.02 14:40:15 3: SONOS1: Event: Received DeviceProperties-Event for Zone "Sonos_BRIDGE".
2014.02.02 14:40:15 3: SONOS1: Event: End of DeviceProperties-Event for Zone "Sonos_BRIDGE".


und so weiter.....keine Ahnung was da schief läuft....
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

djhans

#711
Hallo Reiner,
auch von mir ein Feedback zum Update.
Wenn man bei AddMember versehentlich einen falschen Player - Namen angibt (z.B. Tippfehler) dann schmiert fhem komplett ab und muss neu gestartet werden. Keine Ahnung, ob es an meiner Konfig legt, ist aber reproduzierbar...

djhans

djhans

Hallo,
nochmal ich! Ich versuche ein Notify auf "Sleeptimer off" zu setzten. Geht aber nicht.

define Sonos_Schlafzimmer_Notify_SleepTimer_off notify Sonos_Schlafzimmer:SleepTimer off\
set Sonos_Schlafzimmer RemoveMember Sonos_Bad;;


Geht das nicht! Was mache ich falsch?

djhans.

Reinerlein

Hi djhans,

zum Notify: Der reguläre Ausdruck für das Matching darf keine Leerzeichen enthalten. Am einfachsten ist es, einfach ein "." (Punkt) an die Stelle des Leerzeichens zwischen dem Reading "Sleeptimer" und dem "off" zu setzen.

Zum AddMember-Problem: ich schaue mir das an...

Und zu den Event-Meldungen von Armin: Das sieht doch eigentlich ganz gut aus. Manchmal dauert das einen Augenblick, bis sich die Melderei beruhigt hat. Aber das sollte nach spätestens ein paar Minuten erledigt sein.

Grüße
Reiner

det.

Hallo Reiner,
Danke für Deine Arbeit! Die aktuelle Developer-Version läuft bei mir ohne Probleme.
LG
det.

djhans

Hallo,
habe das jetzt so eingebaut. Läuft aber trotzdem nicht.
define Sonos_Schlafzimmer_Notify_SleeptimerOff notify Sonos_Schlafzimmer:SleepTimer.off\
set Sonos_Schlafzimmer RemoveMember Sonos_Bad;;


Der Sleeptimer ist im SchlafzimmerSonos gesetzt und im Eventlog kommt ach diese Meldung:

2014-02-03 08:43:27 SONOSPLAYER Sonos_Schlafzimmer infoSummarize3: Lautstaerke: 3 ~ Ton An ~ Balance: Mitte ~ Kein Kopfhoerer
2014-02-03 08:43:27 SONOSPLAYER Sonos_Schlafzimmer SleepTimerVersion:
2014-02-03 08:43:28 SONOSPLAYER Sonos_Schlafzimmer transportState: STOPPED
2014-02-03 08:43:28 SONOSPLAYER Sonos_Schlafzimmer SleepTimer: off


mehr aber nicht. Die o.a. Anweisung wird nicht ausgeführt.

Christian

ArminK

Hallo Reiner,

ja das beruhigt sich schon, allerdings kann ich immer noch ausser Volume up/down nicht an den Playern steuern...
Habe nochmal von der Konsole gestaret und eine Fehlermeldung entdeckt:
pi@raspberrypi /opt/fhem $ sudo perl fhem.pl fhem.cfg
pi@raspberrypi /opt/fhem $ Prototype mismatch: sub main::head: none vs ($) at ./
FHEM/00_SONOS.pm line 177
Warning, threads::shared has already been loaded.  To
enable shared variables, 'use threads' must be called
before threads::shared or any module that uses it.
Current: "fhem.pl", gPath: "./FHEM"
Current: "FHEM/00_SONOS.pm", gPath: ""
2014.02.03 08:45:56 1: SONOS0: FHEM/00_SONOS.pm is listening to Port 4711
2014.02.03 08:45:58 1: SONOS0: Connection accepted from localhost:53744
2014.02.03 08:46:09 3: SONOS1: UPnP-Thread gestartet.
2014.02.03 08:46:11 1: SONOS2: Restore-Thread gestartet. Warte auf Arbeit...
2014.02.03 08:46:12 2: SONOS1: Discover Sonosplayer 'Kche' (S3) Software Revisio
n 4.2 with ID 'RINCON_000E58F4EC2601400_MR'
2014.02.03 08:46:22 2: SONOS1: SonosPlayer 'Kueche' (S3) Software Revision 4.2 w
ith ID 'RINCON_000E58F4EC2601400_MR' is already defined and will only be updated
2014.02.03 08:46:22 2: SONOS1: SonosPlayer 'Kueche' is now updated
2014.02.03 08:46:22 2: SONOS1: Service-subscribing successful with SID="uuid:RIN

danach geht alles normal weiter, bis es sich irgendwann beruhigt wie du ja auch sagst.
Kannst Du mit dem Fehler etwas anfangen?
Raspberry Pi 3B mit fhem 5.8;1xCUL USB, 2xCUNO, 1xCUL Raspi über Fhem2Fhem, 2xHMLAN; diverse Homematic und FS20-Komponenten; 7 x Sonos-Player; diverse Eigenbauten mittels FS20 WUE, ESPEasy, MQTT, MySensors

Reinerlein

Hallo zusammen,

@djhans: Versuch doch mal die Schreibweise:

define Sonos_Schlafzimmer_Notify_SleeptimerOff notify Sonos_Schlafzimmer:SleepTimer:.off set Sonos_Schlafzimmer RemoveMember Sonos_Bad
Da ist Hauptsächlich noch ein Doppelpunkt zwischen SleepTimer und off hinzugekommen...

@Armin: Diese Meldung hatten wir schon mal. Das kann ich leider nicht nachvollziehen, da mir Prototypen bei Package-Angaben noch nicht untergekommen sind. Außerdem wird an der angemerkten Zeilennummer LWP::Simple per use-Anweisung geladen. Das sollte eigentlich auch keinen Fehler produzieren...
Was wird denn noch vor dem Modul geladen? Kannst du das mal testweise reduzieren, um Quereinflüsse auszuschließen?
Ich glaube beim letzten Mal hatte sich das durch Rechtesetzen o.ä. erledigt. Da bin ich mir aber nicht mehr so ganz sicher...

Grüße
Reiner

djhans

Hi,
keine Chance! klappt nicht. Im log steht auch nichts drin!

hier noch mal aus der fhem.cfg per cut und paste!
define SleepTimerOff notify Sonos_Schlafzimmer:SleepTimer:.off\
set Sonos_Schlafzimmer RemoveMember Sonos_Bad;;


djhans

Reinerlein

Hi djhans,

schreib es doch mal sicherheitshalber in eine Zeile, und entferne mal die Semikola am Ende der Zeile (wie in meinem Beispiel).
Nicht dass das noch stört...

Ansonsten kannst du aus dem einzelnen Punkt auch noch .* machen, dann matchen halt beliebige Anzahlen an beliebigen Zeichen zwischen SleepTimer und off...

Grüße
Reiner