Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo Merhan,

das sieht z.B. nach Rereadcfg-Durchläufen deines Fhem aus.
Wenn du z.B. den Befehl "rereadcfg" in Fhem ausführst, dann wird die Verbindung zum SubProzess beendet. Dieser beendet vorher noch alle seine Threads, und wartet dann wieder auf eine neue Verbindung.
Diese kommt dann auch wieder, nur um gleich wieder zu verschwinden...
Dieses rereadcfg wird auch beim Speichern der fhem.cfg über das Webinterface durchgeführt (wobei das bei dir ja nicht sein kann).

Zwischendurch kam mal die Meldung, dass er fehlerhafte/nicht erkennbare UPnP-Pakete empfangen hätte, und somit den UPnP-Thread neugestartet hätte. Das passiert aber "unter der Haube", ohne das Fhem was davon mitbekommt. Das habe ich hier auch ab und zu. Ich vermute, daß das an einem Fehler in der UPnP-Library liegt, die ich da verwende...

Zur Fehlersuche könntest du den Loglevel für den SubProzess mal auf 5 hochsetzen. Dann sieht man genau, was Fhem so an den SubProzess sendet, und was dieser dann damit macht.

Grüße
Reiner

herman

Zitat von: Reinerlein am 09 Februar 2014, 23:42:05

Zur Fehlersuche könntest du den Loglevel für den SubProzess mal auf 5 hochsetzen. Dann sieht man genau, was Fhem so an den SubProzess sendet, und was dieser dann damit macht.


Hallo Reiner,

vielen Dank. Kann ich nur den Loglevel vom Subprozess hochsetzen oder hängt dieser am Loglevel von FHEM. Ich habe viele Geräte in FHEM. Wenn ich das einen Tag durchlaufen lasse im höchsten Loglevel, wird das sehr viel.

Viele Grüße,
Merhan

Reinerlein

Hallo Merhan,

du kannst am Sonos-Device das "verbose"-Attribut auf 5 setzen. Dann fehlen uns nur die ersten paar Zeilen, bis Fhem sich mit dem von ihm gestarteten Prozess verbunden hat.
Das sollte aber nicht weiter wichtig sein. Das Problem tritt ja später auf...

Grüße
Reiner

djhans

Hallo Reiner,
ich glaube ich komme so langsam dahinter, wann es zu den fhem Abstürzen aufgrund des Sonos-Moduls kommt.

Habe heute zum Testen den Bad Sonos vom Bad in eine andere Etage getragen. Der Bad-Sonos war zuvor in einer Gruppe mit dem Schlafzimmer.

Nachdem nun der Bad Sonos im DG wieder angeschlossen war, hat fhem diesen auch sauber als "appeared" erkannt. Aber steuern lässt er sich nicht. ein einfaches set Sonos_Bad Stop brachte das Sytsem zum Totalabsturz (Stecker am raspberry ziehen).

Geräte aus einer bestehenden Gruppenkonfiguration vom Strom zu trennen, mag das Sonos-Modul offenbar nicht.
Nach dem Löschen der fhem.save war alles wieder ok.

Christian

Reinerlein

Hallo Christian,

das kann ich ja bei mir mal nachstellen, und schauen, ob ich das Problem dann sehe...
Ich vermute das Problem ja dann, wenn es der Master ist, den du auf diese Art wegreißt. Dann versucht das Modul bestimmt immer noch alles an den nicht vorhandenen Player zu senden...

Eigentlich sollte die Abwesenheitserkennung des Moduls das beheben. Ich hatte da Code eingebaut, der dem Sonos-System mitteilt, dass ein Player nun weg ist (wenn er nicht gerade der Letzte seiner Art war :-). Daraufhin sollte dieser Player aus den Controllern verschwinden, und eigentlich sollte Sonos auch die Gruppenkonstellationen bereinigen können... Das tut es aber anscheinend doch nicht wie gewollt...

Danke schon mal für die Info...

Grüße
Reiner

djhans

Hi Reiner,
der Bad_Player ist nicht der Master. Das ist das Schlafzimmer.

