Voice Assistant Persistent Timers - Timers That Survive Reboots!

TL;DR: Make your ESPHome voice assistant timers persistent by storing them in Home Assistant. Timers survive reboots, can be controlled from any device, and you can add visual displays like LED matrices or touchscreens.


The Problem

If you’ve used timers with ESPHome voice assistants, you’ve probably noticed they’re ephemeral—reboot the device and your timer is gone. Forget checking how much time is left from another room. And if you want a visual countdown? Good luck.

The Solution

This project moves timer management from the ESP device to Home Assistant, giving you:

  • :stopwatch: Persistent Timers - Timers survive device reboots and reconnections
  • :house: Cross-Device Control - “Hey, start the kitchen timer” works from the bedroom
  • :bar_chart: Visual Displays - Add progress bars to WLED strips, HUB75 LED matrices, or LCD touchscreens
  • :dart: Area-Aware - Each voice assistant manages timers for its assigned area
  • :speaking_head: Natural Commands - Works with standard voice commands: “Set a 10 minute timer”, “Pause the timer”, “How much time is left?”

How It Works

┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Voice Command  │────▶│  Home Assistant  │────▶│  Timer Entity   │
│  "Set timer"    │     │  Intent Scripts  │     │  timer.kitchen  │
└─────────────────┘     └──────────────────┘     └─────────────────┘
                                                          │
                              ┌────────────────────────────┘
                              ▼
┌─────────────────┐     ┌──────────────────┐
│  ESPHome Device │◀────│ Template Sensors │
│  Display/Audio  │     │ Remaining time,  │
└─────────────────┘     │ progress, state  │
                        └──────────────────┘

The ESP device handles voice input and audio feedback, while Home Assistant manages the actual timer state. Template sensors calculate remaining time and progress, which get pushed back to the device for display updates.

Supported Devices

Ready-to-use configurations for:

  • Espressif ESP32-S3-BOX-3
  • Waveshare ESP32-S3 Audio Board
  • Waveshare ESP32-S3 Touch LCD 1.83"

Plus example configs for adding timer displays to HUB75 LED matrices, WLED strips, and LCD touch panels.

Getting Started

Full documentation with step-by-step installation:
:point_right: Voice Assistant Persistent Timers - Voice Assistant Persistent Timers

The site includes:

  • Complete Home Assistant configuration files (timer entities, templates, intent scripts)
  • ESPHome device configurations with timer display packages
  • Examples for visual timer displays (LED strips, matrices, touchscreens)
  • Troubleshooting guide

Questions?

Happy to answer questions here. If you find bugs or have feature requests, open an issue on GitHub!

3 Likes

That is a very extended piece of documentation. Very nice. Thank you for sharing

1 Like

You’re welcome. It took me quite a while to get it all working, so I figured documenting it end-to-end would make it easier to rebuild if I broke it. :slight_smile: