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
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
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 (https://forum.fhem.de/index.php/topic,118837.0.html) 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
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 (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
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.
Ich hatte auch das Problem, attr Sonos disable 1 1 x Tag hilft da.
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
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.
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
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!
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. ;)
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#
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 :)
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#
rein vom Gefühl her würde ich sagen: die Kombination von - sleep xxx; ein beliebiger FHEM Befehlstyp - ist ok. ;)
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
Besser wär natürlich die Ursache zu lösen.
Ich hätte persönlich Interesse daran, dass ein SONOS.Nutzer mein UPnP-Paket (https://forum.fhem.de/index.php/topic,118837.0.html) 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
Danke Markus: Dein Vorschlag läuft seit einigen Tagen gut.