A complete Home Assistant custom integration for Fellow EKG electric kettles (Stagg EKG, Stagg EKG+, Stagg EKG Pro, and Corvo EKG) with temperature control, automation support, and real-time monitoring.
Works with all Fellow kettles that have the HTTP CLI interface.
✨ Complete Control
- Turn kettle on/off from Home Assistant
- Set target temperature (40-100°C / 104-212°F)
- Monitor current water temperature in real-time
- View operating mode and heating status
🌡️ Temperature Management
- Choose between Celsius or Fahrenheit
- Syncs with kettle's LCD display
- Precise 0.5°C temperature steps
- Automatic temperature validation
🔒 Safety Features
- Low water detection warning
- Automatic power management
- Temperature range limits
- Safe heating cycle control
🤖 Home Assistant Integration
- 8 entities for complete control
- Water heater entity for climate integration
- Binary sensors for status monitoring
- Switches for direct control
- Full automation support
📡 Local Control
- No cloud connection required
- Works entirely on local network
- Fast response times
- Standalone Python API included
| Entity | Type | Purpose |
|---|---|---|
water_heater.fellow_kettle |
Water Heater | Main control interface |
sensor.fellow_current_temperature |
Sensor | Real-time water temperature |
sensor.fellow_target_temperature |
Sensor | Target temperature setting |
sensor.fellow_mode |
Sensor | Operating mode (Off, Heat, Standby) |
switch.fellow_heating |
Switch | Heating element control |
switch.fellow_warming |
Switch | Warming mode control |
binary_sensor.fellow_power |
Binary Sensor | Power on/off status |
binary_sensor.fellow_low_water_warning |
Binary Sensor | Water detection alert |
- Make sure HACS is installed
- Add this repository as a custom repository:
- Go to HACS → Integrations
- Click the three dots in the top right
- Select "Custom repositories"
- Add repository URL:
https://github.com/rderewianko/fellow-ekg - Category: Integration
- Click "Install" on the Stagg EKG+ integration
- Restart Home Assistant
- Add the integration:
- Go to Settings → Devices & Services → Add Integration
- Search for "Fellow Stagg EKG+"
- Enter your kettle's IP address
- Choose temperature unit (Celsius or Fahrenheit)
- Download the
custom_components/fellowfolder - Copy it to your Home Assistant
config/custom_components/directory - Restart Home Assistant
- Add the integration via Settings → Devices & Services
The kettle connects to your WiFi network. Find its IP address:
- Check your router's DHCP client list
- Look for a device named:
- "Stagg EKG" or "Fellow"
- "espressif" (the ESP32 manufacturer)
- May include part of the MAC address (e.g., "espressif 16:b0")
- Note the IP address (e.g.,
192.168.1.100)
Tip: Set a static IP or DHCP reservation for your kettle to prevent the address from changing.
- Go to Settings → Devices & Services → Add Integration
- Search for "Fellow Stagg EKG+"
- Enter configuration:
- Host: Your kettle's IP address
- Temperature Unit: Choose Celsius or Fahrenheit
- Click Submit
The integration will sync the temperature unit with your kettle's LCD display.
- Go to Settings → Devices & Services
- Find "Stagg EKG+"
- Click "CONFIGURE"
- Select your preferred unit
- Submit - the kettle display updates immediately
# Heat water to 95°C
service: water_heater.turn_on
target:
entity_id: water_heater.fellow_kettle
data:
temperature: 95Morning Coffee
automation:
- alias: "Morning Coffee"
trigger:
platform: time
at: "07:00:00"
condition:
# Only if water detected
- condition: state
entity_id: binary_sensor.fellow_low_water_warning
state: "off"
action:
- service: water_heater.set_temperature
target:
entity_id: water_heater.fellow_kettle
data:
temperature: 95
- service: water_heater.turn_on
target:
entity_id: water_heater.fellow_kettleWater Ready Notification
automation:
- alias: "Water Ready Notification"
trigger:
- platform: template
value_template: >
{{ states('sensor.fellow_current_temperature')|float >=
states.water_heater.fellow_kettle.attributes.temperature|float - 2 }}
condition:
- condition: state
entity_id: water_heater.fellow_kettle
attribute: current_operation
state: "heat"
action:
- service: notify.mobile_app
data:
message: "Kettle water is ready!"
title: "☕ Coffee Time"Tea Temperature Presets
script:
heat_green_tea:
alias: "Heat for Green Tea"
sequence:
- service: water_heater.set_temperature
target:
entity_id: water_heater.fellow_kettle
data:
temperature: 75
- service: water_heater.turn_on
target:
entity_id: water_heater.fellow_kettle
heat_black_tea:
alias: "Heat for Black Tea"
sequence:
- service: water_heater.set_temperature
target:
entity_id: water_heater.fellow_kettle
data:
temperature: 95
- service: water_heater.turn_on
target:
entity_id: water_heater.fellow_kettletype: thermostat
entity: water_heater.fellow_kettle
name: Coffee KettleThe repository includes a standalone Python API (stagg_ekg_api.py) for use outside Home Assistant.
from stagg_ekg_api import StaggEKGClient
# Initialize
kettle = StaggEKGClient(host="192.168.1.100")
# Heat water to 95°C
kettle.heat_to_temperature(95)
# Check status
state = kettle.get_state()
print(f"Current: {state.current_temp_c}°C / Target: {state.set_temp_c}°C")See PYTHON_API_EXAMPLES.md for complete usage examples.
- Firmware: 1.1.76SSP CLI (May 9, 2024)
- Platform: ESP32 (Espressif)
- Protocol: HTTP
- Port: 80
- API: CLI interface at
/cli?cmd=<command>
- Range: 40-100°C (104-212°F)
- Step Size: 0.5°C per dial click
- Internal Format: "2C" (temperature × 2)
- Control Method: Dial rotation (no direct API)
The kettle has two buttons:
- Button 1: Separate button on base (opens menus)
- Button 2: The dial itself is pressable (wakes and starts heating)
The integration uses Button 2 for power/start operations.
- Automatic polling: Every 30 seconds
- Command response: Immediate refresh after control actions
- Typical latency: 1-2 seconds for commands
See KETTLE_SPECS.md for complete technical documentation.
- Verify the kettle is powered on and WiFi is enabled
- Check the IP address hasn't changed
- Ensure Home Assistant can reach the kettle's network
- Try pinging the kettle:
ping 192.168.1.100
- Warning triggers when temperature < 30°C
- If water is present but cold, warning will clear as temp rises
- This is a temperature-based heuristic, not a physical sensor
- Check integration configuration (Settings → Integrations → Stagg EKG → Configure)
- Changing units in HA updates the kettle's LCD display
- Restart integration if sync fails
- The integration automatically wakes the screen
- Commands may take 1-2 seconds to complete
- Check entity state updates after a moment
Contributions are welcome! Please feel free to submit a Pull Request.
This is free and unencumbered software released into the public domain. See the LICENSE file for details.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software for any purpose, commercial or non-commercial, and by any means.
- Built for Fellow EKG electric kettles (Stagg EKG, Stagg EKG+, Stagg EKG Pro, Corvo EKG)
- Uses the kettle's built-in HTTP CLI interface
- Developed and tested with firmware version 1.1.76SSP CLI on Home Assistant 2025.12.5
- Created with AI assistance - This integration was developed using Claude Code
This is an unofficial integration not affiliated with Fellow Products. Use at your own risk.
Enjoy your smart kettle! ☕
If you find this integration helpful, consider starring the repository!