Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

Begonnen von Otto123, 31 Mai 2020, 18:30:55

Vorheriges Thema - Nächstes Thema

Otto123

Hi,

ich habe auch festgestellt: wenn sich irgendwas an der Sonosumgebung ändert - neuer Speaker, ein Speaker war lange aus, Netzwerkrouter (DHCP) gewechselt o.ä. - dann muss man den sonos2mqtt Service neu starten.

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

der-Lolo

Best Practice?

Die nur gelegentlich genutzten Lautsprecher hier im Haus schalte ich via on-for-timer an - der Badezimmer Lautsprecher steht nur morgen für 90min zur Verfügung, oder nach anforderung via Taster im Bad.
Wie kann ich nun am schnellsten und zuverlässigsten reagieren wenn der Lautsprecher fertig ist mit Booten und bereit ist Befehle zu empfangen?

Im Badezimmer fall würde ich gerne sobald als möglich einen Radiosender laden und abspielen.

Aufgefallen ist mir das reading ts - es steht zwar nur eine Zahl drin, aber offensichtlich ist es das erste reading welches sich nach einem neustart ändert.

Welche möglichkeiten nutzt ihr? 

binford6000

Zitat von: der-Lolo am 16 September 2022, 09:41:35
Best Practice?
Welche möglichkeiten nutzt ihr?

Ich schalte bei Abwesenheit alle SONOSe aus. Bei Anwesenheit schalten sie wieder ein und dann ein sleep bis die Bridge wieder online ist:
fhem("sleep SonosBridge:connected:.2; set Beam playFav ...")

VG Sebastian

der-Lolo

Hallo Sebastian,
das ist nicht ganz mein Anwendungsfall - ein Sonos Connect im Haus läuft 24/7, somit geht die Bridge gar nicht auf disconnect...
Gibt es noch andere work arounds?

new_newbie

Hallo,

mir ist ein Fehler in der 99_sonos2mqttUtils.pm aufgefallen. Die Funktion sonos2mqtt_ur liefert für die favlist in der Bridge ein leeres Ergebnis zurück nach einem "get Favorites". Hier fehlt ein return.

if ($reading eq 'favlist'){
return sonos2mqtt_getList ($name,'Favorites')
}
#### sub for userReadings
#
sub sonos2mqtt_ur
{
my $name = shift // return '';
my $reading = shift || 'reading';
my @out;

if ($reading eq 'grouplist'){
   for (devspec2array('a:model=sonos2mqtt_speaker')) {
     if (ReadingsVal($_,'isMaster','')) {
        push @out,ReadingsVal($_,'name','')
     }
   }
  return join(',', sort @out)
}
if ($reading eq 'favlist'){
return sonos2mqtt_getList ($name,'Favorites')
}

if ($reading eq 'Input') {
   my $currentTrack_TrackUri = ReadingsVal($name,'currentTrack_TrackUri','');
   return $currentTrack_TrackUri =~ 'x-rincon-stream'
      ? 'LineIn': $currentTrack_TrackUri =~ 'spdif'
      ? 'TV'    : ReadingsVal($name,'enqueuedMetadata_UpnpClass','') eq 'object.item.audioItem.audioBroadcast'
      ? 'Radio' : 'Playlist'
  }
}


Otto123

Danke new_newbie - ich hab den bugfix eingecheckt.
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

ch.eick

#1221
Hallo zusammen,
ich habe nun seit einiger Zeit meine Sonos auch auf ghcr.io/svrooij/sonos2mqtt im Docker umgestellt.
Die FHEM Devices sind alle angelegt und das klappt dann auch soweit.
Nun fehlt mir noch die Sprachausgabe, die ich früher schonmal verwendet hatte, ich steig aber einfach nicht durch, wie das bei mqtt2 einzurichten ist.

Von der alten Installation habe ich noch dieses Share, was direkt im Basis Linux des RPI liegt.

