Supergiovane / node-red-contrib-sonospollytts

Play speech TTS using Sonos.
https://www.facebook.com/supergiovaneDev
MIT License
12 stars 6 forks source link

Sonos players can't access to <ip address>:1980 #51

Closed Gixy31 closed 3 years ago

Gixy31 commented 3 years ago

Hi, node-red is installed in a docker container on a RaspberryPi 4 running RaspberryPi OS. I installed sonospollytts node, without any problem. Then I configured one node, and everything seem to go well, the node says that Sonos is connected, and I can inject a string message, which is said to be played (after conversion in .mp3 by Polly) as seen below the node. But on the Sonos side, I have this type of message:

impossible to read tts.mp3?f=/data/sonospollyttsstorage/hailingpermanentfiles/Hailin_Hailing.mp3 impossible to connect to (IP address):1980

The files exist in the data directory which is mapped outside the container.

Another point is that the discovery doesn't work, but I've put the IP addresses of the Sonos players in the node parameters. What did I missed? Thank for your support! Denis

Supergiovane commented 3 years ago

Hi Dockerized versions of nodered are everytime a trouble. You need to forward porta 1980 (for sonos to contacting nodered) and 1400 (for sonos discovery protocol). You should maybe allow mdns through docker, but first try to simply forward the ports.

Gixy31 commented 3 years ago

Thx for the super-fast answer! Indeed, I was looking at the port forwarding inside the docker-compose.yml file. I'll try that this evening and let you informed. Thanks again :-)

Gixy31 commented 3 years ago

I'm back. Well, redirecting port 1980 in the docker-compose config file solved the problem! Sadly, the redirection of port 1400 did not solve the discovery issue.

Gixy31 commented 3 years ago

Tried to forward also port 3400, still discovery error.

Supergiovane commented 3 years ago

Try to run node red dockerized as bridged instead of natted, giving it a fixed ip. Sonos uses mdns to discover devices. Nat on docker is bad on that. Or wipeout docker and install nodered using the simple install script you find on node red website.