Simultaneously receiving commands from multiple satellites

Hey Rhasspy Community,

I couldnt seem to find an answer in the forums so I thought i should ask the question myself.
First of all, love the project, its amazing thanks for maintaining it!

I am currently asking myself if it was possible to have a setup with multiple satellites and a server where the satellites can send commands simultaneously, more specific, if the server running rhasspy could handle more than one command at once.

So if for example my wife was in the kitchen and says: “Turn on the lights” and I was in the living room saying “Play music” at the same time, would that work? From my understanding of the project it wouldnt right?

If it wouldnt, is there a smart way for a workaround? Maybe multiples docker images of rhasspy on a server, each one handling one siteId?

Thanks in advance for any response!

Sincere

Felix

First of all: Welcome to the Rhasspy forum!

Imo, there’s no real problem in using one central Rhasspy unit to do the intent recognition for several satellites in parallel. Basically, all data is exchanged using a “session id”, and typically also the info is provided to which satellite any information belongs to. So as long as the automation software handling the actions derived from the recognized intent is able to distinguish between the satellites, also the response towards the “turn on the lights”-speaker in the kitchen will be a different one than towards the one asking for the recent weather forecast in the living room.

What’s the automation software you plan to use Rhasspy with?

I have also played around with this; though in my case because the Rhasspy satellites in the open-plan Kitchen / Living room sometimes both respond to the same command :frowning:

As Felix said, Rhasspy does process each intent independently because of the unique session_id and MQTT message queue.

In my particular case (using a RasPi 4 as server running Home Assistant OS, Rhasspy, MQTT and node-RED to handle the intents) I found that node-RED pretty much completes processing of one message before starting on the next. I suspect that is a feature or side-effect of MQTT; though it could be that node-RED, HAOS or the RasPi CPU is not as good at multi-tasking as other systems.

Whatever the reason, I have not had a situation where the second message starts processing while the first is still happening. Instead i have to check whether the next message is a repeat.