Sonos Say

I have created an Athom App that makes use of node-sonos-http-api to send out speech from your flow. Setup up a node-sonos, install the app, point the settings to your node-sonos instans. Then you just add the Text to Speech in your flow and wola, your sonos will start talking.

Since the app needs you to install node-sonos on a separat instance the app will not be approved for the official app store (tried and got declined).

But for you who want, you can download it here and run it:
Sonos-Say Github

Hope you like it


Tried it yesterday. Works really nice. Don’t forget the ‘/’ at the end: http://:5005/ :wink:.

Also have some suggestions:

  • Would be nice if you can configure the volume from the flowcard. Or maybe don’t set a specific volume from settings, but use the volume from the Sonos how its set.
  • Would be nice if if you can configure the roomname where to say something from the flowcard:
    /[Room name]/say/[phrase][/[language_code]][/[announce volume]]
    /sayall/[phrase][/[language_code]][/[announce volume]]

Where did you install the node instance on?

Hi, sorry for late reply. I just installed it on a Raspberry PI I have for Home assistant. Simple and clean. Will do some update in the week for the module to fix some stuff more like @roel_hendr wanted.

Why not integrate it into your app?

I tried that in the beginning but there was a lot of modules that could not run on the Homey hardware. So there would have to be so much work fixing it. So since this is mostly done for my own sake :slight_smile: it works for me. Feels like any real haxxor has at least one PI to play around with.


Yeah, I also just noticed that some dependencies (especially aws-sdk) are (relatively) huge :frowning:

I’ve allowed myself to upgrade your app a little and will create a pr later. Btw: Sonos S2 will most likely break the sonos http api so do better not upgrade!

I’ve created a PR, if you want to get it faster you can grab it over here.

Superb! Thanks for the work

is this [node-sonos-http-api ] the same as we used for the toon thermostat?
Or is this another version because of the speech?

I have this on my backlog for a while now. I did however already upgrade to S2, Is there any news on the support for S2?

On the github it still says “will most likely break”.


Installed in Docker, seems to work just fine.

Only i’m getting the following:

Any thoughts?

If I browse to the url (ip:5005/Huiskamer/mute for exampe, i’m getting a ‘susses’.

If I enter it also just works. Need to remember to have it unmuted first :wink:

In the app on mobile it cannot find the speakers, but doesn’t give the error as mentioned above.

I installed now to test it out. Nice work @MadMonkey
I however got the same issue as you @Martijn_Hoogenbosch
I then ran it development athom app run. It then worked. After that switched back to athom app install. Now it works :). Strange stuff. But maybe a nice workaround.

Not sure, what happens if you remove the card and add it again?

After my fix with install, run, install it works like it should. So cant reproduce it now. Feels like something is going wrong the first time around maybe that is cleared up with a reinstall. But any how it works now and it looks smashing :slight_smile:

Hi, does anybody knows/have a docker container with node-sonos-http-api for synology?


yes, just get the ‘normal’ docker container referred in the listing… i’ll look it up for you.

This one is working on my 1812+ flawlessly, make sure you use the HOST networking. So hopefully you don’t have anything running on port 5005.

1 Like

I’m going to try this later today, thanks! Hopefully it works for me too.

@MadMonkey is there anything you want me to test first? If it works i’m not able to reproduce anymore. Recreating the flow or card doesn’t solve anything for me.

I tried the reinstall workaround and got the same error messages.

Please make sure that you filled out the field port in the settings of the app. It seems that the field port is already filled out with the default port 5005 in light grey. But nevertheless you have to fill out the field even with the default port. After that, restart the app.

Then it worked for me.

Thank you @Martijn_Hoogenbosch very much. Works like charm!

1 Like