pi@raspberrypi:/ $ ls -l /media
drwxrwxrwx  2 root root 4096 Mär 19  2022 SonosSpeak

Aber da hatte ich auch etwas gelesen, was Samba im Docker Container verwendet, allerdings finde ich es nicht mehr :-)
EDIT: https://forum.fhem.de/index.php/topic,89745.msg1034994.html#msg1034994, aber da geht es nicht weiter zur Anleitung :-(

Gibt es zu dem Thema bereits eine Step by Step Anleitung? Ich würde da auch gerne wieder auf der grünen Wiese anfangen.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

Hallo Christian,

ich nehme immer noch die TEXT2SPEECH Variante: https://wiki.fhem.de/wiki/Sonos2mqtt#Sprachausgabe

Das mit Samba ist umständlich ...

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

ch.eick

Zitat von: Otto123 am 10 Oktober 2022, 13:23:41
Hallo Christian,

ich nehme immer noch die TEXT2SPEECH Variante: https://wiki.fhem.de/wiki/Sonos2mqtt#Sprachausgabe

Das mit Samba ist umständlich ...

Gruß Otto
Hallo Otto,
okay, dann lasse ich Samba auch weg und beginne mal mit dem TEXT2SPEECH im Wiki
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#1224
Hmm,
da fehlt wohl noch was, oder es muss noch was im sonos2mqtt Container konfiguriert werden?
FHEM läuft auch im Container und MP3Wrap ist wohl schon installiert.

EDIT: Für ARM/Raspbian sind die libttspico-utils leider nicht verfügbar,
      Brauch ich das im RPI FHEM Docker Container? Mir würde die Google Stimme reichen.

EDIT: http://192.168.178.40:8083/fhem/cache/
         File not found: cache/index.html

         http://192.168.178.40:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3
         Das wird im Browser mit einem freundlichen "Hallo" abgespielt.

EDIT: @otto
         Auf Deiner Seite steht noch etwas von /var/SonosSpeak und einem zusätzlichen userReadings cifsName , das habe ich auch mal versucht.
         Ich denke das /var/SonosSpeak wird sicherlich nicht benötigt, wenn man den HTTP FHEM cache verwendet.



2022.10.10 13:49:09.899 3: MQTT2_DEVICE set MQTT2_RINCON_949F3EE130B001400 sayText Hallo
2022.10.10 13:49:10.431 3: MQTT2_DEVICE set MQTT2_RINCON_949F3EE130B001400 notify 15 http://raspberrypi:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3
2022.10.10 13:49:10.440 2: After sleep: Deleted reading text for device SonosTTS
==> es ist nichts zu hören
2022.10.10 13:49:59.472 3: MQTT2_DEVICE set MQTT2_RINCON_949F3EE130B001400 speak Hallo
2022.10.10 13:49:59.476 1: PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at ./FHEM/99_sonos2mqttUtils.pm line 141.
2022.10.10 13:49:59.477 3: eval: my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $NAME=   $evalSpecials->{'%NAME'};{sonos2mqtt($NAME,$EVENT)}
2022.10.10 13:49:59.482 3: set SonosTTS tts ;sleep SonosTTS:playing:.0 ;set MQTT2_RINCON_949F3EE130B001400 notify Hallo [SonosTTS:httpName] : tts needs text parameter
==> es ist nichts zu hören

Was ist denn der [SonosTTS:httpName] ???

Hier mal meine momentanen Devices

Internals:
   ALSADEVICE
   CFGFN     
   DEF        none
   FUUID      63440379-f33f-61a8-5b14-d9a8e23aef0da15f
   MODE       SERVER
   NAME       SonosTTS
   NR         147200
   STATE      Initialized
   TYPE       Text2Speech
   VOLUME     100
   eventCount 11
   OLDREADINGS:
   READINGS:
     2022-10-10 13:35:21   host            raspberrypi:8083
     2022-10-10 13:49:10   httpName        http://raspberrypi:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3
     2022-10-10 13:49:10   lastFilename    cache/cdd7bbbd4d163976240e58b236928cff.mp3
     2022-10-10 13:49:10   playing         0
     2022-10-10 13:48:21   vol             15
   helper:
     TTS_PlayerOptions
     Text2Speech:
