ah, I’m still a bit confused how Rhasspy sends out intents. Does it broadcast them over MQTT and via the HA Intent API or HA Event API?
There is one case where I might need Node Red to interact with Rhasspy to stream radio stations to my Chromecast. I haven’t figured out if I can do that through my current RadioStation-selector-in-HA-to-Chromecast setup.
Question about HTTP vs MQTT satellite/base setup. I noticed that in the MQTT setup the Dialog Management is disabled on the Satellite and set to Rhasspy on the Base. However in the HTTP setup the Satellite is set to Rhasspy and the Base is disabled.
The dialogue manager’s job is to catch the wake word detection and automatically engage ASR/NLU to do the typical voice assistant loop (wake -> ASR -> NLU -> TTS).
When using MQTT, this loop is managed by the base station because it can send messages to each satellite saying start/stop ASR, NLU, etc. Most people choose to do ASR/NLU on the base anyways, so the satellites end up mostly just running wake and audio playback.
With HTTP, the satellites all think they’re running everything. The ASR/NLU services look like real services, but quietly use Rhasspy’s HTTP API to do their work. So the satellite still needs the dialogue manager to engage those “services” and pass messages between them.
Communicating intents to HA just means using a specific HTTP endpoint that’s enabled by adding intent: to your configuration.yaml file. It’s nice because it directly triggers intent_script instead of you having to handle events.
So with HTTP setup I am seeing the events firing in HA and in the base log I am seeing the TTS being passed back but it’s being sent to the Base and not the originating Site-ID
You’re further along than I am - but this post may help:
The TTS rest payload in HA might need to be adjusted based on a siteId variable (hopefully it is exposed as well in the event), I’ll have to play with this in the next couple days and see if I can get it set properly.
The TtsSay should be sent to the site id from the intent, which should have ultimately come from the satellite. Can you follow the MQTT messages from wake -> ASR -> NLU and see where the breakdown is?
Please also open a Github issue if this looks like a bug
I looked at the JSON received by HA and then on the Rhasspy Base and the SiteID is being set to ‘Rhasspy-Base’
The JSON on the Satellite shows the SiteID as ‘Kitchen-Sat’.
JSON From HA Events (Listen to Events)
Event 1 fired 4:54 PM:
I’m experiencing the same issue - I’m not seeing any JSON attribute being sent to HA to determine the satellite siteId. I think this will be a necessary property to get HA to send back TTS to the proper device.
I’ve switched to HA intents on the base and MQTT on the satellite, and it looks like the base does not handle the intent when it receives the message - is this a bug?
Having said that, putting the satellite siteId in that place indeed does pass through the intent, but it plays back on the base rather than passing through to the satellite, so it is still quasi-broken this way…
That’s what I’m seeing as well -
The base receives the JSON payload from the satellite, and that payload shows the satellite siteId proper, but when the base sends that payload to Home Assistant, the siteId in the JSON payload is changed to the base.
I don’t remember where I had read it since the first rhasspy satellite working I did it more than 6 months ago. but as I remember once put the siteId on top is the same if you put it on every text field, so I just put the siteId on top and I left empty the other.
Hi, I know this is an old thread but am having an issue with Rhasspy addon. Satellite works fine sending the speech to the base. Base translates well what I say and tries to connect to HA intent but it fails with 404. I am not sure what to put in the HASS part of the addon, am using SSL with HA and I put the URL of https://xxxx.duckdns.org:8123 in the URL field in Intenet. I also tried the IP address and it also failed
[WARNING:2021-03-19 17:53:34,289] rhasspydialogue_hermes: No session for id 1819bbd9-9247-411d-a69f-95c237516f1d. Dropping recognition.
[DEBUG:2021-03-19 17:53:34,291] rhasspyhomeassistant_hermes: https://caha.duckdns.org:8123/api/intent/handle
[ERROR:2021-03-19 17:53:34,375] rhasspyhomeassistant_hermes: handle_home_assistant_intent
Traceback (most recent call last):
File "/usr/lib/rhasspy/rhasspy-homeassistant-hermes/rhasspyhomeassistant_hermes/__init__.py", line 169, in handle_home_assistant_intent
response.raise_for_status()
File "/usr/lib/rhasspy/.venv/lib/python3.7/site-packages/aiohttp/client_reqrep.py", line 946, in raise_for_status
headers=self.headers)
aiohttp.client_exceptions.ClientResponseError: 404, message='Not Found', url=URL('https://xxxxx.duckdns.org:8123/api/intent/handle')
[ERROR:2021-03-19 17:53:34,376] rhasspyhomeassistant_hermes: handle_intent
Traceback (most recent call last):
File "/usr/lib/rhasspy/rhasspy-homeassistant-hermes/rhasspyhomeassistant_hermes/__init__.py", line 88, in handle_intent
assert response_dict, f"No response from {self.url}"
AssertionError: No response from https://xxxx.duckdns.org:8123
[ERROR:2021-03-19 17:53:34,377] asyncio: SSL error in data received
protocol: <asyncio.sslproto.SSLProtocol object at 0x7fafa42fd860>
transport: <_SelectorSocketTransport fd=12 read=polling write=<idle, bufsize=0>>
Traceback (most recent call last):
File "/usr/lib/python3.7/asyncio/sslproto.py", line 526, in data_received
ssldata, appdata = self._sslpipe.feed_ssldata(data)
File "/usr/lib/python3.7/asyncio/sslproto.py", line 207, in feed_ssldata
self._sslobj.unwrap()
File "/usr/lib/python3.7/ssl.py", line 767, in unwrap
return self._sslobj.shutdown()
ssl.SSLError: [SSL: KRB5_S_INIT] application data after close notify (_ssl.c:2609)