btw.
seit der Aktioo ist das System irgendwie durcheinander....ich bekomme ene perl-Meldung auf der Debian Console "out of Memory" und fhem ist weg. Habe mir leider nicht gemerkt, welche module das waren... Beim nächsen mal poste ich das.

Christian.

djhans

...und noch etwas verstehe ich nicht:

warum spielt er das Radioprogramm nicht ab? Wo ist der Fehler in meinem Script? Einzeln funktioneiren die BEfehle in der Eingabemaske vom fhem Web-Interface, z.B. {fhem "set Sonos_Bad LoadRadio WDR2%20Ruhrgebiet"}

define Sonos_Bad_Appeared_Notify notify Sonos_Bad:presence:.appeared { \
fhem "set Sonos_Bad LoadRadio WDR2%20Ruhrgebiet";; \
fhem "set Sonos_Bad Volume 15";; \
fhem "set Sonos_Bad Play" \
}


Logfile:
014-02-10 12:37:53 SONOSPLAYER Sonos_Bad presence: disappeared
2014-02-10 12:37:53 SONOS Sonos ZoneGroupState:
2014-02-10 12:37:53 SONOS Sonos ZoneGroupState:
2014-02-10 12:37:53 SONOS Sonos ZoneGroupState:
2014-02-10 12:37:53 SONOS Sonos ZoneGroupState:
2014-02-10 12:37:53 SONOS Sonos ZoneGroupState:
........
2014-02-10 12:38:06 SONOSPLAYER Sonos_Bad presence: appeared
2014-02-10 12:38:06 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:06 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:06 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:06 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:06 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:06 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:07 FHEMWEB FHEMWEB:192.168.1.50:54905 rereadicons
2014-02-10 12:38:07 FHEMWEB FHEMWEB:192.168.1.50:54909 rereadicons
2014-02-10 12:38:07 FHEMWEB FHEMWEB:192.168.1.50:54928 rereadicons
2014-02-10 12:38:08 FHEMWEB FHEMWEB:192.168.1.50:54931 rereadicons
2014-02-10 12:38:08 FHEMWEB FHEMWEB:192.168.1.50:54961 rereadicons
2014-02-10 12:38:09 FHEMWEB FHEMWEB:192.168.1.50:54962 rereadicons
2014-02-10 12:38:09 FHEMWEB WEB rereadicons
2014-02-10 12:38:09 FHEMWEB WEBphone rereadicons
2014-02-10 12:38:10 FHEMWEB WEBtablet rereadicons
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad currentAlbumArtURI: ./www/images/default/SONOSPLAYER/Sonos_Bad_AlbumArt.png
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad numberOfTracks: 0
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad currentTrack: 0
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad currentTrackURI:
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad currentAlbumArtist: STOPPED
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad currentNormalAudio: 1
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad infoSummarize1: [Keine Musikdatei]
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad infoSummarize2: STOPPED => [Keine Musikdatei]
2014-02-10 12:38:10 SONOSPLAYER Sonos_Bad STOPPED => [Keine Musikdatei]
2014-02-10 12:38:10 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:11 FHEMWEB FHEMWEB:192.168.1.50:54905 rereadicons
2014-02-10 12:38:11 FHEMWEB FHEMWEB:192.168.1.50:54909 rereadicons
2014-02-10 12:38:11 FHEMWEB FHEMWEB:192.168.1.50:54928 rereadicons
2014-02-10 12:38:12 FHEMWEB FHEMWEB:192.168.1.50:54931 rereadicons
2014-02-10 12:38:12 FHEMWEB FHEMWEB:192.168.1.50:54961 rereadicons
2014-02-10 12:38:12 FHEMWEB FHEMWEB:192.168.1.50:54962 rereadicons
2014-02-10 12:38:12 FHEMWEB WEB rereadicons
2014-02-10 12:38:13 FHEMWEB WEBphone rereadicons
2014-02-10 12:38:13 FHEMWEB WEBtablet rereadicons
2014-02-10 12:38:13 SONOSPLAYER Sonos_Bad LastActionResult: LoadRadio: Radio "WDR2presence:" not found. Choose one of: "1LIVE - Das junge Radio des WDR.","Antenne Unna","NDR 2","WDR 2 Dortmund -alternativ-","WDR Event","WDR2 Ruhrgebiet","hr3"
2014-02-10 12:38:13 SONOSPLAYER Sonos_Bad LastActionResult: SetVolume: 15
2014-02-10 12:38:13 SONOSPLAYER Sonos_Bad LastActionResult: Play: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2014-02-10 12:38:13 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:13 SONOS Sonos ZoneGroupState:
2014-02-10 12:38:13 SONOSPLAYER Sonos_Bad currentSender:
2014-02-10 12:38:13 SONOSPLAYER Sonos_Bad currentStreamAudio:


