Sonos steuern

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

Vorheriges Thema - Nächstes Thema

elmer

#3135
Da wird Sonos_Küche und Sonos_Wohnzimmer angezeigt.

Ich habe soeben gesehen das mir die Gruppe getrennt wurde nachdem ich mit Alexa die Musik in der Küche gestartet habe.

Ist es möglich nach jedem manuellen Start alle automatisch wieder in eine Gruppe zu packen, wenn die Wiedergabe beendet wird?

hobby_musiker

Wollte mal zu folgendem Punkt Rückmeldung geben, falls das noch den einen oder anderen betrifft:
Zitat von: hobby_musiker am 30 Dezember 2017, 18:09:37
Habe dasselbe Problem wie octek0815 und uniqueck. URL bei meiner Playlist: http://<MEINE SONOS-IP-ADRESSE>:1400/getaa?u=x-rincon-cpcontainer%3A1006206ccatalog%252fplaylists%252fB076ZT8XFT%252f%2523prime_playlist%3Fsid%3D201%26flags%3D8300%26sn%3D1

Auch bei mir sind die Cover auf dem Handy sichtbar, die URL liefert im Browser eine leere Seite (und in FHEM wird natürlich dann auch nix angezeigt).

Das Problem tritt nur (?) bei Playlists auf. Wenn ich z.B. irgendein Album von Amazon Music streame, kann ich die Covers sehen. Auch Radiosender werden angezeigt.

Irgendjemand, der das schon hinbekommen hat oder eine Idee, warum das nicht klappt?

Bei mir hat es geholfen, die Firewallsettings meines Raspi 3 wie im SONOS-Wiki beschrieben anzupassen. In dem Zusammenhang vielleicht auch für den einen oder anderen hilfreich: Die Aussage von SONOS selbst für die Firewall-Settings (https://sonos-de.custhelp.com/app/answers/detail/a_id/415/~/konfigurieren-deiner-firewall-f%C3%BCr-sonos).

hobby_musiker

#3137
Kennt ihr das? Kaum ist ein Problem gelöst, taucht das nächste auf...

Die "schwierigeren" Dinge funktionieren jetzt bei mir (vielen Dank, Reinerlein für das super Modul und die Doku dazu!):
- Abspielen einer Playlist (Amazon Music)
- Unterbrechen der Musik durch eine Sprachausgabe via espeak oder Google ("Die Waschmaschine ist fertig") :-)
- Anzeige Cover-Bild des aktuellen und nächsten Titels in der FHEM-Oberfläche (siehe screenshot FhemGUI.png)

Das (aus meiner Sicht) "einfachere" hab ich aber noch nicht hinbekommen:
Die Anzeige des aktuellen Cover-Bildes im Floorplan.

Bevor jemand fragt: Ja, ich habe ein Update gemacht und ja, ich habe dieses Forum und das Wiki durchsucht (und auch das Einsteiger-Dokument durchgelesen - wenn auch vielleicht nicht alles verstanden).

Folgendes habe ich ausprobiert:
1) FHEM-Update

2) attr Sonos_Wohnzimmer fp_Infos 10,10,1
   Ergebnis: Es wird nur der textuelle Zustand des device ausgegeben, siehe Screenshot (Floorplan.png)

3) Im SONOS-FHEMWiki gesucht, Ergebnis: Die URL zum Cover-Image steckt im Reading "nextAlbumArtURL".
   Mein Versuch, diese URL in einem Weblink zu verwenden, Code:
define CurrentAlbumArt_Wohnzimmer weblink image readingsval(Sonos_Wohnzimmer, currentAlbumArtURL, "")
ist kläglich gescheitert - das generierte HTML sieht anders aus als das von mir erhoffte, nämlich
<img src="readingsval(Sonos_Wohnzimmer, currentAlbumArtURL, " ")"="">

