Sonos steuern

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

Vorheriges Thema - Nächstes Thema

Elektrolurch

Hallo Reinerlein,

vielleicht kannst Du ja was damit anfangen:2015.11.15 18:16:24 1: PERL WARNING: Use of uninitialized value $device in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.
2015.11.15 18:16:24 1: PERL WARNING: Use of uninitialized value $device in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.
2015.11.15 18:16:24 1: PERL WARNING: Use of uninitialized value $device in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.
2015.11.15 18:16:24 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 3620.
2015.11.15 18:16:24 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.
2015.11.15 18:16:24 1: PERL WARNING: Use of uninitialized value $device in concatenation (.) or string at ./FHEM/00_SONOS.pm line 447.

Das geht dann noch so eine Zeit weiter...

Ich habe ja jetzt auch noch ein Sonos-Stereo - Pärchen und wenn ich dass ausschalte, kommen jetzt eine Zeitlang die obigen Meldungen.
Sonos_Arbeitszimmer
Sonos_Arbeitszimmer_RF

das RF wurde nach dem Paaren automatisch erzeugt.
Vielleicht kannst Du ja Dir einen Reim drauf machen und die perl-Warnungen  abfangen.

Bei mir klappt das immer noch nicht:

set Sonos_Wohnzimmer PlayURI Sonos_Wohnzimmer
sollte ja den externen Eingang dann abspielen. Die laufende Musik wird auch unterbrochen, der Player bleibt aber stumm, obwohl der angeschlossene Sat-Receiver ein Tonsignal liefert.
Wird der Player zusammen mit dem Sat-Receiver eingeschaltet, so schaltet der Player automatisch auf die externe Quelle um.
Nur mit dem Befehl klappt das nicht.
Muss da nicht ev. doch eine echte URL angegeben werden? Wie kann ich das debuggen?

Gruß

Elektrolurch
:-[
configDB und Windows befreite Zone!

raspklaus

#2221
Hallo,

ich habe doch

attr Sonos targetSpeakMP3FileDir /media/SonosMP3

laut Wiki eingerichtet. Ich möchte ja nicht viel mit Sonos machen, nur etwa 15 Nachrichten im mp3 Format abspielen

Wenn ich :

set Sonos_Buero PlayURITemp \\192.200.100.95\RemovalBlack.mp3 50

eingebe passiert auch nichts. Im Log steht dann:

2015.11.15 19:24:49 0: SONOS1: URI: RemovalBlack.mp3
2015.11.15 19:24:49 0: SONOS1: Meta: <DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="" parentID="" restricted="true"><dc:title></dc:title><upnp:class>object.item.audioItem.musicTrack</upnp:class><desc id="cdudn" nameSpace="urn:schemas-rinconnetworks-com:metadata-1-0/">RINCON_AssociatedZPUDN</desc></item></DIDL-Lite>
2015.11.15 19:26:52 1: PERL WARNING: Use of uninitialized value within @params in join or string at ./FHEM/00_SONOS.pm line 2008.



Reinerlein

Hallo,

@ElektroLurch: Das sollte schon stimmen... ich versuche das mal bei mir nachzustellen...

@raspklaus: Nochmal: Die Wiedergabe von PlayURITemp sagt dem Player, was er abspielen soll. Das bedeutet, dass der Player auf die Datei zugreifen können muss. Eine Datei, die irgendwo im Filesystem deiners Fhem-Rechners liegt, kann nicht vom Player aus erreicht werden. Du musst diese als Windows-Freigabe veröffentlichen. Das hast du mittels Samba ja für den Ordner /media/SonosSpeak auch gemacht. Nur eben nicht für den Ordner /media/SonosMP3.

Die Angabe von targetSpeakMP3FileDir ist für das Modul die Stelle, an der die einzubettenden MP3-Dateien zu finden sind. Das ist noch nichtmal notwendig, da man beim Einbetten auch den kompletten Pfad angeben kann.
Was das Modul dann daraus macht, ist eine einzige Sprachdatei zusammenkopieren aus den einzelnen Google-Bestandteilen und den angegebenen MP3-Dateien. Die Zieldatei liegt dann unter targetSpeakDir, und muss dann über die Samba-Freigabe ansprechbar sein.

Hast du mein Beispiel mal versucht?

Grüße
Reiner

raspklaus

Dein Beispiel funktioniert. Nur enthält z.B. RemovalBlack.mp3 schon die gesamte Sprachausgabe:

"Morgen wird die Restmülltonne geleert"

und nur diese Ausgabe möchte ich haben. ok, das ganze geht mit:

set Sonos_Buero Speak 45 de |RemovalBlack.mp3|.

Ich habe aber folgendes Notify

Removal4Sonos {
my $message = "Removal";
if (ReadingsVal("RemovalBlack", "state", "") eq "on") {$message .= "Black"};
if (ReadingsVal("RemovalBrown", "state", "") eq "on") {$message .= "Brown"};
if (ReadingsVal("RemovalBlue", "state", "") eq "on") {$message .= "Blue"};
if (ReadingsVal("RemovalYellow", "state", "") eq "on") {$message .= "Yellow"};
if ($message ne "Removal")
  {fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp ".$message.".mp3 35")}
}


und message enthält den Namen des Removals und die soll dann ausgegeben werden.




Reinerlein

Hallo ElektroLurch,

ich habe das mal gerade näher untersucht. Bei mir klappt das mit dem Umschalten auf den Line-In auf meinem Sonos:Connect. Prinzipiell also OK... jetzt müssen wir mal herausfinden, was genau bei dir los ist :)

Ich habe auch mal die Fehlermeldung untersucht. Du sagtest, es gibt nun ein neues Device mit "_RF". Gibt es vielleicht noch Reste vom alten Device?
Der Fehler tritt im HTML-Code-Generator für die Readingsgroup auf der Oberfläche auf. Es scheint kein gültiges Devices mehr zu geben. Das kling nach einer Readingsgroup, die noch da ist, dessen Fhem-Device aber verschwunden oder umbenannt wurde...

Aber ich habe keine Ahnung, warum er überhaupt ein neues Device angelegt hat, obwohl es bereits eines mit dieser RINCON-Kennung gab. Der Name (des Fhem-Devices) sollte eigentlich wurscht sein... ich untersuche die entsprechende Stelle aber nochmal...

Grüße
Reiner

Ralli

#2225
Hallo,

unabhängig von dem Problem mit nicht fortgesetzten Radiostreams nach einem PlayURITemp hatte ich nun zwei mal folgendes Phänomen nach Ausführung des folgende DOIF:


([04:00])
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER Stop)
((set Sonos Groups [Sonos_Bad], [Sonos_Esszimmer], [Sonos_Kind1], [Sonos_Schlafzimmer], [Sonos_Kind2]))
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER Volume 10)
(set Sonos_.*:FILTER=TYPE=SONOSPLAYER LoadRadio SWR3)
(set Sonos_Kind1 LoadRadio KiRaKa%20-%20KiRaKa%20-%20Der%20KinderRadioKanal%20des%20WDR.)
(set Sonos_Kind2 LoadRadio KiRaKa%20-%20KiRaKa%20-%20Der%20KinderRadioKanal%20des%20WDR.)



