@Didgeridrew Thxs for the reply, but what you saying is not entirely true. Below is a detail explanation of how the timers work, I still don't know why timers fail for the exact same syntax, except for the period.
When everything works perfectly using the native Home Assistant intent engine, the architecture relies heavily on the Voice PE’s internal hardware for the actual ticking clock. Here is the step-by-step flow:
1. Audio Capture & Streaming
You trigger the wake word (e.g., "Ok Nabu") and say, "Set a timer for six minutes." The Voice PE’s microphone captures your voice and immediately begins streaming the raw audio data over your network to your Home Assistant server.
2. Speech-to-Text (STT)
Home Assistant receives the audio stream and hands it to your configured Speech-to-Text engine (in my case, Faster-Whisper running locally). Faster-Whisper transcribes the audio into a raw text string.
3. Intent Recognition (The Local Engine)
Home Assistant takes that text string and runs it through its internal conversation agent. The strict local grammar rules successfully matches text to the built-in timer intent.
4. The Handoff (HA to Voice PE)
This is the critical step. Because the local engine knows this request originated from the Voice PE (a recognized satellite device), Home Assistant does not create a standard timer entity in its core database. Instead, Home Assistant sends a command down the ESPHome/Wyoming API back to the Voice PE that essentially says: "Start your internal timer for 360 seconds." ### 5. On-Device Countdown (The ESP32 takes over) Once the Voice PE receives that command, Home Assistant’s job is completely finished. The ESP32 microchip inside the Voice PE assumes full control.
- It tracks the seconds internally.
- It visually updates the LED ring on the device to show the progress of the countdown.
6. Local Alarm & Dismissal
When the ESP32’s internal clock hits zero, the Voice PE plays the alarm chime using its own hardware. The device will continue to ring until you physically press the button on the Voice PE or issue a local stop command.
Why the Architecture works this way (and why it is frustrating)
Because steps 5 and 6 happen entirely on the ESP32 chip, this architecture creates an "ephemeral" timer. This is why:
- No Dashboard Visibility: You cannot view the timer counting down on your phone or wall tablet, because Home Assistant Core isn't tracking it—the Voice PE is.
- No Cross-Device Control: You cannot ask the bedroom speaker to cancel the kitchen's Voice PE timer.
- Data Loss on Reboot: If the Voice PE loses power or reboots during the 6 minutes, the timer disappears forever.
To get around this and force timers to live centrally in Home Assistant (so you can see them on dashboards), users often have to rely on complex workarounds, custom YAML templates, or community firmware mods like the "Voice Assistant Persistent Timers" project.