Monitor and control your Mixergy smart hot water tank from Home Assistant.
Live charge and temperatures, one-tap boost, Energy Dashboard support, PV diverter controls, and holiday scheduling.
- Install via HACS — add
https://github.com/CaputoDavide93/Mixergy-Home-Assistantas a custom repository, install Mixergy, restart Home Assistant. - Add the integration — Settings → Devices & Services → Add Integration → Mixergy, sign in with your Mixergy app credentials and pick your tank.
- Choose your mode — Simple for monitoring and boost, Advanced for the full control surface. Switch any time from the integration's Configure button.
Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.
Quality. Built against Home Assistant's Integration Quality Scale: 46 of the 47 applicable Bronze–Platinum rules are met, with 7 more not applicable. No tier is claimed — the scale applies to core integrations only, and one Bronze rule (
brands) is unreachable for any custom integration. The per-rule status, including what is unmet and why, is recorded inquality_scale.yaml.
Note — the icon shows as a grey placeholder in HACS. Nothing is wrong with your install: the icon appears correctly everywhere inside Home Assistant itself. This is a known HACS limitation affecting every custom integration published after February 2026, not an issue with this integration. More detail.
| Guide | What it covers |
|---|---|
| Installation | Requirements, HACS and manual install, updating, uninstalling |
| Configuration | The setup flow, Simple vs Advanced modes, every option, reauthentication, multi-tank |
| Entities | Every sensor, binary sensor, and control — with behaviour details the tables can't carry |
| Automations | Services, device triggers, and a cookbook of ready-to-use recipes |
| Energy | Energy Dashboard setup, how energy is measured, tariff-based cost tracking |
| Troubleshooting | Symptom-first fixes, debug logging, diagnostics, FAQ |
| API client | Architecture and the standalone Python client for the Mixergy cloud API |
Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.
Or add manually in HACS:
- Open HACS in Home Assistant
- Go to Integrations → click the 3-dots menu → Custom repositories
- Add
https://github.com/CaputoDavide93/Mixergy-Home-Assistantwith category Integration - Search for Mixergy and install it
- Restart Home Assistant
Upgrading from 1.x? Version 2.0.0 changed the integration domain. The old
custom_components/mixergy/directory must be removed before restarting; HACS installsmixergy_tank/but does not remove the former domain directory. Follow the complete 1.x → 2.x migration.
- Download the latest release
- Copy
custom_components/mixergy_tank/into your HAconfig/custom_components/directory - Restart Home Assistant
Full details, updating, and uninstalling: Installation guide.
- Go to Settings → Devices & Services → Add Integration
- Search for Mixergy
- Enter your Mixergy account username and password — the same credentials you use in the Mixergy app
- Pick your tank from the list (or type the serial number printed on the tank label)
- Choose your experience mode
| Mode | Who it's for | What's included |
|---|---|---|
| Simple | Most users | Live temperatures & charge, heating status, energy dashboard, hot water boost slider |
| Advanced | Power users | Everything in Simple, plus: temperature controls, heat source switching, PV diverter settings, frost protection, DSR, holiday scheduling, and a native water-heater entity |
You can switch modes at any time via Settings → Devices & Services → Mixergy → Configure. The full walkthrough lives in the Configuration guide.
| Sensor | Unit | Description |
|---|---|---|
| Hot water temperature | °C | Current top-of-tank temperature |
| Coldest water temperature | °C | Current bottom-of-tank temperature |
| Target temperature | °C | Configured target temperature |
| Cleansing temperature | °C | Anti-legionella cleansing temperature |
| Current charge | % | Current hot water charge level |
| Target charge | % | Configured target charge level |
| Electric heat power | W | Real power draw from CT clamp |
| Electric heat energy | kWh | Cumulative electric energy (Energy Dashboard) |
| PV power | kW | Solar PV power being diverted (PV diverter only) |
| PV energy | kWh | Cumulative PV energy (Energy Dashboard) (PV diverter only) |
| Clamp power | W | CT clamp power reading (PV diverter only) |
| Active heat source | — | Currently active heat source |
| Default heat source | — | Configured default heat source |
| Operating reason | — | Why the tank is currently being controlled |
| Holiday start date | Timestamp | Holiday mode start date |
| Holiday end date | Timestamp | Holiday mode end date |
| Electric heating cost | currency | Cumulative cost (only when a tariff rate is set in options) |
| Firmware version | — | Tank firmware (diagnostic, disabled by default) |
| Model | — | Tank model code (diagnostic, disabled by default) |
| Last successful update | Timestamp | Time of the last API refresh (diagnostic, disabled by default) |
| Last tank measurement | Timestamp | Time the tank recorded its latest measurement |
| Last cloud receipt | Timestamp | Time the cloud received the latest measurement (diagnostic, disabled by default) |
| Sensor | Description |
|---|---|
| Electric heat active | Electric immersion heater is currently on |
| Indirect heat active | Gas/oil indirect coil is heating |
| Heat pump active | Heat pump is heating |
| Heating | Any heat source is actively heating |
| Low hot water | Charge is below the low threshold (default 5%, configurable) |
| No hot water | Charge is below the no-water threshold (default 0.5%, configurable) |
| Holiday mode | Tank is currently in holiday mode |
| Charge target active | A non-zero charge target is currently active |
| Tank connectivity | Latest tank report is fresh |
In Advanced mode the tank is also exposed as a native Home Assistant
water heater entity — a single card with current/target temperature, the
heat-source operation mode (electric / gas / heat pump), and an away toggle
that maps to holiday mode. This works with the standard water-heater card,
voice assistants, and water_heater.* services.
| Entity | Type | Description |
|---|---|---|
| Hot water boost | Number (0–100 %) | Set how full you want the tank right now |
| Entity | Type | Description |
|---|---|---|
| Water heater | Water heater | Temperature, operation mode & away in one card |
| Holiday start | DateTime | Set the holiday start from a date/time picker |
| Holiday end | DateTime | Set the holiday end from a date/time picker |
| Target temperature | Number (45–70 °C) | Set the desired water temperature |
| Target charge | Number (0–100 %) | Set the desired charge level |
| Cleansing temperature | Number (51–55 °C) | Set anti-legionella temperature |
| Default heat source | Select | Choose default heat source |
| Grid assistance (DSR) | Switch | Enable/disable demand-side response |
| Frost protection | Switch | Enable/disable frost protection |
| Medical research donation | Switch | Enable/disable distributed computing |
| PV export divert | Switch | Enable/disable PV divert (PV diverter only) |
| PV cut-in threshold | Number (0–500) | PV diverter cut-in threshold, in watts (PV diverter only) |
| PV charge limit | Number (0–100 %) | Maximum charge from PV (PV diverter only) |
| PV target current | Number (−1–0) | PV target current (PV diverter only) |
| PV over-temperature limit | Number (45–60 °C) | Maximum PV heating temperature (PV diverter only) |
| Clear holiday dates | Button | Clear holiday mode immediately |
| Service | Description |
|---|---|
mixergy_tank.set_holiday_dates |
Set the holiday start and end dates for the Mixergy tank. |
mixergy_tank.clear_holiday_dates |
Clear the holiday mode dates for the Mixergy tank. |
mixergy_tank.boost_charge |
Boost the hot water to 100% charge immediately. |
The tables above are generated from the integration source by
tools/gen_entity_docs.py— run it after adding or changing entities (CI fails when they drift).
All three services accept a standard Home Assistant target (entity, device,
or area), so you can act on one specific tank in a multi-tank home. No target
means every configured tank. Details, permission rules, and the legacy
serial_number field: Automations guide.
Mixergy tanks expose device triggers you can pick straight from the Automations UI: hot water low, heating started, heating stopped, holiday started, and holiday ended.
Configure via the integration's Configure button:
| Option | Description |
|---|---|
| Experience mode | Simple (monitoring + boost) or Advanced (full control) |
| Update interval | Poll frequency, 30–300 seconds (default 60) |
| Low / no hot water thresholds | Charge % at which the alert binary sensors trip (defaults 5% / 0.5%) |
| Electricity price per kWh | Set a tariff to enable the electric heating cost sensor (0 = off) |
Changing options reloads the integration automatically. Credentials can be updated any time from the Reconfigure button, and if they expire the integration prompts you to re-authenticate — no removal needed.
Four starters — the Automations cookbook has ten more, covering solar-surplus boosting, cheap-tariff windows, holiday scheduling from a calendar, and water-heater service calls.
automation: - alias: "Low hot water alert" triggers: - trigger: state entity_id: binary_sensor.mixergy_tank_<serial>_low_hot_water from: "off" to: "on" actions: - action: notify.mobile_app_your_phone data: title: "Low hot water" message: "Tank charge is below the low threshold — consider a boost."
automation: - alias: "Morning hot water boost" triggers: - trigger: time at: "06:00:00" conditions: - condition: time weekday: [mon, tue, wed, thu, fri] actions: - action: mixergy_tank.boost_charge
automation: - alias: "Set Mixergy holiday mode" triggers: - trigger: state entity_id: input_boolean.going_on_holiday to: "on" actions: - action: mixergy_tank.set_holiday_dates data: start_date: "2026年08月14日T00:00:00" end_date: "2026年08月28日T00:00:00"
automation: - alias: "Solar boost" triggers: - trigger: numeric_state entity_id: sensor.solar_export_power above: 2000 for: minutes: 10 conditions: - condition: numeric_state entity_id: sensor.mixergy_tank_<serial>_current_charge below: 80 actions: - action: mixergy_tank.boost_charge
Entity ids follow the pattern
sensor.mixergy_tank_<serial>_...— replace<serial>with your tank's serial number, or pick the entity from the UI.
| Device | Support |
|---|---|
| Mixergy hot water tanks (all models) | Full |
| Tanks with PV diverter | Full — additional PV sensors & controls |
| Heat pump configurations | Full |
| Indirect (gas/oil) heating | Full |
| Electric immersion | Full |
Requires Home Assistant 2025.8 or newer and a Mixergy cloud account (the one you use in the Mixergy app). This is a cloud-polling integration — the tank has no local API.
English covers the complete UI. German, French, and Italian translations are included where available, with Home Assistant's English fallback for newer options and repair messages while locale parity is completed.
No. Mixergy tanks are controlled through the official Mixergy cloud API, so
the integration polls www.mixergy.io over TLS. If your connection drops,
entities show as unavailable and recover on their own with the next
successful poll.
As many as your Mixergy account has. Each tank is its own config entry with its own device and entities, and every service call can target one specific tank — or all of them.
The test suite runs on every change and on a weekly schedule against the latest Home Assistant release, so core API changes are caught between releases, and deprecations are fixed before they become errors. See the changelog for the compatibility history.
Your Mixergy account credentials and tank commands go to www.mixergy.io —
nowhere else. Every request is TLS-verified, tokens auto-refresh before
expiry, and downloaded diagnostics redact credentials, tokens, and the tank
serial. See Security.
They exist on every tank but stay unavailable unless your tank reports PV diverter hardware, and the PV controls appear in Advanced mode only. If the tank has a diverter and they still show unavailable, see the Troubleshooting guide.
Yes — set your electricity price per kWh in the integration options and a cumulative cost sensor appears, in your HA currency. The Energy guide covers how it accumulates and how to reset it.
The Troubleshooting guide walks through every common symptom — auth errors, missing entities, stale data, holiday mode — with the checks in order. The two things you'll need for any bug report:
Debug logging — add to configuration.yaml and restart:
logger: default: warning logs: custom_components.mixergy_tank: debug
Diagnostics — Settings → Devices & Services → Mixergy → Download diagnostics. Credentials, tokens, and the tank serial are redacted automatically, so the file is safe to attach to an issue.
flowchart LR
subgraph HA["🏠 Home Assistant"]
CF["🔐 Config flow<br/>credentials · tank picker · mode"]
CO["🔄 Coordinator<br/>one per tank · 30–300 s poll"]
ENT["📟 Entities<br/>sensors · binary sensors<br/>controls · water heater"]
SVC["🛎️ Services<br/>mixergy_tank.*<br/>entity / device / area targets"]
end
subgraph CLOUD["☁️ Mixergy Cloud"]
API["www.mixergy.io<br/>REST API"]
TANK["♨️ Tank"]
end
CF -->|validates| API
CO <-->|"HTTPS · bearer token<br/>auto-refresh · auto re-auth"| API
API <--> TANK
CO --> ENT
SVC --> CO
The full design — the discovery walk, auth lifecycle, error taxonomy, and the standalone Python client — is documented in the API guide.
- TLS with certificate verification on every API call (no
verify_ssl=False) - 30-second request timeout prevents indefinite hangs
- Bearer token with auto-refresh — tokens are refreshed 5 minutes before expiry
- Discovered API links are validated — the client refuses to send the token to any non-HTTPS or non-Mixergy host
- Credentials stored in HA config entry — never written to logs or diagnostics
- Diagnostics redaction — credentials, tokens, and the tank serial are stripped from diagnostic downloads
- Per-tank service authorisation — non-admin users need control permission on the tank they target
Contributions are welcome! Please open an
issue or
pull request. The test suite (pytest tests/) and the docs generator
(python tools/gen_entity_docs.py --check) both run in CI.
This project is licensed under the MIT License.
⭐ If this integration helped you, please give it a star! ⭐ · Made with ❤️ by Davide Caputo for the Home Assistant community