Out of memory!
Perl exited with active threads:
2 running and unjoined
1 finished and unjoined
0 running and detached
2015.11.16 04:00:37 1: SONOS0: Nothing could be read from TCP-Channel (the first level) even though the Read-Function was called.


Ich verwende die Versionen

00_SONOS.pm          9014 2015-08-02 12:53:12Z rleins
21_SONOSPLAYER.pm    9014 2015-08-02 12:53:12Z rleins
Gruß,
Ralli

Proxmox 8.4 Cluster mit HP ED800G2i7, Intel NUC11TNHi7+NUC7i5BNH, virtualisiertes fhem 6.4 dev, virtualisierte RaspberryMatic (3.83.6.20250705) mit HB-RF-ETH 1.3.0 / RPI-RF-MOD, HM-LAN-GW (1.4.1) und HMW-GW, FRITZBOX 7490 (07.59), FBDECT, Siri und Alexa

Christoph

Falls sich jemand günstig  ;D einen Sonos Sub zulegen will, bei Schäfer Shop gibts den Sub für 605,71 € im Angebot.
Mit Newsletteranmeldung sind noch mal 10 Euro drin...

Loredo

Aus für mich aktuellem Anlass:


Hier ein kleines Shellscript, um das /mnt/SonosSpeak Cache Verzeichnis von Dateien zu befreien, die FHEM längere Zeit nicht abgespielt hat (in diesem Fall länger als 75 Tage):


https://gist.github.com/jpawlowski/689d1cf74334488cd127
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Reinerlein

Hi Loredo,

danke für das Skript. Darf ich das in das Wiki übernehmen?

Grüße
Reiner

CQuadrat

Zitat von: Loredo am 16 November 2015, 13:25:47
Hier ein kleines Shellscript, um das /mnt/SonosSpeak Cache Verzeichnis von Dateien zu befreien, die FHEM längere Zeit nicht abgespielt hat (in diesem Fall länger als 75 Tage):

Aber warum nicht folgenden Einzeiler in die Crontab?