Attributes:
   DbLogExclude .*
   TTS_CacheFileDir cache
   TTS_Language Deutsch
   TTS_UseMP3Wrap 1
   room       Multimedia->Sonos
   userReadings httpName:lastFilename.* {'http://'.ReadingsVal($name,'host','set host:port first').'/fhem/'.ReadingsVal($name,'lastFilename','')}


Internals:
   CFGFN     
   DEF        cache cache SonosSpeakWeb
   FUUID      63440379-f33f-61a8-68cc-c00a439c0a2836ad
   NAME       SonosSpeakWeb
   NR         147201
   STATE      SonosSpeakWeb
   TYPE       HTTPSRV
   fhem:
     directory  cache
     friendlyname SonosSpeakWeb
     infix      cache
Attributes:
   DbLogExclude .*
   room       Multimedia->Sonos
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

#1225
hier steht das reading host und httpName
Zitat2022-10-10 13:35:21   host            raspberrypi:8083
     2022-10-10 13:49:10   httpName        http://raspberrypi:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3
Wenn aber raspberrypi vom Namen her nicht nach 192.168.178.40 aufgelöst wird, funktioniert das 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

ch.eick

Zitat von: Otto123 am 10 Oktober 2022, 14:35:33
hier steht das reading host und httpNameWenn aber raspberrypi vom Namen her nicht nach 192.168.178.40 aufgelöst wird, funktioniert das nicht  ::)
Ich habe schon einiges im letzten Post eingefügt, auch das mit der IP-Adresse, es klappt aber bisher immer noch nicht.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

#1227
klappt denn einset MQTT2_RINCON_949F3EE130B001400 notify 15 http://192.168.178.40:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3

Zitatset MQTT2_RINCON_949F3EE130B001400 speak Hallo
ist falsch, dort ist es
set MQTT2_RINCON_949F3EE130B001400 speak 15 Hallo

ZitatEDIT: @otto
         Auf Deiner Seite steht noch etwas von /var/SonosSpeak und einem zusätzlichen userReadings cifsName , das habe ich auch mal versucht.
         Ich denke das /var/SonosSpeak wird sicherlich nicht benötigt, wenn man den HTTP FHEM cache verwendet.
Vergiss das, das ist nicht mehr aktuell. Das Wiki ist aktuell.
ZitatIch habe derzeit die aktuellste Anleitung ins FHEM Wiki geschrieben, aufgeteilt in 2 Artikel.
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

ch.eick

#1228
Zitat von: Otto123 am 10 Oktober 2022, 14:40:27
klappt denn einset MQTT2_RINCON_949F3EE130B001400 notify 15 http://192.168.178.40:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3
ist falsch, dort ist es
set MQTT2_RINCON_949F3EE130B001400 speak 15 Hallo
Vergiss das, das ist nicht mehr aktuell. Das Wiki ist aktuell.
Das funktioniert nicht.

2022.10.10 14:45:34.531 3: MQTT2_DEVICE set MQTT2_RINCON_949F3EE130B001400 notify 15 http://192.168.178.40:8083/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3

Im Browser wird die Datei jedoch abgespielt, was für mich zeigt, dass sie im cache bereit steht.
Muss ich im sonos2mqtt noch etwas konfigurieren?

EDIT:
cifsName x-file-cifs://192.168.178.40:8083
/var/SonosShare
sind jetzt wieder raus.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Otto123

#1229
klappt ein
set MQTT2_RINCON_949F3EE130B001400 notify 25 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3

Dürfen denn die Sonos Player mit http://192.168.178.40 reden? allowed ?

ZitatMuss ich im sonos2mqtt noch etwas konfigurieren?
eigentlich 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