I’ve set up my homeassistant on HA Yellow + Home Assistant Cloud.
Some Voice Assistant intents seem to work just fine; I can turn lights on and off and add items to my shopping list.
However, the HassStartTimer intent does not seem to work. I have exposed my timer entity to the voice assistant and am trying sentence structures described in the intent’s source file, with no success.
I have also tried not using voice and just typing the sentences into the Assist dialog – no luck here either.
Can someone help me figure out what I’m doing wrong?
Support has been added in the latest release (esphome 2024.06). Now timers should work not only on wyoming satellite, but also on esphome based devices.
and yes, it is not possible to set a timer in the main dialog box, because there is no associated device for this task. Perhaps in the future they will expand the functionality.
Yeah, bad thing that documentation is lagging behind on ESPHome site, so I succeeded with timers on ESPHome satellites only today.
However, I find it useless on ESP32-S3-BOX, as there’s no media_player, so I can’t play beeps on speaker…
thx for the info yall. I made some progress – created a modified version of the internal intent with require_context section removed. Now when I try to trigger voice assistant with my phone or web gui, I get “Sorry, timers are not supported on this device.”
Surely it couldn’t be too difficult to make timers work from companion app if the only problem is not being able to designate an area?
modified timers.yaml file below:
---
language: "en"
intents:
HassStartTimer:
data:
- sentences:
- "<timer_duration> timer"
- "timer for <timer_duration>"
- "<timer_duration> timer for {timer_name:name}"
- "timer for <timer_duration> (named|called) {timer_name:name}"
- "<timer_set>[ a] <timer_duration> timer"
- "<timer_set>[ a] timer for <timer_duration>"
- "<timer_set>[ a] <timer_duration> timer (named|called|for) {timer_name:name}"
- "<timer_set>[ a] timer (named|called) {timer_name:name} for <timer_duration>"
- "<timer_set>[ a] timer for <timer_duration> (named|called) {timer_name:name}"
- sentences:
- "{timer_command:conversation_command} in <timer_duration>"
- "in <timer_duration> {timer_command:conversation_command}"
response: command
Hello,
I’ve got the same problem here…
Default Voice assistant PE intent for timers doesn’t really work in french, but keeps hijacking the sentences and prevents my custom intent to work.
Do you know a way to disable some default intent or give priority to our custom intent instead ?
Thanks for your help
Hey!
It was long ago, and since then user’s sentences have priority in HA over system ones. However, timers are different, because they are part of the protocol extension, and I doubt there’s good workaround to that, unfortunately…
Triy to tell it somewhere at the top of your prompt, that there are 2 Intents/Scripts for Timers.
And that “HassStartTimer” is currently not working and will cause errors, so it should use “<YourTimerIntentOrScriptName>” instead EVERY time.
This helped me to use a different Script to control Music Assistant instead of the new default Intent.
Not sure that one will catch it here, T… They may be getting grabbed by the onboard timer code on the esp32. God I hate how they implemented that why the hell didnt they create a central timer method? Build timer run it destroy it or auto create a timer ent thT gets automated from… Ugh. Sorry frustrating.I digress…
I started working on something here then decided to go work on files and wait to see if esphome changed the implementation because it was a pain.
Well, Home Assistant isn’t suited for dynamic entity creation. And there’s no data structure with dynamic length like “array”, that would hold that timers - or any meaningful way to address particular timer…
I believe there’s work ongoing on timers as we speak, but it requires some fresh look.
alias: Timer Manager
icon: fas:stopwatch
description: >
This is your tool for everything related to Timers (LLM tool). Creating
timers, cancel timers, Requesting state of timers
Operations Parameter can be : set
mode: single
fields:
operation:
description: The operation you want to execute, like "set"
name: Operation
required: true
selector:
select:
options:
- set
seconds:
name: Seconds
description: Timer duration in seconds
required: true
selector:
text: null
sequence:
- action: logbook.log
data:
name: "LLM TIMER MANAGER: "
message: "{{ operation, seconds }}"
entity_id: "{{ this.entity_id }}"
- variables:
result: "{{ { 'value': 'Success: Timer started.' } }}"
- stop: ""
response_variable: result
And in my prompt:
There are 2 tools for handling Timers.
Always prefer "Timer Manager" over “HassStartTimer”,
as the latter one is not working anymore and will cause Errors.
This IS IMPORTANT, as there may be old information in your prompt
that still points to "HassStartTimer".
Help to avoid problems by using the new tool "Timer Manager".
I tried about 10 times to start a timer on the VPE, and it always used my script instead of the built-in intent.
Voice assist keeps saying no timers, I tried making a helper timer with a name but it can not be found thus not started.
The timers.yaml where is it to be found, I do not have it it seems!?
the screen assist also says no timers! or replies with “Sorry, timers are not supported on this device”, this device being my normal desktop computer in the url of HA.
What am I missing, what is not working and the why?