4) Im SONOS-FHEMWiki weiter gesucht - folgendes soll demnach funktionieren:
define NextAlbumArt_Wohnzimmer weblink image fhem/icons/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt
attr NextAlbumArt_Wohnzimmer group Wohnzimmer
attr NextAlbumArt_Wohnzimmer htmlattr width="200"
attr NextAlbumArt_Wohnzimmer room Sonos

Ergebnis: Das Verzeichnis für die Bilder existiert nicht, und selbst wenn ich dieses händisch anlege und dem Verzeichnis (rekursiv) den richtigen Besitzer und Gruppe zuweise, wird darin nichts abgelegt (ich verwende einen Raspi 3).

5) In diesem Forum gesucht, Ergebnis: der Thread https://forum.fhem.de/index.php/topic,71831.0.html samt dessen Referenz auf diesen Thread hier

Weiss grade nicht mehr weiter - hat jemand 'nen Tipp für mich? Was mache ich falsch?

Meine SONOS-Definition:
defmod Sonos SONOS localhost:4711 30 8 5
attr Sonos Speak1 wav:/usr/bin/expeak -v %language% -w %filename% "%text%"
attr Sonos getFavouritesListAtNewVersion 1
attr Sonos getListsDirectlyToReadings 1
attr Sonos getPlaylistsListAtNewVersion 1
attr Sonos room Sonos,XX.Experiment
attr Sonos targetSpeakDir /mnt/SonosSpeak
attr Sonos targetSpeakFileHashCache 1
attr Sonos targetSpeakMP3FileDir /mnt/SonosSpeak/
attr Sonos targetSpeakURL \\PCMBED07\SonosSpeak
attr Sonos verbose 1


Meine SONOSPLAYER-Device-Definition:
defmod Sonos_Wohnzimmer SONOSPLAYER RINCON_949F3E79613001400_MR
attr Sonos_Wohnzimmer alias Wohnzimmer
attr Sonos_Wohnzimmer fp_Infos 10,10,1
attr Sonos_Wohnzimmer generateInfoSummarize1 <NormalAudio><Artist prefix="(" suffix=")"/><Title prefix=" '" suffix="'" ifempty="[Keine Musikdatei]"/><Album prefix=" vom Album '" suffix="'"/></NormalAudio> <StreamAudio><Sender suffix=":"/><SenderCurrent prefix=" '" suffix="' -"/><SenderInfo prefix=" "/></StreamAudio>
attr Sonos_Wohnzimmer generateInfoSummarize2 <TransportState/><InfoSummarize1 prefix=" => "/>
attr Sonos_Wohnzimmer generateInfoSummarize3 <Volume prefix="Lautstärke: "/><Mute instead=" ~ Kein Ton" ifempty=" ~ Ton An" emptyval="0"/> ~ Balance: <Balance ifempty="Mitte" emptyval="0"/><HeadphoneConnected instead=" ~ Kopfhörer aktiv" ifempty=" ~ Kein Kopfhörer" emptyval="0"/>
attr Sonos_Wohnzimmer generateVolumeSlider 1
attr Sonos_Wohnzimmer getAlarms 1
attr Sonos_Wohnzimmer getTitleInfoFromMaster 1
attr Sonos_Wohnzimmer group Wohnzimmer
attr Sonos_Wohnzimmer icon icoSONOSPLAYER_icon-S12.png
attr Sonos_Wohnzimmer minVolume 0
attr Sonos_Wohnzimmer model Sonos_S12
attr Sonos_Wohnzimmer room EG.WoZi,Sonos
attr Sonos_Wohnzimmer simulateCurrentTrackPosition 1
attr Sonos_Wohnzimmer sortby 1
attr Sonos_Wohnzimmer stateFormat presence ~ currentTrackPositionSimulatedPercent% (currentTrackPositionSimulated / currentTrackDuration)
attr Sonos_Wohnzimmer userReadings Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, Queue:LastActionResult.*?GetQueueWithCovers.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, currentTrackPosition:LastActionResult.*?GetCurrentTrackPosition.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }
attr Sonos_Wohnzimmer verbose 5
attr Sonos_Wohnzimmer webCmd Volume

