A Home Assistant integration with optional automation package and Blueprint that enforces a safe, time-limited keep-warm protocol (default 30 minutes) for smart kettles, with live countdown sensors designed for clean Lovelace UI cards.
-
Starts a keep-warm protocol when keep-warm is switched ON
-
Enforces a hard maximum keep-warm duration (default 30 minutes)
-
Exposes live countdown sensors (
Warm (mm:ss)) -
Automatically turns keep-warm OFF when:
- the time limit is reached, or
- the kettle is lifted / reports an idle status (default:
standby)
-
Designed to pair with a single, polished button-card UI
-
Prevents unsafe indefinite keep-warm loops
This project intentionally offers three layers, so users can choose how much control they want:
Installed via HACS. Provides:
- config flow
- stable entity naming
- sensors used by the UI
Implements the actual keep-warm safety logic:
- YAML package (fully transparent, copy-paste)
- Blueprint (one-click import)
A ready-made button-card that displays:
- kettle temperature
- live status with countdown
- boil control
- keep-warm toggle
This separation keeps behaviour visible, editable, and debuggable inside Home Assistant.
-
Home Assistant 2024.1+
-
HACS installed
-
A smart kettle that provides:
- a keep-warm switch entity
- a status sensor entity (e.g.
heating,Warm,standby)
- HACS → Integrations
- Menu (⋮) → Custom repositories
- Add this repository URL
- Category: Integration
- Install Kettle Protocol
- Restart Home Assistant
After restart:
Settings → Devices & Services → Add Integration → Kettle Protocol
Configure:
- Temperature sensor
e.g.
sensor.kettle_current_temperature - Status sensor
e.g.
sensor.kettle_status - Start / boil switch
e.g.
switch.kettle_start - Keep-warm switch
e.g.
switch.kettle_heat_preservation - Max keep-warm minutes (default: 30)
- Warm status value (default:
Warm) - Abort statuses (comma-separated, default:
standby)
You must choose one of the following.
This repo includes a complete automation package.
In configuration.yaml:
homeassistant:
packages: !include_dir_named packagesCopy:
packages/kettle_protocol.yaml
to:
/config/packages/kettle_protocol.yaml
Restart Home Assistant.
This enables:
- protocol state tracking
- timer enforcement
- timeout shutdown
- lift / standby abort logic
A Blueprint is included for users who prefer UI-driven setup.
Blueprint location:
.blueprints/automation/custom_kettle_card/kettle_keep_warm_protocol.yaml
- Home Assistant → Settings → Automations & Scenes → Blueprints
- Import Blueprint
- Paste the raw GitHub URL to the blueprint file (or upload it)
Create these helpers first (Settings → Devices & Services → Helpers):
- Toggle helper
input_boolean.kettle_keep_warm_protocol - Timer helper
timer.kettle_keep_warm_max(default: 00:30:00)
-
Open the Blueprint → Create Automation
-
Select:
- Keep-warm switch
- Status sensor
- Protocol flag helper
- Protocol timer
-
Adjust duration and abort status if required
sensor.kettle_status_live→ showsWarm (mm:ss)while activesensor.kettle_keep_warm_remaining→ remaining time (mm:ss)
binary_sensor.kettle_keep_warm_protocol_active
input_boolean.kettle_keep_warm_protocoltimer.kettle_keep_warm_max
A ready-made button-card is included:
examples/lovelace_button_card.yaml
- Open your dashboard
- Edit → Raw configuration editor
- Paste the contents of the file
The card provides:
- temperature display
- animated heating state
- live countdown
- boil control
- keep-warm toggle
This project exists to prevent unsafe indefinite keep-warm behaviour.
It does not bypass manufacturer protections. Always follow the kettle manufacturer’s safety guidance.
