[gelöst] Ausgabeprobleme mit Sonos Speak

Begonnen von tfriedrich85, 27 Januar 2022, 21:46:07

Vorheriges Thema - Nächstes Thema

tfriedrich85

Hallo zusammen,

ich habe in der ganzen Wohnung Sonos-Speaker verteilt und kann diese auch fast immer über Fhem steuern.
Nun zum Problem ungefähr alle 2 Tage verliert das Fhem Modul Sonos die Verbindung zu den Lautsprechern. Das Problem ist bekannt und auch schon häufig diskutiert.

Dafür habe ich einen manuellen work-around gefunden, den ich gerne automatisieren würde.

Wenn ich über die Fhem Oberfläche im Sonos - Device auf "Def" klicke und ohne Veränderungen vorzunehmen danach zum Besätigen auf "modify Sonos" ist das Problem für die nächsten 2 Tage behoben. Kann man diese manuellen Schritte irgendwie automatisieren?

Vielen Dank

Otto123

Ja geht mW auch anders, so in der Art hat es bei mir funktioniert
defmod di_SonosCheck DOIF ([05:00] and [?Sonos] ne "opened" )(attr Sonos disable 1)(attr Sonos disable 0)
attr di_SonosCheck disable 1
attr di_SonosCheck do always
attr di_SonosCheck wait 0,10


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

KölnSolar

z.B. täglich 1 Uhr define Reset_Sonos at *01:00:00 defmod DeinSonosdevice SONOS SonosParameters

Besser wär natürlich die Ursache zu lösen.

Ich hätte persönlich Interesse daran, dass ein SONOS.Nutzer mein UPnP-Paket testen würde.

Läuft es überhaupt gleichzeitig ? Welche technischen Probleme(evtl. FHEM Absturz,-Blockierungen) ?
Evtl. ließe sich dort ein Grund erkennen, dass die Verbindung verloren geht. Vermutlich wenigstens den Problemzeitpunkt, so dass der workaround mit einem notify anstatt dem zyklischen at angestoßen werden kann.

Grüße Markus

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

tfriedrich85

Zitat von: Otto123 am 27 Januar 2022, 22:17:19
Ja geht mW auch anders, so in der Art hat es bei mir funktioniert
defmod di_SonosCheck DOIF ([05:00] and [?Sonos] ne "opened" )(attr Sonos disable 1)(attr Sonos disable 0)
attr di_SonosCheck disable 1
attr di_SonosCheck do always
attr di_SonosCheck wait 0,10


Gruß Otto

Danke Otto,

ich probier schon eine Weile herum um die Ursache zu finden und hab auch schon sämtliche Hinweise aus dem Forum ausporbiert. Am meisten hat Used IP gebracht, nur die IPs  der Sonos Lautsprecher verwenden.
In dieser Formusdiskussion finde ich das Verhalten vergleichbar: https://forum.fhem.de/index.php/topic,46058.0.html
Das Sonos Device steht immernoch auf "Open" aber die Player sind nicht mehr erreichbar und damit funtkioniert auch Speak nicht mehr.





List Sonos


