Thema: Sprachausgabe
Es wurde eingestellt:
define Sonos SONOS
attr Sonos targetSpeakDir /mnt/SonosSpeak/
attr Sonos targetSpeakFileHashCache 1
attr Sonos targetSpeakURL \\192.168.1XX.XXX\mnt\SonosSpeak\
Der vorhandene Sonos_Player Sonos_Wohnzimmer wurde automatisch gefunden, mit
set Sonos_Wohnzimmer Speak 100 de Hallo
bekomme ich keine Sprachausgabe, in den Events sehe ich:
2020-05-03 18:09:06 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2020-05-03 18:09:06 SONOS Sonos LastProcessAnswer: 1588522146
2020-05-03 18:09:06 SONOSPLAYER Sonos_Wohnzimmer currentTrackPosition: 0:00:00
2020-05-03 18:09:06 SONOSPLAYER Sonos_Wohnzimmer currentTrackPositionSec: 0
Könnt Ihr mir bitte helfen?
Beitrag editieren
Ich hänge mich mal mit dran. Ich bekomme per Speak auch keine Ausgabe.
Im Eventmonitor deutet lediglich
2020-05-08 19:07:15 SONOSPLAYER Sonos_EGWintergarten LastActionResult: PlayURITemp: Success!
darauf hin, dass der Speakbefehl "erhört" wurde.
@Bronze: Siehst du denn die Freigabe?
\\192.168.1XX.XXX\mnt\SonosSpeak\
Wenn du dich an die Doku gehalten hast sollte die so lauten:
\\192.168.1XX.XXX\SonosSpeak\
und du solltest problemlos von Clientrechnern auf die Freigabe kommen.
Es sollte also so aussehen:
define Sonos SONOS
attr Sonos targetSpeakDir /mnt/SonosSpeak/
attr Sonos targetSpeakFileHashCache 1
attr Sonos targetSpeakURL \\192.168.1XX.XXX\SonosSpeak\
VG Sebastian
@Sebastian:
FHEM läuft auf einem Notebook mit Linux. Linux ist nicht mein Spezialgebiet.
Im Dateiexplorer dort sehe ich /mnt/SonosSpeak/, wo sich auch die über den speak-Befehl erzeugte Audiodatei befindet.
Ist das das gleiche Verzeichnis wie \\192.168.1XX.XXX\SonosSpeak\
In der Windows-Netzwerkanzeige wird dieser Rechner nicht angezeigt.
Verstehe jetzt nicht, wie das zu lösen ist.
Zitat von: Bronze am 09 Mai 2020, 17:32:25
@Sebastian:
FHEM läuft auf einem Notebook mit Linux. Linux ist nicht mein Spezialgebiet.
Im Dateiexplorer dort sehe ich /mnt/SonosSpeak/, wo sich auch die über den speak-Befehl erzeugte Audiodatei befindet.
Ist das das gleiche Verzeichnis wie \\192.168.1XX.XXX\SonosSpeak\
In der Windows-Netzwerkanzeige wird dieser Rechner nicht angezeigt.
Verstehe jetzt nicht, wie das zu lösen ist.
Hast du das hier gemacht?
https://wiki.fhem.de/wiki/SONOS#Einrichtung_von_Samba_f.C3.BCr_Sprachausgabem.C3.B6glichkeit (https://wiki.fhem.de/wiki/SONOS#Einrichtung_von_Samba_f.C3.BCr_Sprachausgabem.C3.B6glichkeit)
@Sebastian:
Ja, bis auf
security = user
war alles schon.
ich habe anschließend den Samba-Server neugestartet und die Sprachausgabe mit
set Sonos_Wohnzimmer Speak 100 de Hallo
ausprobiert und keine Sprachausgabe und folgende Events erhalten:
2020-05-09 17:51:12 SONOS Sonos LastProcessAnswer: 1589039472
2020-05-09 17:51:18 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2020-05-09 17:51:18 SONOS Sonos LastProcessAnswer: 1589039478
2020-05-09 17:51:18 SONOS Sonos LastProcessAnswer: 1589039478
2020-05-09 17:51:18 SONOSPLAYER Sonos_Wohnzimmer currentTrackPosition: 0:00:00
2020-05-09 17:51:18 SONOSPLAYER Sonos_Wohnzimmer currentTrackPositionSec: 0
2020-05-09 17:51:18 SONOS Sonos LastProcessAnswer: 1589039478
Hast du den Hinweis gesehen:
https://forum.fhem.de/index.php/topic,79335.msg719716.html#msg719716 (https://forum.fhem.de/index.php/topic,79335.msg719716.html#msg719716)
Das sieht nach einem ganz einfachen Zugriffs-Problem aus. Nach Änderungen auch immer den Dienst neu starten.
Wenn du dich Schritt-für-Schritt an die Anleitung im Wiki hältst sollte es laufen.
Ansonsten evtl. noch eine Firewall die dazwischen funkt?
VG Sebastian
Warum wird denn der Link mit 192.1xx.1xx.xxx\SonosSpeak definiert, wenn die Audio-Dateien unter /mnt/SonosSpeak liegen?
Ich habe alles noch einmal durchgesehen hinsichtlich Dateisystem und Berechtigungen auf dem FHEM-Server.
Dann habe ich SONOS einmal gelöscht und neu definiert.
Im /mnt/SonsosSpeak-Verzeichnis werden die neu erzeugten Audio-Dateien nicht abgelegt.
Da stehen nur die alten Audio-Dateien aus einem früheren Versuch.
Hilft das bei der Fehlersuche?
Nach dem Neustart von FHEM kommt dann
Messages collected while initializing FHEM:configfile: Please define Sonos_Wohnzimmer 5ec11b12-f33f-1985-4bf4-de556a744f5a5411 first
./log/fhem.save: Please define Sonos_Wohnzimmer first
Gibt es da vielleicht einen Konflikt mit dem vor FHEM bereits definierten Wohnzimmer?
Hi,
Du klingst etwas uneinsichtig :)
ZitatWarum wird denn der Link mit 192.1xx.1xx.xxx\SonosSpeak definiert, wenn die Audio-Dateien unter /mnt/SonosSpeak liegen?
Erstmal Korrektur:
\\192.1xx.1xx.xxx\SonosSpeak lautet die samba Freigabe, so wird sie im Windows / Samba Netzwerk "gesehen"
/mnt/SonosSpeak ist einfach ein Verzeichnis im Linux, hat erstmal nichts mit Samba oder Freigabe zu tun. Wenn Du daran zweifelst, musst Du lesen lesen lesen.
Wichtig daran ist: FHEM/Sonos schreibt in das lokale Verzeichnis /mnt/SonosSpeak. Dein Sonos System muss im Netzwerk aber die Freigabe \\192.1xx.1xx.xxx\SonosSpeak im Samba / Windows Netzwerk sehen, erreichen und lesen können.
(Problem am Rande: Sonos kann nur smb 1.0. - macht der samba Server aber normalerweise von Haus aus. Nur alle modernen Clients Windows LinuxSamba unterstützen diese Protokoll per default nicht mehr)
Kann man selbst alles einfach testen: Von einem Samba / Windows Client im Netzwerk musst Du die Freigabe \\192.1xx.1xx.xxx\SonosSpeak sehen und die mp3 Datei abspielen können. Wenn das nicht geht kann es Sonos auch nicht.
Gruß Otto
@Otto,
vielen Dank, ich lerne noch.
Aber auf jeden Fall klappt der Zugriff über einen Browser unter Windows.
Der danach ausgeführte Speak-Befehl erzeugt auch dort eine neue Audio-Datei, die man sich mittels Browser anhören kann.
Nur aus dem dem Sonos-Lautsprecher kommt kein Ton.
Damit müsste das Problem jetzt doch sehr eingekreist sein, nur weiß ich überhaupt nicht, wie man es lösen könnte.
Kannst Du in der FHEM Kommandozeile mal bitte folgendes ausführen und die Ausgabe posten
{qx(testparm -sv 2>/dev/null |grep protocol)}
Befindet sich dein Sonos System und der FHEM Server im gleichen Netzwerk? Kann Sonos rein netzwerktechnisch auf den Server zugreifen?
@Otto
client ipc max protocol = default
client ipc min protocol = default
client max protocol = default
client min protocol = CORE
server max protocol = SMB3
server min protocol = LANMAN1
Das SONOS-Gerät und das Notebook, auf dem FHEM läuft, sind im selben Netzwerk. Das Sonos-Gerät ist über WLAN und das Notebook über LAN angeschlossen.
Bei Nutzung von Spotify und dem SONOS-Player werden aktueller Song inkl. Cover und nächstem Song in FHEM korrekt abgezeigt, auch die Steuerung über FHEM funktioniert hier.
Das klingt erstmal richtig, dann versuch doch zum Test deine Freigabe als Musikbibliothek in Sonos einzubinden:
Sonos App
Einstellungen / System / Musikbibliothek / ... einrichten / .. hinzufügen.
In der Windopws App heisst es etwas anders, da gibt es einen direkteren Punkt:
Einstellungen Musikbibliothek / Ordner hinzufügen.
Danach solltest Du die mp3 in deinem SonosSpeak Ordner sehen.
Wenn das klappt gehen mir die Ideen aus ;)
@Otto:
Audio-Wiedergabe der über Fhem erzeugten Audio-Dateien des SonosSpeak-Ordners über den Sonos-Speaker mittels der Sonos-App funktioniert.
Wenn ich dann aber in FHEM neue Speak-Ausgaben mache, erscheinen neuen Dateien im SonosSpeak-Ordner, aber es erfolgt keine Audio-Wiedergabe über den Speaker.
Es werden nach und nach Audio-Dateien gespeichert.
Naja neue mp3 Files werden (wen man es mit targetSpeakFileHashCache 1 targetSpeakFileTimestamp 1 gemacht hat) nur angelegt wenn sie wirklich neu sind.
Ein wiederholtes set Sonos_Arbeitszimmer speak 30 de Die Welle
erzeugt nicht immer wieder eine neue Datei?
Deine Player lassen sich aber momentan über FHEM steuern (start stop)? Bei mir ging es nämlich gerade mal wieder nicht....
Wenn das alles nicht geht musst Du beim Player mal verbose 5 setzen und das Log anschauen bzw. posten. Aber schalte das nach dem Test mit speak wieder aus, das Modul ist sehr gesprächig!
Gruß Otto
Hier die Logs:
2020.05.31 10:02:30 3: SONOS1: Load Google generated MP3 (1. Element) from "http://translate.google.com/translate_tts?tl=70&client=tw-ob&q=%20Sonos" to "/mnt/SonosSpeak//RINCON_7828CA9F0E8801400_MR_Speak_5e059988e3a93741e0bda8c9034df679365c7dd5.mp31"
2020.05.31 10:02:30 1: SONOS1: MP3 Download-Error: 404 Not Found
2020.05.31 10:02:54 3: SONOS1: Transport-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:02:57 3: SONOS1: Rendering-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:00 3: SONOS1: GroupRendering-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:03 3: SONOS1: ContentDirectory-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:06 3: SONOS1: Alarm-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:09 3: SONOS1: ZoneGroupTopology-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:12 3: SONOS1: DeviceProperties-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:15 3: SONOS1: MusicServices-Subscription for ZonePlayer "RINCON_7828CA9F0E8801400_MR" has expired and is now renewed.
2020.05.31 10:03:15 3: SONOS1: Hole die Durchsage aus dem Cache...
2020.05.31 10:03:15 3: SONOS1: Start temporary playing of "\\192.168.168.202\SonosSpeak
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR/RINCON_7828CA9F0E8801400_MR_Speak_6372aa1f23de0d3791d2b8856ddd25b0407c2bcc.mp3"
2020.05.31 10:03:38 3: SONOS1: Load Google generated MP3 (1. Element) from "http://translate.google.com/translate_tts?tl=100&client=tw-ob&q=%20Spielen" to "/mnt/SonosSpeak//RINCON_7828CA9F0E8801400_MR_Speak_83b699c50c922f591818cba201ea48f399284b80.mp31"
2020.05.31 10:03:38 1: SONOS1: MP3 Download-Error: 404 Not Found
2020.05.31 10:11:58 3: SONOS1: Load Google generated MP3 (1. Element) from "http://translate.google.com/translate_tts?tl=100&client=tw-ob&q=%20Spielplatz" to "/mnt/SonosSpeak//RINCON_7828CA9F0E8801400_MR_Speak_5e8ce9dda047a8f40842f9966c653d107de09530.mp31"
2020.05.31 10:11:58 1: SONOS1: MP3 Download-Error: 404 Not Found
2020.05.31 10:12:38 3: SONOS1: Hole die Durchsage aus dem Cache...
2020.05.31 10:12:38 3: SONOS1: Temporary playing of "\\192.168.168.202\SonosSpeak
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR/RINCON_7828CA9F0E8801400_MR_Speak_6372aa1f23de0d3791d2b8856ddd25b0407c2bcc.mp3" must wait, because another playing is in work...
Es kommt weiterhin kein Ton heraus..
Deine Sprache war 70 bzw. beim zweiten Versuch 100 ? So kann das nicht gehen.
Du bist sicher, dass Du den Befehl richtig absetzt?
Beispiel:
set Sonos_Wohnzimmer Speak 20 de Der Text ist neu
Schau mal meine url
Zitathttp://translate.google.com/translate_tts?tl=de&client=tw-ob&q=%20Neuer%20Text
und Deine
Zitathttp://translate.google.com/translate_tts?tl=70&client=tw-ob&q=%20Sonos
Gruß Otto
OK, das war blöd.
Aber trotzdem habe ich SONOS0 und SONOS1, die sich im Wege stehen?
2020.06.01 10:10:10 3: SONOS1: Hole die Durchsage aus dem Cache...
2020.06.01 10:10:10 3: SONOS1: Temporary playing of "\\192.168.168.202\SonosSpeak
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR/RINCON_7828CA9F0E8801400_MR_Speak_5c65d2fcb412220ff588bd54647ed2a201b5a9b5.mp3" must wait, because another playing is in work...
2020.06.01 10:12:21 3: SONOS0: Disconnecting client and shutdown server...
2020.06.01 10:12:21 3: SONOS0: Trying to kill Sonos_Thread...
2020.06.01 10:12:21 3: SONOS0: Trying to kill LongJobs_Thread...
2020.06.01 10:12:21 3: SONOS0: Trying to kill IsAlive_Thread...
2020.06.01 10:12:21 3: SONOS0: Trying to kill PlayerRestore_Thread...
2020.06.01 10:12:21 0: SONOS0: Das Lauschen auf der Schnittstelle wurde beendet. Prozess endet nun auch...
Gruß, Thomas
Hallo Thomas,
diese define Zeilen stören mich total, die habe ich nicht. Hast Du da irgendwas laufen was dieses define verursacht?
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7 ....
Bei mir sieht es so aus
2020.06.01 11:58:37 3: SONOS1: Setting LogLevel to new value: 3
2020.06.01 11:58:37 3: SONOS1: Hole die Durchsage aus dem Cache...
2020.06.01 11:58:37 3: SONOS1: Start temporary playing of "\\raspib3\SonosSpeak/RINCON_347E5C82560801400_MR_Speak_5c65d2fcb412220ff588bd54647ed2a201b5a9b5.mp3"
2020.06.01 11:58:38 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: Received DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: End of DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: Received Rendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: End of Rendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS4: Restorethread has found a job. Waiting for stop playing...
2020.06.01 11:58:38 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: Received GroupRendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: End of GroupRendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: Received DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:38 3: SONOS1: Event: End of DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:39 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: Received DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: End of DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS4: Restoring playerstate...
2020.06.01 11:58:40 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS4: Playerstate restored!
2020.06.01 11:58:40 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: Received Rendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: End of Rendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: Received GroupRendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:40 3: SONOS1: Event: End of GroupRendering-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:41 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:41 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:41 3: SONOS1: Event: Received Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:42 3: SONOS1: Event: End of Transport-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:42 3: SONOS1: Event: Received DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:42 3: SONOS1: Event: End of DeviceProperties-Event for Zone "Sonos_Arbeitszimmer".
2020.06.01 11:58:43 1: SONOS1: Setting LogLevel to new value: 1
Wie habe ich getestet? (Ich will das Sonos Log zeitnah wieder still haben)
attr Sonos verbose 3
set Sonos_Arbeitszimmer Speak 20 de Der Text ist neu
define temp at +00:00:05 attr Sonos verbose 1
Gruß Otto
@Otto,
ich habe autocreate ausgeschaltet.
Wenn ich dann
set Sonos_Wohnzimmer Speak 20 de Der Text ist neu
auslöse, erhalte ich weder einen Eintrag im Event-Monitor, noch im Log-File.
Natürlich wird auch nichts ausgegeben.
Moin Thomas,
mit autocreate an oder aus hat das Ganze aus meiner Sicht nichts zu tun. autocreate ist bei mir auch immer an.
Hast Du irgendwann einen Eintrag:
SONOS0: Das Lauschen auf der Schnittstelle wurde beendet. Prozess endet nun auch...
Im Logfile?
Der Player ist disappeared?
Gruß Otto
Morgen,
disconnected habe ich auch. Und solche Einträge im Log:
2020.06.01 09:57:55 5: SONOS0: Player: Sonos_Wohnzimmer ~ Slaves: []
2020.06.01 09:57:56 5: SONOS0: Player: Sonos_Wohnzimmer ~ Slaves: []
2020.06.01 10:12:20 2: SONOS0: LastProcessAnswer way too old (Lastanswer: 1590998990 ~ 2020-06-01 10:09:50)... try to restart the process and connection...
2020.06.07 09:14:28 5: SONOS0: FhemWebCallback: /sonos/cover/empty.jpg
2020.06.07 09:14:28 5: SONOS0: Cover: /empty.jpg
2020.06.07 11:23:19 5: SONOS0: FhemWebCallback: /sonos/cover/empty.jpg
2020.06.07 11:23:19 5: SONOS0: Cover: /empty.jpg
Das Sonos-Modul hat sich am 1.6. beendet ... du kannst es neu starten wenn du das Attribut disable erst auf 1 setzte, etwas wartest und dann auf wieder auf 0 setzt.
Naja ich meinte, wenn der Player im Sonos als disappeared dargestellt wird, kannst Du ihn weder steuern noch speak Befehle schicken. Dann passiert genau das was Du beschreibst, gar nichts.
@Otto,
mein Sonos-Player läuft aber gerade zusammen mit Spotify.
Wie erwecke ich ihn in FHEM wieder zum Leben?
Sonos löschen und neu definieren? VG
Ich m ach das regelmäßig damit:
defmod di_SonosCheck DOIF ([05:00] and [?Sonos] ne "opened" )(attr Sonos disable 1)(attr Sonos disable 0)
attr di_SonosCheck do always
attr di_SonosCheck room Bad,Status
attr di_SonosCheck wait 0,10
Also einfach disable etwas warten wieder enable.
Du kannst auch radikal delete Sonos machen, dabei werden alle Komponenten gelöscht. Bei define wird alles wieder angelegt. Du musst nur Dein "Speak" Attribute merken und per Hand wieder einfügen.
Nach der Einrichtung Deines DOIF sieht es im Logfile so aus:
2020.06.09 08:27:51 5: SONOS0: Received: 'DoWork:undef:refreshProcessAnswer:'
2020.06.09 08:28:11 4: SONOS1: SONOS_Client_Notifier(rePing:undef::)
2020.06.09 08:28:11 5: SONOS0: Received from UPnP-Server: 'rePing:undef::'
2020.06.09 08:28:17 4: SONOS3: IsAlive-Event UDN=RINCON_7828CA9F0E8801400_MR
2020.06.09 08:28:17 4: SONOS3: SONOS_Client_Data_Retreive(RINCON_7828CA9F0E8801400_MR, reading, location, ) -> http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 08:28:17 5: SONOS3: Location: http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 08:28:17 5: SONOS3: PingType: syn
2020.06.09 08:28:17 4: SONOS3: 192.168.178.49 is alive
2020.06.09 08:28:47 4: SONOS3: IsAlive-Event UDN=RINCON_7828CA9F0E8801400_MR
2020.06.09 08:28:47 4: SONOS3: SONOS_Client_Data_Retreive(RINCON_7828CA9F0E8801400_MR, reading, location, ) -> http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 08:28:47 5: SONOS3: Location: http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 08:28:47 5: SONOS3: PingType: syn
2020.06.09 08:28:47 4: SONOS3: 192.168.178.49 is alive
2020.06.09 08:29:11 5: SW: DoWork:undef:refreshProcessAnswer:
d.h. SONOS lebt und speak funktioniert?
Sonos lebt, wird angezeigt als "appeared".
Wenn ich Spotify nutze, konnte ich beim letzten Mal Titel und Cover in FHEM sehen, das geht zur Zeit nicht, Wiedergabe und Lautstärke steuern funktioniert, teilweise mit längeren Reaktionszeiten.
Und speak geht leider nicht. Da tritt dann der UPnP-Error auf:
2020-06-09 14:21:16 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: SetRelativeVolume: 62
2020-06-09 14:21:16 SONOS Sonos LastProcessAnswer: 1591705276
2020-06-09 14:21:18 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: SetRelativeVolume: 69
2020-06-09 14:21:18 SONOS Sonos LastProcessAnswer: 1591705278
2020-06-09 14:21:31 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Pause: Success!
2020-06-09 14:21:31 SONOS Sonos LastProcessAnswer: 1591705291
2020-06-09 14:21:33 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Pause: Success!
2020-06-09 14:21:33 SONOS Sonos LastProcessAnswer: 1591705293
2020-06-09 14:21:36 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Play: Success!
2020-06-09 14:21:36 SONOS Sonos LastProcessAnswer: 1591705296
2020-06-09 14:22:08 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: GetPlaylistsWithCovers: {}
2020-06-09 14:22:08 SONOSPLAYER Sonos_Wohnzimmer Playlists: {}
2020-06-09 14:22:08 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: GetPlaylists: ""
2020-06-09 14:22:08 SONOS Sonos LastProcessAnswer: 1591705328
2020-06-09 14:22:17 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: GetCurrentTrackPosition: 0:00:02
2020-06-09 14:22:17 SONOSPLAYER Sonos_Wohnzimmer currentTrackPosition: 0:00:02
2020-06-09 14:22:17 SONOS Sonos LastProcessAnswer: 1591705337
2020-06-09 14:22:35 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: GetCurrentTrackPosition: 0:00:19
2020-06-09 14:22:35 SONOSPLAYER Sonos_Wohnzimmer currentTrackPosition: 0:00:19
2020-06-09 14:22:35 SONOS Sonos LastProcessAnswer: 1591705355
2020-06-09 14:22:47 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: GetFavouritesWithCovers: {}
2020-06-09 14:22:47 SONOSPLAYER Sonos_Wohnzimmer Favourites: {}
2020-06-09 14:22:47 SONOS Sonos LastProcessAnswer: 1591705367
2020-06-09 14:23:55 SONOS Sonos LastProcessAnswer: 1591705435
2020-06-09 14:24:15 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2020-06-09 14:24:15 SONOS Sonos LastProcessAnswer: 1591705455
2020-06-09 14:24:55 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Play: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2020-06-09 14:24:55 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Previous: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 711}}"
2020-06-09 14:24:55 SONOS Sonos LastProcessAnswer: 1591705495
2020-06-09 14:26:15 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Next: Success!
2020-06-09 14:26:15 SONOS Sonos LastProcessAnswer: 1591705575
2020-06-09 14:26:15 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Next: Success!
2020-06-09 14:26:15 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Pause: Success!
2020-06-09 14:26:15 SONOS Sonos LastProcessAnswer: 1591705575
2020-06-09 14:26:15 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Pause: Success!
2020-06-09 14:26:15 SONOS Sonos LastProcessAnswer: 1591705575
2020-06-09 14:26:35 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Next: Success!
2020-06-09 14:26:35 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Play: Success!
2020-06-09 14:26:35 SONOS Sonos LastProcessAnswer: 1591705595
2020-06-09 14:27:15 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Pause: Success!
2020-06-09 14:27:15 SONOS Sonos LastProcessAnswer: 1591705635
2020-06-09 14:27:16 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: Pause: Success!
2020-06-09 14:27:16 SONOS Sonos LastProcessAnswer: 1591705636
2020-06-09 14:27:36 SONOSPLAYER Sonos_Wohnzimmer LastActionResult: PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"
2020-06-09 14:27:36 SONOS Sonos LastProcessAnswer: 1591705656
Und hier der Auszug aus dem Log:
2020.06.09 14:26:56 5: SONOS0: Received: 'DoWork:RINCON_7828CA9F0E8801400_MR:pause:'
2020.06.09 14:27:09 5: SW: DoWork:RINCON_7828CA9F0E8801400_MR:pause:
2020.06.09 14:27:09 5: SONOS0: Received: 'DoWork:RINCON_7828CA9F0E8801400_MR:pause:'
2020.06.09 14:27:15 4: SONOS1: ProxyObject exists: UPnP::ControlPoint::ControlProxy=HASH(0x7f624ca58238)
2020.06.09 14:27:15 4: SONOS1: SONOS_Client_Notifier(DoWorkAnswer:RINCON_7828CA9F0E8801400_MR:LastActionResult:Pause: Success!)
2020.06.09 14:27:15 4: SONOS1: ProxyObject exists: UPnP::ControlPoint::ControlProxy=HASH(0x7f624ca58238)
2020.06.09 14:27:15 5: SONOS0: Received from UPnP-Server: 'DoWorkAnswer:RINCON_7828CA9F0E8801400_MR:LastActionResult:Pause: Success!'
2020.06.09 14:27:15 4: SONOS0: DoWorkAnswer arrived for Sonos_Wohnzimmer->LastActionResult: 'Pause: Success!'
2020.06.09 14:27:15 4: SONOS1: SONOS_Client_Notifier(DoWorkAnswer:RINCON_7828CA9F0E8801400_MR:LastActionResult:Pause: Success!)
2020.06.09 14:27:16 5: SONOS0: Received from UPnP-Server: 'DoWorkAnswer:RINCON_7828CA9F0E8801400_MR:LastActionResult:Pause: Success!'
2020.06.09 14:27:16 4: SONOS0: DoWorkAnswer arrived for Sonos_Wohnzimmer->LastActionResult: 'Pause: Success!'
2020.06.09 14:27:17 4: SONOS3: IsAlive-Event UDN=RINCON_7828CA9F0E8801400_MR
2020.06.09 14:27:17 4: SONOS3: SONOS_Client_Data_Retreive(RINCON_7828CA9F0E8801400_MR, reading, location, ) -> http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 14:27:17 5: SONOS3: Location: http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 14:27:17 5: SONOS3: PingType: syn
2020.06.09 14:27:17 4: SONOS3: 192.168.178.49 is alive
2020.06.09 14:27:30 5: SW: DoWork:RINCON_7828CA9F0E8801400_MR:speak0:20--#--de--#--Der Text ist neu
2020.06.09 14:27:30 5: SONOS0: Received: 'DoWork:RINCON_7828CA9F0E8801400_MR:speak0:20--#--de--#--Der Text ist neu'
2020.06.09 14:27:35 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, attr, targetSpeakFileHashCache, 0) -> 1
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, attr, targetSpeakDir, .) -> /mnt/SonosSpeak/
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, attr, targetSpeakURL, ) -> \\192.168.168.202\SonosSpeak
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR
2020.06.09 14:27:36 3: SONOS1: Hole die Durchsage aus dem Cache...
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, reading, UserID_Spotify, -) -> SA_RINCON2311_X_%23Svc2311-0-Token
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, reading, UserID_Napster, -) -> DEFAULT
2020.06.09 14:27:36 3: SONOS1: Start temporary playing of "\\192.168.168.202\SonosSpeak
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR/RINCON_7828CA9F0E8801400_MR_Speak_5c65d2fcb412220ff588bd54647ed2a201b5a9b5.mp3"
2020.06.09 14:27:36 4: SONOS1: ProxyObject exists: UPnP::ControlPoint::ControlProxy=HASH(0x7f624ca58238)
2020.06.09 14:27:36 4: SONOS1: ProxyObject exists: UPnP::ControlPoint::ControlProxy=HASH(0x7f624c1f6670)
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Notifier(DoWorkAnswer:RINCON_7828CA9F0E8801400_MR:LastActionResult:PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}")
2020.06.09 14:27:36 4: SONOS1: All is started successfully. Retreive Positioninfo...
2020.06.09 14:27:36 3: SONOS1: SleepTimer berechnet die Laufzeit des Titels selber, da keine Wartezeit uebermittelt wurde!
2020.06.09 14:27:36 1: SONOS1: Da keine Endzeit ermittelt werden konnte, wird kein Restoring durchgeführt werden!
2020.06.09 14:27:36 5: SONOS0: Received from UPnP-Server: 'DoWorkAnswer:RINCON_7828CA9F0E8801400_MR:LastActionResult:PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"'
2020.06.09 14:27:36 4: SONOS0: DoWorkAnswer arrived for Sonos_Wohnzimmer->LastActionResult: 'PlayURITemp: Error! UPnP-Fault-Fields: Code: "s:Client", String: "UPnPError", Actor: "-", Detail: "{UPnPError => {errorCode => 701}}"'
2020.06.09 14:27:47 4: SONOS3: IsAlive-Event UDN=RINCON_7828CA9F0E8801400_MR
2020.06.09 14:27:47 4: SONOS3: SONOS_Client_Data_Retreive(RINCON_7828CA9F0E8801400_MR, reading, location, ) -> http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 14:27:47 5: SONOS3: Location: http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 14:27:47 5: SONOS3: PingType: syn
2020.06.09 14:27:47 4: SONOS3: 192.168.178.49 is alive
2020.06.09 14:28:17 4: SONOS3: IsAlive-Event UDN=RINCON_7828CA9F0E8801400_MR
2020.06.09 14:28:17 4: SONOS3: SONOS_Client_Data_Retreive(RINCON_7828CA9F0E8801400_MR, reading, location, ) -> http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 14:28:17 5: SONOS3: Location: http://192.168.178.49:1400/xml/device_description.xml
2020.06.09 14:28:17 5: SONOS3: PingType: syn
2020.06.09 14:28:17 4: SONOS3: 192.168.178.49 is alive
2020.06.09 14:28:36 5: SW: DoWork:undef:refreshProcessAnswer:
Ich behaupte nach wie vor Du hast etwas am Laufen welches diese define Zeilen verursacht:
Zitatdefine Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR
2020.06.09 14:27:36 3: SONOS1: Hole die Durchsage aus dem Cache...
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, reading, UserID_Spotify, -) -> SA_RINCON2311_X_%23Svc2311-0-Token
2020.06.09 14:27:36 4: SONOS1: SONOS_Client_Data_Retreive(SONOS, reading, UserID_Napster, -) -> DEFAULT
2020.06.09 14:27:36 3: SONOS1: Start temporary playing of "\\192.168.168.202\SonosSpeak
define Sonos_Wohnzimmer SONOSPLAYER RINCON_7828CA9F0E8801400_MR/RINCON_7828CA9F0E8801400_MR_Speak_5c65d2fcb412220ff588bd54647ed2a201b5a9b5.mp3"
das zerstört Deinen Speak Prozess. Er definiert in deinem Speak Befehl die Geräte neu?
Ich habe diese Zeilen bei mir noch nie gesehen. Aber ich bin nur Nutzer des Moduls, ich denke ich kann nicht weiter helfen.
Vielen Dank.
Wer ist denn der Entwickler?
findest Du hier:
http://fhem.de/MAINTAINER.txt
Aber ich denke nicht, dass es an ihm liegt. Es liegt aus meiner Sicht an deiner Konfiguration. Ich weiß bloß nicht mehr wie noch suchen.
Hallo Thomas,
wozu willst Du das Sonos Modul hauptsächlich verwenden? Mir scheint Dir kommt es vorrangig auf die Sprachausgaben an?
Wir bauen gerade ein sonos2mqtt Variante. Es scheint ja so, dass Deine Umgebung irgendwie Probleme mit dem Sonos Modul von Reinerlein hat, dass kommt leider bei einigen vor. Vielleicht magst Du die sonos2mqtt Variante mit testen?
Seit gestern Abend (heute Morgen 😜) habe ich die Sprachausgabe fertig :)
Gruß Otto
Hallo Otto,
so ist es, zur Sprachausgabe, um das System lebendiger zu bekommen.
Also das Modul SONOS löschen und das vor Dir angegebene Modul installieren?
Ich hoffe, es bleiben keine Reste vom SONOS in FHEM.
Danke und VG, Thomas
Hallo Thomas,
ein delete Sonos sollte die komplette Sonos Umgebung in FHEM (also auch alle Player usw.) löschen.
Die derzeit vielleicht durchgängigste und aktuelle Beschreibung steht in meinem Blog (https://heinz-otto.blogspot.com/2020/05/sonos2mqtt-so-weit-bin-ich.html).
Mal sehen ob Du damit klar kommst. Ich bin jetzt dummerweise 14 Tage nicht da ...
Gruß Otto
Hallo
Als ich das gelesen habe wollte ich das gleich mal testen
bis auf die Sprachausgabe geht alles Player lässt sich steuern.
Es wird zwar per tts das Sprachfile angelegt aber Sonos bleibt stumm
Mit dem anderen Modul funktioniert es dagegen...zugriff auf dem
Sonosplayer müsste vorhanden sein da ich die Freigabe Sonos
bekannt gemacht habe und nichts beanstandet wurde.
Woran kann das liegen das nachgeschaltete notify will wohl nichts senden?
defmod SonosTTS Text2Speech none
attr SonosTTS DbLogExclude .*
attr SonosTTS TTS_CacheFileDir /mnt/SonosSpeak
attr SonosTTS room System
attr SonosTTS userReadings cifsName {my $hostip=(split(' ', qx(hostname -I)))[0];;my $lastFileName=ReadingsVal($name,"lastFilename","");;$lastFileName=~s/\/var/x-file-cifs:\/\/$hostip/g;;$lastFileName}
setstate SonosTTS 2020-07-05 18:19:27 Player MQTT2_mqttjs_4d3c87f2
setstate SonosTTS 2020-07-05 18:19:27 cifsName /mnt/SonosSpeak/a60163281710e794a7ee32fa4eaacc43.mp3
setstate SonosTTS 2020-07-05 18:19:27 lastFilename /mnt/SonosSpeak/a60163281710e794a7ee32fa4eaacc43.mp3
setstate SonosTTS 2020-07-05 18:19:27 playing 0
setstate SonosTTS 2020-07-05 18:19:27 volume 80
Andre
Hallo Andre,
ich habe festgestellt, dass meine Anleitung und die aktuellen Templates nicht ganz zusammenpassen. Ich teste das gerade und melde mich zurück.
Du sagst die Sonos Freigabe funktioniert vom Player, wie sieht dein notify aus?
Gruß Otto
das notify hab ich erst mal so übernommen wie auf deiner Seite
also so
defmod n_SonosSpeak notify SonosTTS:playing:.0 {fhem("set ".ReadingsVal($NAME,"Player","")." notify ".ReadingsVal($NAME,"volume","")." ".ReadingsVal($NAME,"cifsName",""))}
attr n_SonosSpeak DbLogExclude .*
setstate n_SonosSpeak 2020-07-05 18:19:27
setstate n_SonosSpeak 2020-07-05 17:24:44 state active
naja ich sehe gerade, das userReadings cifsName stimmt nicht. :o
Was ergibt bei Dir {qx(hostname -I)}
in der FHEM Kommandozeile?
192.168.178.46 192.168.178.84 192.168.178.100 2003:df:d74d:900:b7f3:7e21:5d49:75b1 fd00::30d5:d47c:8431:e5c9 2003:df:d74d:900:192c:f418:69c5:4615 2003:df:d74d:900:cb0c:e9b0:ad:e48b
Meine lokalen ipv4 ipv6 (2 wlans )
Andre
Meine Konfiguration
defmod SonosBridge MQTT2_DEVICE
attr SonosBridge DbLogExclude .*
attr SonosBridge IODev mqtt2client
attr SonosBridge bridgeRegexp "pm2/(RINCON_[A-Z0-9]+)[:/].* "$1"
attr SonosBridge icon start
attr SonosBridge model sonos2mqtt_bridge
attr SonosBridge readingList "pm2/connected:.* connected\
homeassistant/music_player/RINCON_([0-9A-Z]+)/sonos/config:.* { $TOPIC =~ m,(RINCON_[0-9A-Z]+),;; { "config_$1"=>$EVENT }}\
"pm2/status/[^/]+/avtransport:.* {}\
"pm2/status/[^/]+/renderingcontrol:.* {}
attr SonosBridge room MQTT2_DEVICE
setstate SonosBridge 2020-07-05 16:29:51 attrTemplateVersion 20200603
setstate SonosBridge 2020-07-05 16:55:12 config_RINCON_5CAAFD243CDE01400 {"available_commands":["adv-command","clearqueue","command","joingroup","leavegroup","mute","next","notify","pause","play","playmode","previous","queue","seek","selecttrack","setavtransporturi","sleep","speak","stop","switchtoline","switchtoqueue","switchtotv","toggle","unmute","volume","volumedown","volumeup"],"command_topic":"sonos/RINCON_5CAAFD243CDE01400/control","device":{"identifiers":["RINCON_5CAAFD243CDE01400"],"manufacturer":"Sonos","name":"Wohnzimmer"},"device_class":"speaker","icon":"mdi:speaker","json_attributes":true,"json_attributes_topic":"sonos/RINCON_5CAAFD243CDE01400","name":"Wohnzimmer","state_topic":"sonos/RINCON_5CAAFD243CDE01400","unique_id":"sonos2mqtt_RINCON_5CAAFD243CDE01400_speaker","availability_topic":"sonos/connected","payload_available":"2"}
defmod MQTT2_mqttjs_4d3c87f2 MQTT2_DEVICE mqttjs_4d3c87f2
attr MQTT2_mqttjs_4d3c87f2 DbLogExclude .*
attr MQTT2_mqttjs_4d3c87f2 IODev mqtt2server
attr MQTT2_mqttjs_4d3c87f2 alias Wohnzimmer
attr MQTT2_mqttjs_4d3c87f2 devStateIcon 0:10px-kreis-rot 1:10px-kreis-gelb 2:10px-kreis-gruen (0|1).(STOPPED|PAUSED_PLAYBACK):rc_BLANK 2.(STOPPED|PAUSED_PLAYBACK):rc_PLAY@green:play 2.(pause|stop):rc_STOP@red:play 2.PLAYING:rc_STOP@red:stop 2.(TRANSITIONING|play):rc_PLAY@yellow:stop 2.mute:audio_volume_mute@yellow:stop 2.volume:audio_volume_mid@yellow:stop 2.volumeDown:audio_volume_low@yellow:stop 2.volumeUp:audio_volume_high@yellow:stop 2.next:rc_NEXT@yellow:stop 2.previous:rc_PREVIOUS@yellow:stop (STOPPED|PAUSED_PLAYBACK).(false|previous|next|volumeDown|volumeUp|[0-9]+|CURRENT.*|NEXT.*|PAUSED_PLAYBACK):rc_BLANK \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.previous:rc_PREVIOUS:previous \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.next:rc_NEXT:next \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.volumeDown:rc_VOLDOWN:volumeDown \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.volumeUp:rc_VOLUP:volumeUp \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.false:rc_VOLUP:mute+true \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.true:rc_MUTE:mute+false
attr MQTT2_mqttjs_4d3c87f2 icon audio_volume_low
attr MQTT2_mqttjs_4d3c87f2 jsonMap volume_Master:volume mute_Master:mute transportState:state
attr MQTT2_mqttjs_4d3c87f2 model sonos2mqtt_speaker
attr MQTT2_mqttjs_4d3c87f2 readingList sonos/status/wohnzimmer/avtransport:.* { json2nameValue($EVENT,'AV_',$JSONMAP) }\
sonos/status/wohnzimmer/renderingcontrol:.* { json2nameValue($EVENT,'REND_',$JSONMAP) }\
sonos/RINCON_5CAAFD243CDE01400:.* { json2nameValue($EVENT,'',$JSONMAP) }\
sonos/connected:.* bridgeConnected\
sonos/RINCON_5CAAFD243CDE01400/error:.* { json2nameValue($EVENT) }
attr MQTT2_mqttjs_4d3c87f2 room MQTT2_DEVICE
attr MQTT2_mqttjs_4d3c87f2 setList stop:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "stop" }\
play:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "play" }\
pause:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "pause" }\
toggle:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "toggle" }\
volumeUp:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "volumeup" }\
volumeDown:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "volumedown" }\
volume:slider,0,1,100 sonos/RINCON_5CAAFD243CDE01400/control { "command": "volume", "input": $EVTPART1 }\
mute:iconSwitch,false,rc_MUTE,true,rc_VOLUP { my $value = $EVTPART1 eq "true" ? "mute" : "unmute";;;; qq(sonos/RINCON_5CAAFD243CDE01400/control { "command": "$value" } ) }\
next:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "next" }\
previous:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "previous" }\
joinGroup:textField sonos/RINCON_5CAAFD243CDE01400/control { "command": "joingroup", "input": "$EVTPART1"}\
leaveGroup:noArg { my $value = ReadingsVal("RINCON_5CAAFD243CDE01400","groupName","all");; qq(sonos/RINCON_5CAAFD243CDE01400/control { "command": "leavegroup", "input": "$value" } ) }\
setAVTUri:textField sonos/RINCON_5CAAFD243CDE01400/control { "command": "setavtransporturi", "input": "$EVTPART1"}\
notify:textField sonos/RINCON_5CAAFD243CDE01400/control { "command":"notify","input":{"trackUri":"$EVTPART2","onlyWhenPlaying":false,"timeout":10,"volume":$EVTPART1,"delayMs":700}}\
x_raw_payload:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(sonos/RINCON_5CAAFD243CDE01400/control $payload)}\
playUri:textField {fhem("sleep 1;; set $NAME play");; qq(sonos/RINCON_347E5C82560801400/control { "command": "setavtransporturi", "input": "$EVTPART1"})}\
speak:textField { my $tts="SonosTTS";;my $payload = $EVENT;;$payload =~ s/$EVTPART0 $EVTPART1 //g;; fhem("setreading $tts Player $NAME;;setreading $tts volume $EVTPART1;;set $tts tts $payload");;"{}"}
attr MQTT2_mqttjs_4d3c87f2 stateFormat [$name:bridgeConnected]\
[$name:bridgeConnected].[$name:state]\
[$name:state].previous\
[$name:state].next\
[$name:state].volumeDown\
[$name:state].volumeUp\
; ; ;\
[$name:state].[$name:mute]\
<br>[$name:state] CURRENT: [$name:AV_CurrentTrackMetaData_Artist] - [$name:AV_CurrentTrackMetaData_Title] - ([$name:currentTrack_Duration])\
<br>[$name:state] NEXT: ; ; ; ; ; ;[$name:AV_NextTrackMetaData_Artist] - [$name:AV_NextTrackMetaData_Title] - ([$name:nextTrack_Duration])
Erwähnen sollte man noch das unbedingt port 1883 am MQTT2 Server verwendet werden sollte sonst wird nichts gefunden.
Die Bridge verwirrt mich: "pm2 ist ein eigenartiger Topic
Wie hast Du das hinbekommen?
Ich habe die Bridge händisch angelegt danach das Template sonos2mqtt_bridge
zugewiesen.Anschließend gewartet das der Player erzeugt wird nichts passiert port auf 1883
und Player wurde angelegt.
Dabei ist wohl deiner Meinung was schief gelaufen also alles noch mal auf Anfang
und es mit der Automatik probieren.
So jetzt mit Automatik wahrscheinlich bin ich zu blöd sowas selber anzulegen :'(
defmod MQTT2_mqttjs_987404f5 MQTT2_DEVICE mqttjs_987404f5
attr MQTT2_mqttjs_987404f5 DbLogExclude .*
attr MQTT2_mqttjs_987404f5 IODev mqtt2server
attr MQTT2_mqttjs_987404f5 bridgeRegexp sonos/(RINCON_[A-Z0-9]+)[:/].* "$1"
attr MQTT2_mqttjs_987404f5 icon mqtt_bridge_2
attr MQTT2_mqttjs_987404f5 model sonos2mqtt_bridge
attr MQTT2_mqttjs_987404f5 readingList sonos/connected:.* connected\
homeassistant/music_player/RINCON_([0-9A-Z]+)/sonos/config:.* { $TOPIC =~ m,(RINCON_[0-9A-Z]+),;; { "config_$1"=>$EVENT }}\
sonos/status/[^/]+/avtransport:.* {}\
sonos/status/[^/]+/renderingcontrol:.* {}
attr MQTT2_mqttjs_987404f5 room MQTT2_DEVICE
setstate MQTT2_mqttjs_987404f5 2020-07-06 17:43:51 attrTemplateVersion 20200603
setstate MQTT2_mqttjs_987404f5 2020-07-06 17:44:30 subscriptions sonos/+/control sonos/cmd/+ sonos/set/+/+
die readingList sollte jetzt wohl passen
defmod MQTT2_RINCON_5CAAFD243CDE01400 MQTT2_DEVICE RINCON_5CAAFD243CDE01400
attr MQTT2_RINCON_5CAAFD243CDE01400 DbLogExclude .*
attr MQTT2_RINCON_5CAAFD243CDE01400 IODev mqtt2server
attr MQTT2_RINCON_5CAAFD243CDE01400 alias Wohnzimmer
attr MQTT2_RINCON_5CAAFD243CDE01400 devStateIcon 0:10px-kreis-rot 1:10px-kreis-gelb 2:10px-kreis-gruen (0|1).(STOPPED|PAUSED_PLAYBACK):rc_BLANK 2.(STOPPED|PAUSED_PLAYBACK):rc_PLAY@green:play 2.(pause|stop):rc_STOP@red:play 2.PLAYING:rc_STOP@red:stop 2.(TRANSITIONING|play):rc_PLAY@yellow:stop 2.mute:audio_volume_mute@yellow:stop 2.volume:audio_volume_mid@yellow:stop 2.volumeDown:audio_volume_low@yellow:stop 2.volumeUp:audio_volume_high@yellow:stop 2.next:rc_NEXT@yellow:stop 2.previous:rc_PREVIOUS@yellow:stop (STOPPED|PAUSED_PLAYBACK).(false|previous|next|volumeDown|volumeUp|[0-9]+|CURRENT.*|NEXT.*|PAUSED_PLAYBACK):rc_BLANK \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.previous:rc_PREVIOUS:previous \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.next:rc_NEXT:next \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.volumeDown:rc_VOLDOWN:volumeDown \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.volumeUp:rc_VOLUP:volumeUp \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.false:rc_VOLUP:mute+true \b(?!(STOPPED|PAUSED_PLAYBACK)\b)\w+.true:rc_MUTE:mute+false
attr MQTT2_RINCON_5CAAFD243CDE01400 icon audio_volume_low
attr MQTT2_RINCON_5CAAFD243CDE01400 jsonMap volume_Master:volume mute_Master:mute transportState:state
attr MQTT2_RINCON_5CAAFD243CDE01400 model sonos2mqtt_speaker
attr MQTT2_RINCON_5CAAFD243CDE01400 readingList sonos/status/wohnzimmer/avtransport:.* { json2nameValue($EVENT,'AV_',$JSONMAP) }\
sonos/status/wohnzimmer/renderingcontrol:.* { json2nameValue($EVENT,'REND_',$JSONMAP) }\
sonos/RINCON_5CAAFD243CDE01400:.* { json2nameValue($EVENT,'',$JSONMAP) }\
sonos/connected:.* bridgeConnected\
sonos/RINCON_5CAAFD243CDE01400/error:.* { json2nameValue($EVENT) }
attr MQTT2_RINCON_5CAAFD243CDE01400 room MQTT2_DEVICE
attr MQTT2_RINCON_5CAAFD243CDE01400 setList stop:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "stop" }\
play:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "play" }\
pause:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "pause" }\
toggle:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "toggle" }\
volumeUp:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "volumeup" }\
volumeDown:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "volumedown" }\
volume:slider,0,1,100 sonos/RINCON_5CAAFD243CDE01400/control { "command": "volume", "input": $EVTPART1 }\
mute:iconSwitch,false,rc_MUTE,true,rc_VOLUP { my $value = $EVTPART1 eq "true" ? "mute" : "unmute";;;; qq(sonos/RINCON_5CAAFD243CDE01400/control { "command": "$value" } ) }\
next:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "next" }\
previous:noArg sonos/RINCON_5CAAFD243CDE01400/control { "command": "previous" }\
joinGroup:textField sonos/RINCON_5CAAFD243CDE01400/control { "command": "joingroup", "input": "$EVTPART1"}\
leaveGroup:noArg { my $value = ReadingsVal("RINCON_5CAAFD243CDE01400","groupName","all");; qq(sonos/RINCON_5CAAFD243CDE01400/control { "command": "leavegroup", "input": "$value" } ) }\
setAVTUri:textField sonos/RINCON_5CAAFD243CDE01400/control { "command": "setavtransporturi", "input": "$EVTPART1"}\
notify:textField sonos/RINCON_5CAAFD243CDE01400/control { "command":"notify","input":{"trackUri":"$EVTPART2","onlyWhenPlaying":false,"timeout":10,"volume":$EVTPART1,"delayMs":700}}\
x_raw_payload:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(sonos/RINCON_5CAAFD243CDE01400/control $payload)}\
playUri:textField {fhem("sleep 1;; set $NAME play");; qq(sonos/RINCON_5CAAFD243CDE01400/control { "command": "setavtransporturi", "input": "$EVTPART1"})}\
speak:textField { my $tts="SonosTTS";;my $payload = $EVENT;;$payload =~ s/$EVTPART0 $EVTPART1 //g;; fhem("setreading $tts Player $NAME;;setreading $tts volume $EVTPART1;;set $tts tts $payload");;"{}"}
attr MQTT2_RINCON_5CAAFD243CDE01400 stateFormat [$name:bridgeConnected]\
[$name:bridgeConnected].[$name:state]\
[$name:state].previous\
[$name:state].next\
[$name:state].volumeDown\
[$name:state].volumeUp\
; ; ;\
[$name:state].[$name:mute]\
<br>[$name:state] CURRENT: [$name:AV_CurrentTrackMetaData_Artist] - [$name:AV_CurrentTrackMetaData_Title] - ([$name:currentTrack_Duration])\
<br>[$name:state] NEXT: ; ; ; ; ; ;[$name:AV_NextTrackMetaData_Artist] - [$name:AV_NextTrackMetaData_Title] - ([$name:nextTrack_Duration])
Das sieht auf den ersten Blick gut aus.
Bridge per Hand geht schon, da hast DU bloß den falschen topic eingetragen.
Ja meine Beschreibung haut noch nicht hin, ich bin noch am Basteln. Für die Speak Ausgabe musst Du noch die SonosTTS verbessern.
Da funktioniert das Zusammenbauen der url bei Dir nicht.
Vorschlag: Trag in das Reading host, das ein was bei Dir sonos erreichen kann. Du hast ja mehrere IP Adressen
define SonosTTS Text2Speech none
attr SonosTTS TTS_CacheFileDir /var/SonosSpeak
attr SonosTTS userReadings cifsName:lastFilename.* {my $host=ReadingsVal($name,'host','set host first');;my $lastFileName=ReadingsVal($name,'lastFilename','');;$lastFileName=~s/\/var/x-file-cifs:\/\/$host/g;;$lastFileName}
setreading SonosTTS host {(qx(hostname -s|tr -d '\n'))}
#setreading SonosTTS host {((split(' ', qx(hostname -I)))[0])}
Internals:
ALSADEVICE
DEF none
FUUID 5f01f024-f33f-4a31-0b85-f956270981d57f67
MODE SERVER
NAME SonosTTS
NR 42
STATE Initialized
TYPE Text2Speech
VOLUME 90
.attraggr:
.attrminint:
.userReadings:
HASH(0x1579660)
READINGS:
2020-07-06 23:21:59 Player MQTT2_RINCON_5CAAFD243CDE01400
2020-07-06 23:21:59 cifsName /mnt/SonosSpeak/3c842c02c6a0ac7764e8f7c1b4f83ca9.mp3
2020-07-06 23:14:51 host 192.168.178.46
2020-07-06 23:21:59 lastFilename /mnt/SonosSpeak/3c842c02c6a0ac7764e8f7c1b4f83ca9.mp3
2020-07-06 23:21:59 playing 0
2020-07-06 23:21:59 volume 90
helper:
Text2Speech:
Attributes:
DbLogExclude .*
TTS_CacheFileDir /mnt/SonosSpeak
TTS_Language Deutsch
room System
userReadings cifsName:lastFilename.* {my $host=ReadingsVal($name,'host','set host first');my $lastFileName=ReadingsVal($name,'lastFilename','');$lastFileName=~s/\/var/x-file-cifs:\/\/$host/g;$lastFileName}
Funktioniert leider immer noch nicht :-[ oder fehlt da noch was
Im log kann man das sehen
2020.07.07 12:12:35.805 3: MQTT2_DEVICE set MQTT2_RINCON_5CAAFD243CDE01400 speak 80 Hier sollte mein Text erklingen
2020.07.07 12:12:36.142 3: MQTT2_DEVICE set MQTT2_RINCON_5CAAFD243CDE01400 notify 80 /mnt/SonosSpeak/4bb44b521006bb1a52cee0bc78745118.mp3
2020.07.07 12:12:36.193 4: MQTT2_DEVICE_Parse: MQTT2_RINCON_5CAAFD243CDE01400 sonos/RINCON_5CAAFD243CDE01400/error => { json2nameValue($EVENT) }
Oh man, ich bin ein Dödel - jetzt sehe ich!
Du hast ja den Share namen anders, da kann meine Variante nicht gehen! 🙈
ZitatuserReadings cifsName:lastFilename.* {my $host=ReadingsVal($name,'host','set host first');my $lastFileName=ReadingsVal($name,'lastFilename','');$lastFileName=~s/\/var/x-file-cifs:\/\/$host/g;$lastFileName}
Ich mach das noch besser, aber probier mal so :)
userReadings cifsName:lastFilename.* {my $host=ReadingsVal($name,'host','set host first');my $lastFileName=ReadingsVal($name,'lastFilename','');$lastFileName=~s/\/mnt/x-file-cifs:\/\/$host/g;$lastFileName}
Ok das "var" hätte ich auch selber sehen können
aber so was es bequemer zum copy fand past.
Ich hätte diesen Vorschlag:
attr SonosTTS userReadings cifsName:lastFilename.* {my $host=ReadingsVal($name,'host','set host first');;my $lastFileName=ReadingsVal($name,'lastFilename','');;my @arr=split('/',$lastFileName);;$arr[0]='x-file-cifs:/';;$arr[1]=$host;;join('/',@arr)}
Ersetzt in lastFileName den Pfad durch den Host und baut eine url x-file-cifs:/
Damit ist es egal wie der exakte lokale Pfad ist, nur der Sharename muss gleich dem letzten Teil des Pfadnamens sein.
Danke damit geht es jetzt :)