djhans

JoeALLb

Hallo Hans,

ich habe das selbe Phänomen: Wenn ich jedoch davor ein Sleep einfüge, gehts bei mir.
Dabei dürfte es sich gar nicht um das sleep ansich handeln, bei mir wird hier einfach die erste Zeile ansich ignoriert, mit wgal welchem Inhalt.
Was Du aber noch prüfen solltest:
Im notify wird das % zeichen escaped.
also %%20 statt %20.
Vielleicht reicht dieser eine Schritt bei Dir schon aus?

Beispiel
define Sonos_Bad_Appeared_Notify notify Sonos_Bad:presence:.appeared { \
sleep 0.1;;\
fhem "set Sonos_Bad LoadRadio WDR2%%20Ruhrgebiet";; \
fhem "set Sonos_Bad Volume 15";; \
fhem "set Sonos_Bad Play" \
}
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Reinerlein

Hi Hans,

JoeALLb hat bzgl des %-Zeichens recht. Das ist auch in deinem Log-Auszug zu sehen, wo das Modul versucht den Sender "WDR2presence:" zu laden. Den dürfte es so nicht geben :-)

Das mit dem sleep sollte nicht notwendig sein, ist aber trotzdem einen Versuch wert, da Fhem bei einem Sleep die Ausführung real unterbricht. Da kann also zwischendurch was anderes verarbeitet werden...

Zu dem Absturzproblem: OK, ich werde das versuchen nachzustellen...
Das mit dem Out of memory wurde hier schon des öfteren gemeldet. Eine Lösung dazu wurde, meines Wissens nach, leider noch nicht entdeckt... ich selber hatte das Phänomen noch nicht...

Grüße
Reiner

djhans

Hi,
jep! Das war es! Meine Güte!
Noch einmal zum Verstehen! Warum wird es hier weggeschmissen und wenn ich es direkt als BEfehl eingeben nicht?

Danke,
djhans

JoeALLb

Anbei mein Versuch der Erklärung ;-)

In der Kommandozeile wird der befehl nicht von perl interpretiert und muss daher nicht escaped werden.
Im Notify steht der Befehl in " und wird von Perl daher interpretiert. mit % kann ich eine Variable oder einen Hash im text einbinden.
Damit dies jedoch nicht als Programmiersprachenelement, sondern als Zeichen erkannt wird, muss innerhalb von "" das zeichen doppelt geschrieben werden.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Reinerlein

Hi JoeALLb,

es ist viel einfacher: Der Befehl "notify" ersetzt einfach einige Platzhalter, bevor der Code ausgeführt wird.
Z.B. wird das %-Zeichen durch das Event ersetzt.

Siehe dazu auch http://fhem.de/commandref.html#notify

Grüße
Reiner

djhans

Hallo,
Besten Dank, dann ist das in Verbindung mit dem notify so. Wenn ich ein normales at *15:00:00 mache, braucht man das doppelte % nicht....

Aber mal eine andere Frage:
Hat jemand eine Idee, wie man im Schlafzimmer einen SleepTimer programmieren kann, den man über die Tasten am Sonos einstellt (z.B. je Tastendruck +10min)? Seit der Play-Funktion über den "Mute" Button ist das sicherlich in der Form nicht mehr möglich! VolUp und VolDown würde sich auch auf die Lautstärke auswirken.