<m> <h>  <dom> <mon> <dow> find /mnt/SonosSpeak -name "RINCON*" ! -atime -75 -delete


Gut, ich sehe nicht, was gelöscht wird. Aber ist das von Interesse?
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), MQTT, SONOS (div. Gimmicks), OneWire, Hue

Loredo

#2230
An Find hatte ich gar nicht gedacht, es gibt wie immer viele Lösungen.

Da kann ich aber auch zurück klugsch***  ;D
Natürlich geht das auch mit find  ;)


find /mnt/SonosSpeak -name "RINCON*" ! -atime -75d -exec rm -v {} \;





Edit: Klar Reinerlein. Das Script oder den Einzeiler, was beliebt.  :)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rapster

Hallo Reiner,

ich habe zurzeit Empfangsprobleme bei einem SONOS-Player über das SONOSNET
In einem solchen Fall scheint das SONOS Modul leider komplett zu sterben und auch die Kommunikation mit den restlichen Playern einzustellen.
Der Subprozess läuft allerdings noch...  :-\

Error loading SCPD document: Connection timed out at ./FHEM/00_SONOS.pm line 4902 thread 1.
Error loading SCPD document:  at ./FHEM/00_SONOS.pm line 4931 thread 1.
Loading device description failed with error: 500 Can't connect to 192.168.1.150:1400 at ./FHEM/00_SONOS.pm line 3590 thread 1.
2015.11.21 12:59:52.787 1: SONOS1: GroupRendering-Service-subscribing NOT successful
Subscription request failed with error: 500 Server closed connection without sending any data back at ./FHEM/00_SONOS.pm line 5135 thread 1.
Error loading SCPD document: Connection timed out at ./FHEM/00_SONOS.pm line 4943 thread 1.
2015.11.21 12:57:05.135 3: .....
2015.11.21 12:56:52.399 1: SONOS3: Restore-Thread gestartet. Warte auf Arbeit...
2015.11.21 12:56:52.375 1: SONOS2: IsAlive-Thread gestartet. Warte 120 Sekunden und pruefe dann alle 30 Sekunden...
2015.11.21 12:56:49.580 1: SONOS0: ./FHEM/00_SONOS.pm is listening to Port 4711
Current: "./FHEM/00_SONOS.pm", gPath: ""
Smartmatch is experimental at ./FHEM/00_SONOS.pm line 5383.
2015.11.21 12:56:49.310 1: SONOS0: Kein UPnP-Server gefunden... Starte selber einen und warte 2 Sekunde(n) darauf...


Gruß
  Claudiu

ujaudio

Also ich habe auch Sonos in FHEM disabled, weil ich Fehler bekomme, bis hin zum FHEM-Absturz (siehe meine Beiträge auf Seite 147). Es war so schön, dass die Stereoanlage leise wurde, während man telefoniert hat, und dass man alles bequem aus FHEM heraus steuern konnte, ohne die Sonos-App zu bedienen. Aber es geht auch ohne. Da ich einige wichtige Funktionen mittlerweile über FHEM steuere, muss es auch stabil laufen, dann lieber ohne Sonos. Dennoch: wenn ich beitragen kann, das Problem zu finden (auch andere haben ja ähnliche Probleme), dann tue ich das gerne.

Interessant in diesem Zusammenhang: Der Harmony-Hub selbst ist zwar sch...lecht, aber wenn er läuft, dann steuert er ohne Probleme das Sonos. Für mich ist das aber keine Alternative, weil meine Steuerung auf Basis des Sonos-Moduls hier schon fertig ist und nur mittlerweile nicht mehr stabil läuft. Das muss wohl an den (für mich meist uninteressanten) Updates von Sonos liegen. Oder ich habe ganz woanders selbst einen Bockmist eingebaut, dessen Nebenwirkung nun das Sonos betreffen.
Einen lieben Gruß
Jürgen

dev0

Zitat von: ujaudio am 07 November 2015, 09:38:26
"running out of memory"
Auf welcher Hardware? Fritte?

Avatar

Hallo Reiner,

Ich habe schon seit einiger zeit folgende Meldung die mein Log füllen:
Odd number of elements in hash assignment at /usr/share/perl/5.20/IO/Socket/IP.pm line 109, <$client>

Hast Du einen Vorschlag was ich da machen kann?

Weiter kommt immer die Meldung:
Smartmatch is experimental at ./FHEM/00_SONOS.pm line 5383.
beim laden des Moduls.

BN hatte dies im Modul vorgeschlagen:
no if $] >= 5.017011, warnings => 'experimental::smartwatch';

Wie sieht dies beim Songs aus? Kannst Du das nachfüllen, hilft es?

Grüsse
Eric