Reinerlein

Hallo hobby_musiker,

das Ablegen der Cover als lokale Datei im FHEM-Verzeichnis habe ich vor ein paar Releases standardmäßig abgeschaltet. Die meisten kommen mit den Cover-URLs aus, die im Reading stehen, und das Ablegen des Covers lokal blockiert FHEM für eine kurze Zeit...
Aktivieren kannst du das wieder mit dem Attribut "getLocalCoverArt" am Sonos-Device.

Besser wäre es aber, wenn du mit der URL auskommen würdest.
Geht denn vielleicht sowas:

define CurrentAlbumArt_Wohnzimmer weblink htmlCode { '<img src="'.ReadingsVal("Sonos_Wohnzimmer", "currentAlbumArtURL", "").'" width="100" />' }


Grüße
Reinerlein

skinny norris

Moin,
seit ein paar Tagen (Wochen?) wird der 'transportState' meiner Lautsprecher nicht mehr korrekt angezeigt. Anstelle von 'Playing' steht da beim Abspielen immer :
"transportState PAUSED_PLAYBACK"
.
Fhem is aktuell:
########################################################################################
#
# SONOS.pm (c) by Reiner Leins, January 2018
# rleins at lmsoft dot de
#
# $Id: 00_SONOS.pm 15823 2018-01-07 22:42:45Z Reinerlein $
#
# FHEM module to commmunicate with a Sonos-System via UPnP
#
########################################################################################
und
########################################################################################
#
# SONOSPLAYER.pm (c) by Reiner Leins, January 2018
# rleins at lmsoft dot de
#
# $Id: 21_SONOSPLAYER.pm 15823 2018-01-07 22:42:45Z Reinerlein $
#
# FHEM module to work with Sonos-Zoneplayers
#
# define <name> SONOSPLAYER <UDN>
#
# where <name> may be replaced by any name string
#       <udn> is the Zoneplayer Identification
#
########################################################################################

Auf den Lautsprechern ist die aktuelle Sonos FW: 8.3
#
Kennst jemand dieses "Problem" ?

hobby_musiker

Hallo Reinerlein,

Zitat von: Reinerlein am 28 Januar 2018, 21:15:17
Geht denn vielleicht sowas:

define CurrentAlbumArt_Wohnzimmer weblink htmlCode { '<img src="'.ReadingsVal("Sonos_Wohnzimmer", "currentAlbumArtURL", "").'" width="100" />' }


Vielen Dank für den Tipp! Funktioniert! (Den Trick mit '. .' kannte ich noch nicht  :) )

Jetzt muss ich nur noch die Aktualisierung des Cover-Bildes bei Änderung des currentAlbumArtURL readings hinbekommen. Hier (https://forum.fhem.de/index.php/topic,68902.0.html) steht dazu ja schon was. Ich kämpfe grade noch mit notify und DOIF rum, um einen vernünftigen Trigger zu generieren. Aber die Chancen stehen gut, das irgendwie hinzubekommen.

Vielen Dank nochmal!

Gruß hobby_musiker

trinitywhm

Ich habe seit heute hin und wieder mal folgende Meldung im Log:
Content-Length header value was wrong, fixed at /usr/share/perl5/LWP/Protocol/http.pm line 257, <$client> line 5

Ohne Zeitangabe, einfach so zwischendrin.
Es tauchte heute nach manchen Sprachansagen auf, aber nicht bei allen.

Woran liegt das und was kann ich dagegen tun?

Wuppi68

Hallo Reinerlein,


kannst Du noch eine Funktion einbauen um den Status des WLAN Ports zu bekommen? Wenn diese via Kabel angeschlossen sind bekomme ich immer wieder heftige STP Probleme und muss dann mit

http://<IP SONOS DEVICE>:1400/wifictrl?wifi=persist-off
http://<IP SONOS DEVICE>:1400/wifictrl?wifi=off


das Gelumpe entsprechend schalten ... wäre cool, wenn es aus FHEM "einfach" geht
FHEM unter Proxmox als VM

Reinerlein

Hi Wuppi,

du kannst direkt ein set aufrufen:

set PLAYER Wifi persist-off


Aber was meinst du mit "Status bekommen"?
Soweit ich weiß, gibt es keine abrufbaren Informationen dazu, oder doch?

Grüße
Reinerlein

Wuppi68

Danke :-) Hatte ich gar nicht nach geschaut, weil ich nur nach Get und den Readings geschaut habe :-)

