Sonos2mqtt - vielleicht hat jemand Lust mitzumachen

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

Vorheriges Thema - Nächstes Thema

ch.eick

Zitat von: Otto123 am 10 Oktober 2022, 14:50:58
klappt ein
set MQTT2_RINCON_949F3EE130B001400 notify 25 https://cdn.smartersoft-group.com/various/pull-bell-short.mp3
Okay, es war beim ersten mal ziemlich verzögert, aber dann kam der Sound.

Zitat
Dürfen denn die Sonos Player mit http://192.168.178.40 reden? allowed ?
Das habe ich so im Docker

  sonos:
    image: ghcr.io/svrooij/sonos2mqtt
    # or the dockerhub svrooij/sonos2mqtt
    restart: unless-stopped
    ports:
      - "6329:6329"
    environment:
      - SONOS2MQTT_DEVICE=192.168.178.36 # Service discovery doesn't work very well inside docker, so start with one device.
      - SONOS2MQTT_MQTT=mqtt://192.168.178.40:1883 # mqtt2_server FHEM
      # - SONOS2MQTT_DISTINCT=true # if your want distinct topics
      - SONOS_LISTENER_HOST=192.168.178.40 # Docker host IP
      # - SONOS_TTS_ENDPOINT=http://sonos-tts:5601/api/generate # If you deployed the TTS with the same docker-compose
    depends_on:
      - "fhem"
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

Also Sound geht prinzipiell, Deine Sonosplayer kommen offenbar nicht an den WebServer von FHEM.
Der Web Server von FHEM geht aber: Browsertest hat funktioniert  :-\
TTS funktioniert und erzeugt mp3 Dateien

Die Docker Konfiguration spielt da keine Rolle.
Deine Sonosplayer sind im gleichen IP Segment: 192.168.178.x ?
Das FHEMWEB ist im Zugriff nicht auf IP Adressen eingeschränkt?
zusätzliche Firewall aktiv?
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, 15:16:29
Deine Sonosplayer sind im gleichen IP Segment: 192.168.178.x ?
ja

Zitat
zusätzliche Firewall aktiv?
Hausintern ist da nichts.

Zitat
Das FHEMWEB ist im Zugriff nicht auf IP Adressen eingeschränkt?
Da ist eine Benutzerkennung und ein Passwort drauf und das wird es sein...
In einem private Browser wird das beim Aufruf der mp3 abgefragt.
Wie kann ich das denn ohne große Sicherheitslücke für den cache ohne Passwort freigeben?
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

#1233
ZitatDa ist eine Benutzerkennung und ein Passwort drauf und das wird es sein...
Du wieder  ;D :o

Wie machst Du das nun: zus. FHEMWEB mit neuem Port definieren - Sonos2mqtt port umstellen und testen
Dann dieses WEB in der Nutzung auf das cache Directory einschränken - wenn ich wüßte ob und wie das geht  :-[

Oder anderen WEB Server starten der nichts mit FHEMWEB zu tun hat.
Also konsequenterweise einen kleinen Stino WEB Server Container, der das Arbeitsverzeichnis fhem/cache (oder anderes Verzeichnis in das auch TEXT2SPEECH schreibt) gemappt bekommt :)
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, 15:32:45
Du wieder  ;D :o
Hast Du im Haus intern alles offen, oder wie sind da die Empfehlungen für FHEM?
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

Sooo, nun geht es.

Wer also eine Benutzerkennung mit Passwort verwendet muss sich einen zweiten FHEM Port konfigurieren und diesen dann z.B. auf die IP-Adresse des Sonos2mqtt limitieren.

Vielen Dank für die Hilfe
     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

Ja ich habe intern mein FHEM offen. Ne Empfehlung gibt es glaube ich nicht. Aber ich achte schon  auf Sicherheit :)
Meine Bemerkung galt weniger dem "nicht offen" sondern mehr Dir, hätte Dir ja einfallen können, dass Sonos Deinen Account nicht hat ;)
Funktioniert das wirklich mit der IP von sonso2mqtt? Ich habe das nie probiert, habe aber gedacht der Player bekommt nur die url zugeworfen und muss dann selbst holen. Wenn das funktioniert ist ja gut zu wissen.

Ich baue bei Gelegenheit mal noch ne Anleitung in Richtung Web Server Container.

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, 18:36:55
Ja ich habe intern mein FHEM offen. Ne Empfehlung gibt es glaube ich nicht. Aber ich achte schon  auf Sicherheit :)
Meine Bemerkung galt weniger dem "nicht offen" sondern mehr Dir, hätte Dir ja einfallen können, dass Sonos Deinen Account nicht hat ;)
Funktioniert das wirklich mit der IP von sonso2mqtt? Ich habe das nie probiert, habe aber gedacht der Player bekommt nur die url zugeworfen und muss dann selbst holen. Wenn das funktioniert ist ja gut zu wissen.
Wenn man den Mechanismuss versteht, kann man auch drauf kommen ;-)
Das zuwerfen und selber drum kümmern ist der Schlüssel hierbei.

Ich hatte schon einen weiteren Port für das FHEMWEB, der für eine API verwendt wird, dort habe ich nun die IP-Adresse des Sonos2mqtt Containers zugelassen.
Folgendes konnte man nach der Port Änderung im FHEM Log sehen

