Thank’s for all contributors of the good rhasspy solution. I am new on this forum…even if I often use this forum.
I use one home assistant server and a some rhasspy machines (version 2.5) . All work very well (covers, lights, music, radios, informations, …). At the end of each request of a rhasspy sent to home assistant, home assistant execute the request and sends a vocal response to the rhasspy.
Now I use a new architecture with one rhasspy server and some satellites (with remote http and not mqtt because of an issue with mqtt). In this architecture rhasspy server sends the request to home assistant. All is ok except that rhasspy server send its own siteId, so that the vocal response of home assistant is executed on rhasspy server. Why the siteId is not the satellite siteId ?
Thank’s in advance for your response.
I think I have a similar effect using the following setup.
- external MQTT broker
- MQTT: internal
- Wakeword: local (Snowboy)
- STT: Remote HTTP
- Intent Recognition: Remote HTTP
- TTS: Remote HTTP
When I now use the satellite to generate an intent I would expect that the master sends out the hermes intent message with the siteid of the satellite so I can identify the context. Instead it will send out the master siteid.
Is this the intended behavior?
@synesthesiam Could you please check if I do something wrong or if it is a bug?
Here are some logs and more details on the configuration I use.
log file: https://pastebin.com/SwXnxFFJ
Log file: https://pastebin.com/uGwA4Aj5
In your Rhasspy server configuration you must write the name of all satellites in the fields named “Satellite siteIds”. In your case, you must write “sat1” in the fields ““Satellite siteIds”” of sections : Wake word, Speech to Text, Intent Recognition , Text to Speech, Dialogue Management.
thanks for your response.
I changed the settings as suggested on the master unit except for the wake word as it is disabled. But it doesn’t seem to work
I still get default as site id in the mqtt hermes message.
Try to use your Rhasspy server alone as a simple Rhasspy. Is it Ok ?
Try to use your Rhasspy satellite alone as a simple Rhasspy. Is it Ok ?
I join my configuration which is operational :
Is it Ok now ?
I did not check your settings in detail, but I followed the satellite instructions in the docs (https://rhasspy.readthedocs.io/en/latest/tutorials/#server-with-satellites) and get the siteId of the satellite when I use a satellite. As MQTT broker I use the one running on hassio.
I will show you my settings:
This is my master aka server, which is also being actively used in a room:
This is one of my satellites:
thanks for your reply. I changed my settings from using the remote http to hermes mqtt as you have it in your settings. This works for now So I can continue with my proof of concept.
However the docs state that the preferred approach is using the remote http to reduce mqtt traffic. So I used it and still intend to do so in the future. I guess it’s a bug with the remote http config or maybe its by design. I don’t know. That’s a question for @synesthesiam or @maxbachmann
To be clear everything works except I get the wrong siteid at the external mqtt.
I see that you are using the internal mqtt on both your master and your satellite. So maybe thats the difference. How did you check that you get the correct siteid?
Best Regards and stay healthy.
Have you tried setting intent handling on the satellites instead of the master / server?
I did try intents on the server - like you but could not get it to work at all.
My setup differs slightly - my intents are going to home assistant and not remote http…
The siteid is passed correctly in this setup, so that i can respond to the correct satellite.
I tried remote http once but failed. Im sure I did something wrong but as MQTT is working great I keep it. To reduce mqtt traffic you can define an UDP audio port like suggested in the satellite tutorial.
In my configuration, Home assistant receive the rhasspy server siteId : I use the development tools :
my setup is working fine. My Intent handling is setup on the satellite NOT the server. I am publishing events to home assistant. You can see the correct site id as ‘slave’ in the home assistant screen.
hope this helps.
I would prefer to handle intents on the server, but have not managed to get it working.
thank you all for sharing your working configs. Great community
Sorry I should have mentioned it before I don’t have Home Assistant, so basically I planned using openHAB and Node-Red based on the Hermes MQTT messages from master. Note that Intent Handling is disabled on my master and satellite.
I was hoping that it would be possible to have only the master talking to the external mqtt broker and the satellites using the internal mqtt, connecting via the remote http method to keep things a bit more organized.
However that doesn’t seem to work like I was expecting it.
I also tried the the udp approach but I get some weird behavior. Initially no message is sent via MQTT, as you would expect, but after speaking the wake word I get the wakeup sound twice, so I guess two sessions. Then the audio is streamed via mqtt but it don’t seem to stop for at least a minute or even more.
For now I reverted back to the Remote HTTP method getting the same results as shown in the screenshot from @cakp59. However that way I don’t know which satellite was used.
Will do some more tests (probably tomorrow) and post my results.
Thanks again for your help.
@friendofgermany On which mqtt topics are you listening for the intents with node-red ?
You could also try and look if the messages from the websocket contain the correct siteid. I dont have a satelite setup yet, so i can not test it at the moment.
Websocket connection from node-red
There is no extra setting that you need to activate to use this method of handling intents.
You wil need to use the ip of your rhasspy server instead of 127.0.0.1 obviously.
I would suggest you to do a fresh install and configure as per the satellite tutorial. That way you should get the correct siteID for sure.
I am also using Node-Red by the way, having intent handling disabled in rhasspy (on master not disabled but it is set to Remote HTTP with no URL so essentially disabled I think). I handle my intents completely in Node-Red with a webhook, like you intend to do it.
I also see no big advantage in using Remote HTTP vs MQTT as long as you set an UDP audio Port to keep voice in the satellites until recongnition (is in the satellite tutorial).
To-day, I have updated my server-satellites configuration (docker pull rhasspy/rhasspy).
By using MQTT and my new configuration all is now OK (server and satellites are usable) : satellite send request to server which sent it to Home Assistant with siteId of satellite, so that Home Assistant can send back an answer to satellite.
Thank’s to everybody for help.
Glad you got it working