Internals:
   DEF        localhost:4711 30 1 5
   DELAYTIME  5
   DeviceName localhost:4711
   FD         13
   FUUID      5cd59b7f-f33f-aed9-81f5-5410c8ea48d9d36b
   INTERVAL   30
   NAME       Sonos
   NOTIFYDEV  global
   NR         621
   NTFY_ORDER 50-Sonos
   PARTIAL   
   STATE      opened
   TYPE       SONOS
   WAITTIME   1
   READINGS:
     2022-01-28 07:27:19   AllPlayer       ['Sonos_Bad','Sonos_KiZ','Sonos_Kueche','Sonos_Schlafzimmer','Sonos_Wohnzimmer']
     2022-01-28 07:27:19   AllPlayerCount  5
     2022-01-28 07:27:19   AllPlayerNotBonded ['Sonos_Bad','Sonos_KiZ','Sonos_Kueche','Sonos_Schlafzimmer','Sonos_Wohnzimmer']
     2022-01-28 07:27:19   AllPlayerNotBondedCount 5
     2022-01-28 11:14:35   LastProcessAnswer 1643364875
     2021-01-18 10:07:20   LineInPlayer    []
     2021-01-18 10:07:20   LineInPlayerList
     2021-01-18 10:07:20   LineInPlayerListAlias
     2022-01-28 07:27:19   MasterPlayer    ['Sonos_Bad','Sonos_KiZ','Sonos_Kueche','Sonos_Schlafzimmer','Sonos_Wohnzimmer']
     2022-01-28 07:27:19   MasterPlayerCount 5
     2022-01-28 11:06:42   MasterPlayerNotPlaying ['Sonos_Bad','Sonos_KiZ','Sonos_Kueche','Sonos_Schlafzimmer','Sonos_Wohnzimmer']
     2022-01-28 11:06:42   MasterPlayerNotPlayingCount 5
     2022-01-28 11:06:42   MasterPlayerPlaying []
     2022-01-28 11:06:42   MasterPlayerPlayingCount 0
     2022-01-27 23:05:40   MusicServicesList {'232' => {'IconRoundURL' => 'http://sonos-logo.w...
...

Attributes:
   DbLogExclude .*
   event-on-change-reading AllPlayer;state;Type
   event-on-update-reading myStatus
   getFavouritesListAtNewVersion 1
   getListsDirectlyToReadings 1
   getPlaylistsListAtNewVersion 1
   getQueueListAtNewVersion 1
   getRadiosListAtNewVersion 1
   pingType   tcp
   room       Sonos
   targetSpeakDir /opt/fhem/SonosSpeak
   targetSpeakFileTimestamp 1
   targetSpeakMP3FileDir /opt/fhem/SonosSpeak
   targetSpeakURL \\192.168.178.101\SonosSpeak
   usedonlyIPs 192.168.178.30,192.168.178.110,192.168.178.51,192.168.178.71,192.168.178.70,192.168.178.67,192.168.178.100,
   verbose    2


Otto123

#4
oK dann kannst Du wirklich bloß jede Nacht reset machen. Entweder mit disabled oder Du hast ja probiert mit der DEF, da kannst Du Markus seinen Vorschlag nehmen. defmod macht genau das.
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

Elektrolurch

Ich hatte auch das Problem, attr Sonos disable 1 1 x Tag hilft da.
configDB und Windows befreite Zone!

tfriedrich85

Zitat von: KölnSolar am 27 Januar 2022, 22:19:24
z.B. täglich 1 Uhr define Reset_Sonos at *01:00:00 defmod DeinSonosdevice SONOS SonosParameters

Grüße Markus

Das hab ich so implementiert und warte mal die nächsten Tage ab, was so passiert. Danke euch

tfriedrich85

Zitat von: Otto123 am 27 Januar 2022, 22:17:19
Ja geht mW auch anders, so in der Art hat es bei mir funktioniert
defmod di_SonosCheck DOIF ([05:00] and [?Sonos] ne "opened" )(attr Sonos disable 1)(attr Sonos disable 0)
attr di_SonosCheck disable 1
attr di_SonosCheck do always
attr di_SonosCheck wait 0,10


Gruß Otto

@ Otto: Ich hätte noch mal eine ganz andere Frage, weis aber nicht genau wo ich sie am besten platzieren soll.

Ich müchte in der MyUtils mir eine Funktion bauen die ich zum dimmen verwenden kann, aber dazu müsste ich irgendwie auf eine Time.lib zugreifen, damit ich sagen kann starte bei 0% Helligkeit, nach 5 sekunden gehe auf 5% nach weiteren 5 Sekunden....
Gibts da irgendeine Mötlichkeit auf die Systemzeit o.ä. zuzugreifen?

Danke dir.

Otto123

Hi,
ich weiß zwar nicht genau, was Du mit Time.lib meinst. Aber in der myUtils ist Perl, da gibt es z.B. time() die fortlaufende Zeit seit dem 1.1.1970 siehe
https://perldoc.perl.org/functions/time
localtime() liefert die Systemzeit.

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

tfriedrich85

Zitat von: Otto123 am 28 Januar 2022, 23:00:49
Hi,
ich weiß zwar nicht genau, was Du mit Time.lib meinst. Aber in der myUtils ist Perl, da gibt es z.B. time() die fortlaufende Zeit seit dem 1.1.1970 siehe
https://perldoc.perl.org/functions/time
localtime() liefert die Systemzeit.

Gruß Otto
die localtime() kenne ich, aber kann ich damit sowas wie ein delay(2000) machen um 2 Sekunden zu warten um danach den nächsten Befehl auszuführen?

Danke dir!

Otto123

#10
Das Problem in myUtils ist: Du könntest einfach Perl sleep() verwenden, aber der gesamte Vorgang blockiert FHEM.

andere Idee dazu:
defmod Button_Dim_notify notify MQTT2_mqtt2c:FB12_Btn_02:.trigger:.Long_.*|MQTT2_mqtt2c:FB12_Btn_01:.trigger:.Long_.* { \
if ( $EVENT =~ /Btn_02/ ) { fhem("set HUEGroup4 dimUp") };;\
if ( $EVENT =~ /Btn_01/ ) { fhem("set HUEGroup4 dimDown") }\
}
attr Button_Dim_notify disabledAfterTrigger 6
disabledAfterTrigger verhindert die nächste Stufe für die Zeit von 6 sekunden

Ich habe was anderes in der sonos2mqttUtils verwendet:
for (1..$d) { my $nvol = $arr[1] + $_*$s; fhem("sleep $_;set $NAME volume $nvol") }
hier verwende ich FHEM sleep für die nächste Stufe. FHEM sleep blockiert nicht. ;)

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

Benni

#11
Zitat von: Otto123 am 29 Januar 2022, 00:07:04
FHEM sleep blockiert nicht. ;)