2022.10.10 16:36:22.306 3: MQTT2_DEVICE set MQTT2_RINCON_949F3EE130B001400 sayText Hallo
2022.10.10 16:36:22.839 3: MQTT2_DEVICE set MQTT2_RINCON_949F3EE130B001400 notify 15 http://192.168.178.40:8088/fhem/cache/cdd7bbbd4d163976240e58b236928cff.mp3
2022.10.10 16:36:22.847 2: After sleep: Deleted reading text for device SonosTTS
2022.10.10 16:36:22.915 1: Connection refused from 192.168.178.35:46435

Bisher konnte nur FHEM selber die WEBapi verwenden und nun halt auch Sonos2mqtt

allowfrom 192.168.178.40|192.168.178.35|127.0.0.1


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

m8ichael

Hallo,

mal eine kurze Frage in die Runde: Gibt es bei sonos2mqtt etwas zu beachten bei der Angabe der MQTT-Zugangsdaten? Ich habe jetzt einmal das ganze neu installieren müssen und nun meckert sonos2mqtt stets, dass die Verbindung zum MQTT-Server zurückgewiesen wird. Dabei nutze ich die folgende Befehlszeile zum Start von sonos2mqtt:

sonos2mqtt -- --device 10.20.1.33 --mqtt mqtt://user:PASSWORT@127.0.0.1:1883

Als MQTT-Server nutze ich mosquitto auf der gleichen Maschine (also IP 127.0.0.1). Konfiguriere ich Mosquitto ohne Passwortsicherung, so funktioniert alles, wie es soll. Andersherum komme ich mit anderen Clients ganz normal auch bei aktiviertem Passwortschutz auf den MQTT-Server. Ich stehe irgendwie auf'n Schlauch...

Viele Grüße

Michael

Otto123

Hallo Michael,

keine Erfahrung damit, aber allgemeine Idee: Sonderzeichen im user:password Konstrukt? Wenn ja muss man die hier encodieren?

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

m8ichael

Hallo Otto,

Zitat von: Otto123 am 11 Oktober 2022, 21:06:16
keine Erfahrung damit, aber allgemeine Idee: Sonderzeichen im user:password Konstrukt? Wenn ja muss man die hier encodieren?

Das scheint hier nicht der Fehler zu sein, da ich testweise auch ein Passwort vergeben habe, welches nur aus Kleinbuchstaben besteht. Auch hier wird ein Authorisierungsfehler seitens sonos2mqtt gemeldet.  :-\

Otto123

Tut mir leid, keine Erfahrung mit dem Betrieb mit mosquitto - ich verwende MQTT2_SERVER.
Wie startest Du sonos2mqtt? Deine Zeile sieht aus wie pm2?
Hast Du alternative config Methoden probiert? https://svrooij.io/sonos2mqtt/getting-started.html#local-installation
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

kjmEjfu

Ich wiederhole mich ja ungern ;-) aber Sonos2Mqtt ist prima für Docker geeignet und läuft da saustabil und mit viel weniger Problemen.
Man kann svrooij/sonos2mqtt nutzen und zusätzlich auch noch svrooij/sonos-tts-polly

Läuft einfach - auch mit mosquitto  ;D
Migriere derzeit zu Home Assistant

new_newbie

Hallo Otto,
mir ist noch etwas aufgefallen. Als Favoriten werden nur die Radiostationen übernommen, nicht aber die Sonos eigenen Sender. Hat das einen bestimmten Grund?

Ich habe in meiner Datei die Funktion sub sonos2mqtt_getList etwas erweitert, damit eben auch die Sonos eigenen Sender mit in die Favoriten übernommen werden.

Aus if ( $_->{'TrackUri'} =~ /x-sonosapi-stream/) habe ich if ( $_->{'TrackUri'} =~ /x-sonosapi-stream/ or $_->{'TrackUri'} =~ /x-sonosapi-radio/) gemacht.
Die komplette Funktion anbei.

# return a list of Titles from the favorite json Arrays
# the Favorites Array will be filtered and returns only Radio stations
sub sonos2mqtt_getList
{
my $name = shift // return '';
my $reading = shift || 'Favorites';
my @out;
   use JSON;
   use HTML::Entities;
   use Encode qw(encode decode);
   my $enc = 'UTF8';
   my $decoded = decode_json(ReadingsVal($name,$reading,''));
   my @arr  = @{$decoded->{'Result'}};
   for (@arr) {
     my $dec = encode($enc, decode_entities($_->{'Title'}));
     $dec =~ s/\s/./g;
     if ($reading eq 'Favorites') {
    if ( $_->{'TrackUri'} =~ /x-sonosapi-stream/ or $_->{'TrackUri'} =~ /x-sonosapi-radio/){
       push @out,$dec;
    }
} else {push @out,$dec;}
   }
  return join(',', @out);
}

Otto123

Hi,

danke für die Info.
Zitat von: new_newbie am 22 November 2022, 20:14:36
mir ist noch etwas aufgefallen. Als Favoriten werden nur die Radiostationen übernommen, nicht aber die Sonos eigenen Sender. Hat das einen bestimmten Grund?
keinen bestimmten aber einfachen: ich wusste es nicht besser. Ich probiere es aus und bau es mit ein.

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