ansonsten guck mal hier https://bsteiner.info/articles/disabling-sonos-wifi

mit http://172.17.3.118:1400/status/ifconfig bekomme ich den Status

ohne Wifi:
running /sbin/ifconfig
br0       Link encap:Ethernet  HWaddr 5C:AA:FD:C0:BE:1A 
          inet addr:172.17.3.120  Bcast:172.17.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1326527 errors:0 dropped:0 overruns:0 frame:0
          TX packets:486415 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:771293405 (735.5 MiB)  TX bytes:41972406 (40.0 MiB)

eth0      Link encap:Ethernet  HWaddr 5C:AA:FD:C0:BE:1A 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1350846 errors:0 dropped:0 overruns:0 frame:0
          TX packets:675405 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:812986349 (775.3 MiB)  TX bytes:53311806 (50.8 MiB)
          Base address:0xe000

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:317 errors:0 dropped:0 overruns:0 frame:0
          TX packets:317 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:85551 (83.5 KiB)  TX bytes:85551 (83.5 KiB)


mit Wifi:
running /sbin/ifconfig
ath0      Link encap:Ethernet  HWaddr 5C:AA:FD:44:4E:5C 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:199
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:16 Memory:c92c0000-c92e0000

br0       Link encap:Ethernet  HWaddr 5C:AA:FD:44:4E:5C 
          inet addr:172.17.3.118  Bcast:172.17.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:716515 errors:0 dropped:0 overruns:0 frame:0
          TX packets:97151 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:179580672 (171.2 MiB)  TX bytes:17906507 (17.0 MiB)

