Home Assistant not acting on intents from 2.5-pre

Hello to all. I’ve recently started to try out 2.5-pre, but I’m having trouble getting intents to be acted upon by Home Assistant.
I have several automations in HA which I set up with 2.4.19, and they were working fine apart from false positives. Even now, if I trigger the automations within HA, I get the expected response, including speech from Rhasspy where this is defined. But when Rhasspy 2.5-pre recognises an intent, nothing seems to happen in HA.

I’m wondering if I made an error in my settings for HA, which are as follows:-

I’ve checked the long lived access token, and even tried again with a new one.
What am I missing? Any suggestions welcome!

EDIT: found this in the Docker log for the Rhasspy 2.5-pre container…

[DEBUG:2020-03-25 20:37:24,587] rhasspyhomeassistant_hermes: http://192.168.1.12/api/events/rhasspy_OpenBlind

[DEBUG:2020-03-25 20:37:24,590] rhasspyserver_hermes: Sent 276 char(s) to websocket

[DEBUG:2020-03-25 20:37:24,591] rhasspyserver_hermes: Sent 276 char(s) to websocket

[ERROR:2020-03-25 20:37:24,592] rhasspyhomeassistant_hermes: handle_intent

Traceback (most recent call last):

File “/usr/lib/rhasspy-voltron/rhasspy-homeassistant-hermes/rhasspyhomeassistant_hermes/init.py”, line 85, in handle_intent

await self.handle_home_assistant_event(nlu_intent)

File “/usr/lib/rhasspy-voltron/rhasspy-homeassistant-hermes/rhasspyhomeassistant_hermes/init.py”, line 129, in handle_home_assistant_event

response.raise_for_status()

File “/usr/lib/rhasspy-voltron/.venv/lib/python3.6/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(‘http://192.168.1.12/api/events/rhasspy_OpenBlind’)

Which HA version are you using?

I’m on Hassio 106.6, running with Docker in a Linux install on a NUC.
Rhasspy is in another container in the same Docker.

That’s weird. I’m using the same version. As far as I see you’re missing the port of Home Assistant next to the ip address. Try to add the correct port you are using. Is there anything in the logs of Home Assistant or is the request not even arriving at HA?

I have the same problem.

I did not miss the port (http://ipadress:8123)

Still nothing happens.

My Rhasspy-pre-2.5 runs in a docker. When I stop the container and run my old container containing Rhasspy 2.4.19 the intent gets handled again.

Home Assistant Version: 0.107.6

Thanks, @Bozor, I tried adding the port (:8123) but still the same problem.
There’s nothing in the HA log to show that the event is arriving - from the error in the Rhasspy log mentioned above, it seems that Rhasspy 2.5-pre is unable to make the connection to HA.

But I’m at a loss how to fix it. @synesthesiam, any ideas?

Edit: since I added the port number, the error in Rhasspy log has changed to "401: unauthorized ", and HA has an error in its log (and a notification as well) saying that an unaurthorized login attempt was made. Seems Rhasspy 2.5 isn’t sending the long lasting access code, or not sending it correctly??

1 Like

If I remember correctly I’ve had this issue as well. Try generating a new key and add the new one.

Thanks, Bozor - I tried that but still not working. I’m going to try using “intents” in HA (instead of events) but it’s not clear to me yet whether that has been added in HA.

In Home Assistant the integration for that is
Intent Script (added back in version 0.50) which is also documented in Rhasspy just below the approach to use events.

I also noticed that @synesthesiam just did some updates in the code and one of them is possibly related to the long lived access token of Home Assistant, so who knows solves that your issue and there is now also a link to the integration I linked to here.

Talking about telepathy :blush:

1 Like

I finally got around to doing a proper test with Home Assistant outside of Hass.io and found an issue with the token. I tested the event and intent method with the latest HA Docker image and all was well.

I also had a successful test using an external MQTT broker on a nonstandard port with authentication. I still need to create a master/satellite test suite, though.

The satellite Docker image is available under the tag rhasspy/rhasspy:2.5.0-pre-arm32v6
I haven’t tested it yet on my Pi Zero (ran out of time today).

Thanks again to everyone doing tests!

@geoffrey, @synesthesiam, @Bozor, Many thanks for your replies, I’m finding this forum is a huge help. :smiley:

Thanks synesthesiam for the fix of the Hassio token handling, I’ll give that a try later, hopefully this evening. And I will try out the Intent script approach as well, just to see how each goes in practice.

The Docker image for the satellite is working for me when I do a manually intent recognition using text in the Speech tab. The wakeword will be tested later today.

Something else related to this is that the label in an intent recognized MQTT message seems to be intent.intentName whereas the documentation states it is intent.name and that this is true for both the HTTP API as well as the WebSockets API.

A possible explanation for this is that the MQTT API follows the Hermes protocol.

Is there a distinction needed between the MQTT and HTTP/WebSockets API or could this be aligned @synesthesiam ?

Having a related issue with 2.5.0-pre in Docker with a master/satellite setup. Wake word/recording/intent recognition are working, but setting intent handling to “Home Assistant” on the master does not send events to Home Assistant when a satellite sends an intent. Log files don’t even show lines for rhasspyhomeassistant_hermes when a satellite sends an intent - only when I manually type in something on the master and have “handle intent” checked will the logs show the event sent Home Assistant. Setting intent handling to Home Assistant on the satellites work fine.

I assumed the master would be handling the intents, as the tutorial seems to say. Is this not the case?

I did notice that the old docs hinted at the clients handling the intents (https://rhasspy.readthedocs.io/en/latest/tutorials/#server-steps).

What’s the preferred way to do this?