How Rhasspy Integrates with Home Assistant, Node-RED, and Other Home Automation Software
Updated
Rhasspy connects to home automation software by turning spoken commands into structured JSON events and delivering them over MQTT (Hermes protocol), HTTP, or WebSockets. Home Assistant and Hass.io have built-in support, and Node-RED, Jeedom, and OpenHAB are listed as compatible targets. The practical requirement is that you author voice commands in Rhasspy's template language and train them, then wire the resulting intents into your automation tool.
The core mechanism: commands in, JSON out
You define voice commands in a template language. The documentation example is:
[LightState]
states = (on | off)
turn (){state} [the] light
When Rhasspy recognizes a matching utterance, it produces a JSON event:
{
"text": "turn on the light",
"intent": {
"name": "LightState"
},
"slots": {
"state": "on"
}
}
Your automation software listens for that event and acts on the intent.name and slots values. This separation matters: Rhasspy handles wake word, speech-to-text, and intent recognition, while your home automation system decides what to actually do.
Integration paths
| Path | How it works | Best when |
|---|---|---|
| Hermes MQTT | Rhasspy sends and receives Hermes protocol messages (compatible with Snips.AI services) | You already run an MQTT broker or want a decoupled, event-driven setup |
| HTTP API | The web UI's full functionality is exposed in a comprehensive HTTP API | You want to trigger configuration, training, or recognition from scripts |
| WebSockets | Connect a WebSocket to one of Rhasspy's endpoints | You need a persistent, low-latency connection for streaming events |
| Built-in support | Home Assistant and Hass.io have native support | You run Home Assistant and want the shortest path to a working setup |
The documentation explicitly states Rhasspy is optimized for working with external services via MQTT, HTTP, and WebSockets, and that Home Assistant and Hass.io have built-in support.
What a Node-RED flow looks like conceptually
A Node-RED flow subscribes to the intent event and branches on intent.name. For the example above, the flow would check for LightState and read slots.state to decide whether to turn the light on or off. The documentation names Node-RED flows as a direct trigger target for Rhasspy's JSON events.
Getting from install to integration
The documented getting-started sequence is:
- Make sure you have the necessary hardware (audio input and output are listed as separate topics in the docs).
- Choose an installation method.
- Access the web interface to download a profile.
- Author your custom voice commands and train Rhasspy.
- Connect Rhasspy to other software such as Home Assistant or a Node-RED flow by sending and receiving Hermes MQTT messages, using the HTTP API, or connecting a WebSocket.
Steps 1–4 are prerequisites; step 5 is where integration actually happens. Skipping training means no intents will fire, regardless of how your automation side is configured.
Choosing your connection method
- Pick MQTT/Hermes if you want Rhasspy and your automation logic to run as independent services, or if you already have a broker and other Hermes-compatible tools.
- Pick built-in Home Assistant support if Home Assistant is your hub and you want the least custom wiring.
- Pick HTTP or WebSockets if you are scripting against Rhasspy itself — for example, triggering training or recognition from an external program — rather than only consuming intent events.
Where to go next
The documentation points to a Getting Started Guide, a "Why Rhasspy?" whitepaper, and a community Discourse site for troubleshooting, plus a GitHub issue tracker. Supported languages are covered on a dedicated page, which matters if your household does not speak English.