Aber nur, wenn auf das Sleep, so wie von dir dargestellt direkt ein weiteres Kommando folgt. Alleinstehend würde es sehr wohl blockieren ;)

Ich nutze das übrigens in meinen MyUtils auch so, wenn ich eine Verzögerung o.ä. brauche, da ich zu bequem bin, das über das zugrundeliegende Timerhandling selbst zu machen.

Es müsste sogar so etwas funktionieren:


fhem("sleep 5;{ mySubSomewhere('blah') }");


also perl-Code als nachfolgender Befehl.

gb#

Otto123

ZitatAlleinstehend würde es sehr wohl blockieren ;)
allerdings mit Ansage, im Gegensatz zum Perl sleep. Man bekommt einen entsprechenden Hinweis im Log.
Zitat von: Benni am 29 Januar 2022, 06:56:54
Es müsste sogar so etwas funktionieren:
Dazu hat Rudi vor einiger Zeit mal gesagt: die Mischung von FHEM Befehlstypen in einer Kommandozeile kann funktionieren, kann aber auch zu eigenartigen Ergebnissen führen - siehe letzten Satz hier https://fhem.de/commandref_DE.html#command

Aber ich verwende es auch öfters :)
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

Benni

Zitat von: Otto123 am 29 Januar 2022, 10:36:25
Rudi vor einiger Zeit mal gesagt: die Mischung von FHEM Befehlstypen in einer Kommandozeile kann funktionieren, kann aber auch zu eigenartigen Ergebnissen führen - siehe letzten Satz hier https://fhem.de/commandref_DE.html#command

Danke für den Hinweis!

Das habe ich tatsächlich an einigen stellen seit langem, ohne Probleme in Verwendung. Kommt aber jetzt auf meine Überarbeitungsliste, die ich gerade abarbeite :)

gb#

Otto123

rein vom Gefühl her würde ich sagen: die Kombination von - sleep xxx; ein beliebiger FHEM Befehlstyp - ist ok.  ;)
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