Ich würde das ja auch mit einem Lichtschalter machen und dafür zwei Wippen reservieren. Habe aber noch keine geeigneten Schalter gefunden, die in einem Std.-55-Rahmen 3 oder 4 Doppelwippen unterbringen können, so wie es bei den KNX-Schaltern von Gira der Fall ist...

Gruß
djhans

Reinerlein

Hi Christian,

du könntest die Up/Down-Buttons in gleicher Zahl aber verschiedener Reihenfolge verwenden, oder mit einer kleinen Lautstärkeänderung leben...

z.B.:
- 2:DU
Timer anschalten
- 2:UD
Timer zzgl. 10 Minuten

Wenn du dann DUD drückst, kommst du nicht nur durcheinander, sondern hast auch einen um 10 Minuten verlängerten Timer :-)

Grüße
Reiner

herman

Hallo Reiner,

ich habe den Loglevel des Sonosthread auf 5 gesetzt. Das System lief jetzt seit 24h. Vor einigen Minuten habe ich gemerkt, dass das FHEM hängt. Der Sonos-Thread gibt weiter Nachrichten auf der Konsole aus, wenn sich am Sonos was ändert.

ps -aux liefert folgende Prozessinfos

fhem     28995  3.4  8.5  44028 38464 ?        S    Feb09  50:22 perl fhem.pl fhem.cfg
fhem     28996  1.0  6.6  52288 29936 ?        Sl   Feb09  15:31 perl FHEM/00_SONOS.pm 4711 3

wobei die CPU-Auslastung konstant ist. Auf Telnet oder Web-Anfragen reagiert FHEM nicht.
Ohne Neustart hörte das Hängen auf.  An folgendem Log-Ausschnitt kann man das hängen sehen:


2014.02.10 22:47:26 4: SONOS0: Transport-Event: Bilder-Download: SONOS_DownloadReplaceIfChanged('http://192.168.3.19:1400/getaa?u=x-rincon-mp3radio%3a%2f%2fwww.laut.fm%2ftangomatrix&v=1', './www/images/default/SONOSPLAYER/Sonos_Wohnzimmer_NextAlbumArt.ERROR');
2014.02.10 22:47:26 4: SONOS0: Couldn't retrieve file "http://192.168.3.19:1400/getaa?u=x-rincon-mp3radio%3a%2f%2fwww.laut.fm%2ftangomatrix&v=1" via web. Trying to copy directly...
2014.02.10 22:47:26 4: SONOS0: Couldn't even copy file "http://192.168.3.19:1400/getaa?u=x-rincon-mp3radio%3a%2f%2fwww.laut.fm%2ftangomatrix&v=1" directly... exiting...
2014.02.10 22:47:26 5: SONOS0: Received from UPnP-Server: 'SetCurrent:nextTitle:tangomatrix'
2014.02.10 22:47:26 5: SONOS0: Received from UPnP-Server: 'CurrentBulkUpdate:RINCON_000E58A9DED201400_MR'
2014.02.10 23:04:39 1: 192.168.3.11:1000 disconnected, waiting to reappear
2014.02.10 23:04:39 1: HMLAN_Parse: HMLAN1 new condition disconnected
2014.02.10 23:04:39 5: SONOS0: Received from UPnP-Server: 'GetReadingsToCurrentHash:RINCON_000E58A9DED201400_MR:1'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TransportState:PLAYING'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'SetCurrent:CrossfadeMode:0'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'SetCurrent:NumberOfTracks:2'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'SetCurrent:Track:1'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackURI:http://stream.laut.fm:80/tangomatrix'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'SetCurrent:TrackDuration:0:00:00'
2014.02.10 23:04:40 5: SONOS0: Received from UPnP-Server: 'ProcessCover:RINCON_000E58A9DED201


Vielleicht liegt es gar nicht am Sonos sondern an meinem HM-LAN Adapter. zwischen 22:47 und 23:04 war das System nicht erreichbar.
Die Ausgabe der Konsole habe ich mal angehängt.

Erkennst Du etwas am Sonos-Modul oder soll ich in Richtung HM weiter suchen.
Vielen, vielen Dank!

Grüße,
Merhan