eth0      Link encap:Ethernet  HWaddr 5C:AA:FD:44:4E:5C 
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0xe000

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:882 errors:0 dropped:0 overruns:0 frame:0
          TX packets:882 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:342958 (334.9 KiB)  TX bytes:342958 (334.9 KiB)[/code

sind 2 verschiedene Player ...

die IP hat immer das Device br0 und NUR bei WiFi ist das ath0 mit in der Liste
FHEM unter Proxmox als VM

justme1968

wenn man in der sonos desktop app den about dialog aufruft steht bei den playern die wlan verwenden WM: 1, wenn sie sonos net oder kabel verwenden steht dort WM: 0. vielleicht findet sich das ja irgendwo in den infos die per api kommen?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

hobby_musiker

Hallo allerseits,

Zitat von: hobby_musiker am 29 Januar 2018, 21:16:47
Jetzt muss ich nur noch die Aktualisierung des Cover-Bildes bei Änderung des currentAlbumArtURL readings hinbekommen. Hier (https://forum.fhem.de/index.php/topic,68902.0.html) steht dazu ja schon was. Ich kämpfe grade noch mit notify und DOIF rum, um einen vernünftigen Trigger zu generieren. Aber die Chancen stehen gut, das irgendwie hinzubekommen.

Vielleicht gibt's ja noch andere, die das vielleicht interessiert - ich hab die Aktualisierung folgendermaßen gelöst:
defmod act_on_CurrentTrackChanged DOIF ([Sonos_Wohnzimmer:currentAlbumArtURL] ne "") ({fhem("trigger WEB JS:location.reload();;;;")})
attr act_on_CurrentTrackChanged checkReadingEvent 1
attr act_on_CurrentTrackChanged do always


Ist nicht ganz so elegant, weil der ganze Browser-Inhalt aktualisiert wird, funktioniert aber zuverlässig.

Gruß hobby_musiker

Wuppi68

#3147
hmmmm,

unter http://172.17.3.118:1400/xml/DeviceProperties1.xml gibt es ein paar  XML Einträge :-) in der

ServiceStateTable

<stateVariable sendEvents="yes">
<name>WirelessMode</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>WirelessLeafOnly</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>HasConfiguredSSID</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>ChannelFreq</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>BehindWifiExtender</name>
<dataType>ui4</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>WifiEnabled</name>
<dataType>boolean</dataType>
</stateVariable>
<stateVariable sendEvents="yes">
<name>ConfigMode</name>
<dataType>string</dataType>
</stateVariable>


Habe das im Songs Hauptdevice gefunden ...

Reading: ZoneGroupState da steckt das ganze für jeden Player drinnen (ich habe mal einen Player mit und ohne Wifi umformatiert

<ZoneGroups>
<ZoneGroup Coordinator="RINCON_5CAAFDC0BE1A01400" ID="RINCON_5CAAFDC0BE1A01400:2">
  <ZoneGroupMember
    UUID="RINCON_5CAAFDC0BE1A01400"
    Location="http://172.17.3.120:1400/xml/device_description.xml"
    ZoneName="Terrasse" Icon="x-rincon-roomicon:patio"
    Configuration="1"
    SoftwareVersion="40.5-49090"
    MinCompatibleVersion="39.0-00000"
    LegacyCompatibleVersion="25.0-00000"
    BootSeq="54"
    TVConfigurationError="0"
    WirelessMode="0"
    WirelessLeafOnly="0"
    HasConfiguredSSID="1"
    ChannelFreq="2437"
    BehindWifiExtender="0"
    WifiEnabled="0"
    Orientation="0"
    RoomCalibrationState="4"
    SecureRegState="3"
    VoiceState="0"/>
  </ZoneGroup>
<ZoneGroup Coordinator="RINCON_5CAAFD444E5C01400" ID="RINCON_5CAAFD444E5C01400:1">
  <ZoneGroupMember
    UUID="RINCON_5CAAFD444E5C01400"
    Location="http://172.17.3.118:1400/xml/device_description.xml"
    ZoneName="Mobil" Icon="x-rincon-roomicon:portable"
    Configuration="1"
    SoftwareVersion="40.5-49090"
    MinCompatibleVersion="39.0-00000"
    LegacyCompatibleVersion="25.0-00000"
    BootSeq="74" TVConfigurationError="0"
    WirelessMode="1"
    WirelessLeafOnly="0"
    HasConfiguredSSID="1"
    ChannelFreq="2437"
    BehindWifiExtender="0"
    WifiEnabled="1"
    Orientation="0"
    RoomCalibrationState="4"
    SecureRegState="3"
    VoiceState="0"/>
  </ZoneGroup>
</ZoneGroups>
FHEM unter Proxmox als VM

Reinerlein

Hi Wuppi,

ich habe das mal als Reading eingebaut. Kommt also mit dem nächsten Checkin von mir...

Grüße
Reinerlein

Elektrolurch

Hallo Reinerlein,

zu dem Zeitproblem und dem Beenden des Sonos-Prozess bei dem Kommando:
set Sonos_Wohnzimmer ExportSonosBibliothek  ...
Hast Du da schon einen eigenen Sub-Prozess dafür eingebaut? Ist mir vielleicht entgangen....

:-)

Ich habe mir zwar eine Suchfunktion auf dem Hash-Baum gebaut, die funktioniert auch ganz leidlich, aber eigentlich wäre eine mysql - Lösung der sauberer Ansatz. Gibts dafür - auch für die Indexierung der mp3 - Dateien schon eine fertige perl-Bibliothek?

Elektrolurch
configDB und Windows befreite Zone!