A simple Home Assistant integration that turns entities on and off with a precise countdown timer and daily runtime tracking.
🚀 Out-of-the-box, pre-packaged timer solution, eliminating manual creation of multiple Home Assistant entities, sensors, and automations.
🕐 Flexible Timer Control - Set countdown timers in seconds, minutes, hours, or days for any switch, input_boolean, light, or fan
📊 Daily Runtime Tracking - Automatically tracks and displays daily usage time
🔄 Smart Auto-Cancel - Timer automatically cancels if the controlled device is turned off externally
🎨 Professional Timer Card - Beautiful, modern UI with customizable timer buttons and real-time countdown
🔔 Notification Support - Optional notifications for timer start, finish, and cancellation events
🌙 Midnight Reset - Daily usage statistics reset automatically at midnight
👆 Manual Usage Reset - Long-press the daily usage display to reset statistics manually
⏰ Delayed Start Timers - Turns devices ON when timer completes and keeps them on indefinitely until manually turned off
➕ Extend Timer - Add time to actively running timers on the fly without restarting
- Water Heater Control - Manage boiler schedules
- Kitchen Timers - Control smart switches for appliances
- Garden Irrigation - Time watering systems
- Lighting Control - Automatic light timers
- Fan Control - Bathroom or ventilation fans
- Any Timed Device - Universal timer for any switchable device
Use this link to open the repository in HACS and click on Download
- Download the latest release from GitHub Releases
- Extract the
custom_components/simple_timerfolder to your Home Assistantcustom_componentsdirectory - Restart Home Assistant
That's it! The timer card is automatically installed and ready to use - no additional steps required.
- Go to Settings → Devices & Services
- Click "Add Integration"
- Search for "Simple Timer"
- Select the device you want to control (switch, light, fan, input_boolean)
- Give your timer instance a descriptive name (e.g., "Kitchen Timer", "Water Heater")
- Choose notification entitiy (optional) - can be add more than one
- Check show seconds (optional) - display seconds in uasge time and notifications
- Edit your dashboard
- Add a card
- Search for "Simple Timer Card" (should appear in the card picker)
- Configure the card:
- Select your timer instance
- Customize timer buttons
- Add a custom card title (optional)
- Go to Settings → Devices & Services
- Find your Simple Timer integration
- Click Configure (⚙️ gear icon)
- Change the name and save
If you use the 3-dots menu to rename, open Configure once afterward to sync the change.
Use the card editor in the Home Assistant UI for easy configuration.
type: custom:timer-card
timer_buttons:
- 30
- 1.5h
- 15s
- 1day
hide_slider: false
timer_instance_id: your_instance_entry_id
card_title: Water Heater
power_button_icon: mdi:power
slider_max: 120
reverse_mode: false
slider_unit: min
show_daily_usage: true
slider_thumb_color: null
slider_background_color: null
timer_button_font_color: null
timer_button_background_color: null
power_button_background_color: null
power_button_icon_color: null| Option | Type | Default | Description |
|---|---|---|---|
type |
string | - | Must be custom:timer-card |
timer_instance_id |
string | - | Entry ID of your timer instance |
timer_buttons |
array | [15,30,60,90,120,150] | Timer duration buttons. Supports mixed units (e.g., [30, "15s", "1.5h", "1day"]) |
card_title |
string | - | Custom title for the card |
power_button_icon |
string | mdi:power | Icon for the power button (e.g., mdi:power) |
slider_max |
integer | 120 | Slider max value (1-1000) |
slider_unit |
string | min | Unit for the slider (s, min, h) |
reverse_mode |
boolean | false | Enable delayed start (turns device ON when timer ends) |
hide_slider |
boolean | false | Hide the slider control completely |
show_daily_usage |
boolean | true | Display daily usage statistics |
slider_thumb_color |
string | - | Custom color for the slider thumb (hex or rgba) |
slider_background_color |
string | - | Custom color for the slider track |
timer_button_font_color |
string | - | Custom font color for timer buttons |
timer_button_background_color |
string | - | Custom background color for timer buttons |
power_button_background_color |
string | - | Custom background color for the power button |
power_button_icon_color |
string | - | Custom icon color for the power button |
turn_off_on_cancel |
boolean | true | Whether to turn off the entity when the timer is cancelled |
entity_state_button_background_color |
string | - | Custom background color for the entity state button (top-left) |
entity_state_button_icon_color |
string | - | Custom icon color for the entity state button (top-left) |
Yes! Add multiple integrations for different devices.
Yes, active timers resume automatically with offline time compensation.
Yes! You can configure values with explicit units. Example: timer_buttons: [30, "45s", "1.5h", "1d"] in the card YAML.
This appears when HA was offline during a timer to indicate potential time sync issues.
- Restart Home Assistant: The card is installed during integration setup
- Check integration logs: Look for any errors during the card installation process
- Verify automatic installation: Check if
/config/www/simple-timer/timer-card.jsexists - Clear browser cache: Hard refresh with Ctrl+F5 (Windows) or Cmd+Shift+R (Mac)
- Check browser console: Press F12 and look for JavaScript errors
- Check device entity: Ensure the controlled device exists and is accessible
- Verify integration setup: Go to Settings → Devices & Services → Simple Timer
- Check logs: Look for errors in Settings → System → Logs
- Restart integration: Remove and re-add the integration if needed
- Device state changes: Timer only tracks when the device is actually ON
- Manual control: If you turn the device off manually, tracking stops (by design)
- Midnight reset: Usage resets at 00:00 each day automatically
If the automatic card installation fails:
- Check file permissions: Ensure Home Assistant can write to the
wwwdirectory - Verify disk space: Ensure sufficient space for file copying
- Check integration logs: Look for specific error messages
- Manual fallback: You can still manually copy the card file from the integration's
distfolder
If you encounter issues:
- Check the Issues page for existing solutions
- Enable debug logging:
logger: logs: custom_components.simple_timer: debug
- Create a new issue with:
- Home Assistant version
- Integration version
- Detailed error description
- Relevant log entries
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
If you find this integration useful, please consider:
- ⭐ Starring this repository
- 🐛 Reporting bugs you encounter
- 💡 Suggesting new features
- 📖 Improving documentation
Made with ❤️ for the Home Assistant community



