HassStartTimer built-in intent not working with Assist

Hi all,

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?

image

I believe it happens because this needs area, and companion doesn’t have that:

I’m also pretty annoyed that new timers functionality broke my custom timers, and in the same time doesn’t work on ESP32-based satellites…

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

image

opened a github issue:

@formatBCE are you saying that this intent was working on the android & web clients before, but recent changes have broken it?

No, my custom intent was working. But since sentences are pointing to newly added default intent now, it doesn’t work.

oh dang… sorry to hear that… hopefully there’s a way to get those working again with some tinkering

Not really… But HA guys responded quickly, and fix is on the way.

What I am also missing is the chance to start already existing timer objects of HA with their default duration “start/stop timer xyz”

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… :frowning:

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.

Seems like it’s working. :tada:

A quick fake tool:

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. :slight_smile:

Nice! (Adds to pile of your tools to backport)

Oh well, so it was LLM. I thought we’re talking about regular Assist conversation agent. :slight_smile:

Sorry still stuck!

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?