A Home Assistant custom integration that monitors OpenTherm boiler data through your rooted Toon thermostat's ketelmodule. Get real-time insights into boiler temperature, pressure, modulation levels, and room temperature.
Monitor your heating system with these sensors:
- Toon Boiler SetPoint - Target water temperature
- Toon Boiler InTemp - Return water temperature
- Toon Boiler OutTemp - Supply water temperature
- Toon Boiler Pressure - System pressure in bar
- Toon Boiler Modulation - Current modulation level
- Toon Room Temp - Current room temperature
- Toon Room Temp SetPoint - Target room temperature
All sensors are created by default and grouped under a single device for easy management.
- Rooted Toon thermostat (available in the Netherlands and Belgium)
- ToonStore installed on your Toon
- BoilerStatus app installed via ToonStore
For rooting instructions and app installation, visit the Eneco Toon Domotica Forum.
Alternatively:
- Install HACS if not already installed
- Search for "Toon BoilerStatus" in HACS
- Click Download
- Restart Home Assistant
- Add via Settings → Devices & Services
- Copy the
custom_components/toon_boilerstatusfolder to your<config>/custom_components/directory - Restart Home Assistant
- Add via Settings → Devices & Services
- Navigate to Settings → Devices & Services
- Click + Add Integration
- Search for "Toon Boiler Status"
- Enter your configuration:
- Host: Your Toon's IP address
- Port: Default is
80 - Name: Friendly name prefix (default: "Toon")
- Update Interval: Seconds between updates (default:
10)
The integration validates your connection and creates all sensors automatically. Disable sensors you don't need via Settings → Devices & Services → Toon Boiler Status → click a sensor → cogwheel icon → "Enable entity" toggle.
Note: YAML configuration is deprecated as of v2.0.0
If you previously configured this integration in configuration.yaml, your settings will be automatically imported on your first restart after updating.
Your old YAML config (will be migrated):
sensor:
- platform: toon_boilerstatus
name: Toon
host: 192.168.1.100
port: 80
scan_interval: 10
resources: # Ignored - all sensors are now created
- boilersetpoint
- boilerintemp
...After migration:
- Remove the YAML configuration from
configuration.yaml - Manage all settings via Settings → Devices & Services → Toon Boiler Status → Configure
- Disable unwanted sensors through entity settings
Change integration settings without restarting Home Assistant:
- Go to Settings → Devices & Services
- Find Toon Boiler Status
- Click Configure icon
- Modify name or scan interval
- Click Submit
Changes apply immediately. To enable/disable individual sensors, click on the sensor entity and toggle "Enable entity".
Monitor boiler status changes:
automation:
- alias: "Alert Low Boiler Pressure"
trigger:
- platform: numeric_state
entity_id: sensor.toon_boiler_pressure
below: 1.0
action:
- service: notify.mobile_app
data:
message: "Warning: Boiler pressure is low ({{ states('sensor.toon_boiler_pressure') }} bar)"Add to configuration.yaml:
logger:
default: info
logs:
custom_components.toon_boilerstatus: debugAlternatively, enable debug logging via the UI in Settings → Devices & Services → Toon Boiler Status → Enable debug logging:
Then perform any steps to reproduce the issue and disable debug logging again. It will download the relevant log file automatically.
Integration won't connect:
- Verify your Toon's IP address is correct
- Ensure the BoilerStatus app is installed and running on your Toon
- Check that port 80 is accessible (try visiting
http://YOUR_TOON_IP/boilerstatus/boilervalues.txtin a browser)
Old YAML config not migrating:
- Check Home Assistant logs for import errors
- Verify the YAML syntax is correct
- Manually add via UI if automatic import fails
Quick-start (from project root):
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements_lint.txt
./scripts/lint # runs pre-commit + vulture
# or: ruff check .
# to auto-fix: ruff check . --fixIf you find this library useful for your projects, please consider supporting its continued development and maintenance:
- ⭐ Star this repository - Help others discover the project
- 💰 Financial Support - Contribute to development and hosting costs
- 🐛 Report Issues - Help improve stability and compatibility
- 📖 Spread the Word - Share with other developers
Why Support?
- Keeps the project actively maintained
- Enables faster bug fixes and new features
- Supports testing infrastructure and CI/CD
- Shows appreciation for development time
Every contribution, no matter the size, makes a difference and is greatly appreciated! 🙏
This project is licensed under the MIT License - see the LICENSE file for details.

