Appliance support¶
This page says plainly what is verified against real hardware, what is inferred from reading the official app, and what is untested. The underlying library does the same in its decompiled API reference, and it matters here for the same reason: an untested feature that looks supported wastes somebody's evening.
The integration is developed against the hardware its authors and reporters own. Nobody has access to the full Dimplex range.
By family¶
| Family | Status | Notes |
|---|---|---|
| Panel heaters, PLX, other simple room heaters | Verified | Exercised routinely. Climate, presets, setpoint writes and modes all confirmed. |
| QRAD | Verified | As above, plus energy telemetry. |
| Quantum storage heaters | Partly verified | Modes and energy confirmed. Setpoint and timer writes are rejected on some units — see below. |
| Hot water cylinders | Partly verified | Status, holiday mode and the schedule (read) verified on an ASHW cylinder. Temperature, boost and hygiene writes untested — see below. |
| Air-source heat pump cylinders (ASHW) | Partly verified | Verified on an EDL200UK-630RF: handled as a hot water cylinder, with the heat-pump endpoints. |
| Hygiene / anti-legionella cycles | Untested | The recurrence is read (a sensor) but never written. |
If you own something in the untested rows and are willing to try it, say so on an issue — a diagnostics download alone is genuinely useful.
Quantum and other storage heaters¶
Charge-based heaters store heat overnight at the cheap rate and release it during the day. Two consequences that repeatedly confuse people:
A target does nothing until there is stored charge. Set 22 °C at midday on a heater that has exhausted its charge and nothing observable happens — not because the write failed, but because there is no heat to release. Two of the tests in #163 came back inconclusive for exactly this reason.
Some units reject remote writes. SetApplianceSetpointTemperature and SetTimerMode can
come back HTTP 403. The integration handles this:
- Setpoint writes fall back to the older schedule-rewrite path, so you keep the capability.
- If that is refused too, you get a readable error naming the appliance rather than a generic "unknown error" — this was #149.
When comparing behaviour, compare against the official app at the same moment, not against what a panel heater would do.
Hot water cylinders¶
Verified on an air-source heat pump cylinder (ASHW Cylinder, model EDL200UK-630RF) by
comparing the cloud's replies with the official app at the same moment:
| What | Cloud | App |
|---|---|---|
| Hot water available | AvailableHotWater = 336 |
"336 L Hot water" — litres |
| Target | ActiveSetPointTemperature = 45 |
45° |
| Mode | ApplianceModes = 8192 (Normal), no TimerMode bit |
"Timer" |
| Holiday | Holiday bit (8) plus HolidayNumOfDays |
"Holiday" |
| Green energy, heating | IsGreenEnergyActive, HeatingUp |
"Green energy mode is active" |
| Hygiene recurrence | HygieneFrequency = 7 |
"7 days" |
| Tank size | Capacity = 200 |
— |
| Error / warning | ErrorCode / WarningCode = integer 0 (room heaters send null) |
— |
What the integration does with a cylinder:
- No thermostat. A cylinder reports its water target in
ActiveSetPointTemperature, which library releases up to 0.13.1 read as room climate — the cylinder got a climate entity with a 7-30 °C range its 45 °C target could not fit, plus room temperature, open window, EcoStart and setback entities. Room-heater features are now stripped from a hot water appliance unless it also reports a room temperature. - A Water heater entity (read-only): the app's mode and the target temperature.
- Sensors for hot water available (L), tank capacity, mode, hygiene recurrence and holiday days; binary sensors for heating, green energy and holiday. See Entities.
- Holiday — a switch and a Holiday ends date and time.
SetApplianceModeHeatPumpHwcwithHolidayengages it (status 8192 → 8200, heating stops) and clears it again. The cylinder counts holidays in whole days, so the integration also clears Holiday itself at the chosen time; the rounded-up day count is still sent so the cylinder comes off holiday on its own if Home Assistant is down. - Schedule, read only. Heat-pump cylinders keep it behind
ApiGetTimerModeDetailsForHeatPumpHwcAppliance(one{DayOfWeek, StartTime, Mode}per period, noTimerMode).UpdateHeatPumpHwcSchedulePeriodsanswered HTTP 403 to every request shape tried, so the schedule cannot be edited from Home Assistant. - The two actions,
dimplex.set_hot_water_temperatureanddimplex.set_hot_water_hygiene, are unchanged and still untested on hardware.
Not yet known: what the schedule's Mode values mean (a live cylinder only ever showed 2),
whether StartTime counts minutes after midnight, and how the app computes the fill
percentage it shows next to the target.
How capabilities are decided¶
The matrix resolves the flags from four sources, in increasing specificity:
flowchart TB
T["Type / model / name tokens<br/>quantum · storage · qrad · charge<br/>cylinder · dhw · hotwater<br/>ashw · heatpump"]
P["Product catalogue row<br/>GET /Appliances/GetProductModels"]
A["AUTOMATIC_PROVISIONING<br/>charge_capacity · rated_power"]
S["Live status fields<br/>BoostTemperature · AwayDateTime<br/>AvailableHotWater · RoomTemperature"]
C["Capability flags"]
T --> C
P --> C
A --> C
S --> C
The catalogue is fetched once per account and matched to each appliance on its model, then its
type. It carries the AUTOMATIC_PROVISIONING metadata — and it is the only place storage,
energy_meter, hot_water and heat_pump come from, which is why the integration calls it
rather than guessing from the appliance's own name. An account whose catalogue cannot be read
falls back to the type tokens and is retried on the next poll.
charge_capacity > 0, or a storage-ish token → storagerated_power > 0, or a storage-ish token → energy meter- a cylinder token, or
AvailableHotWaterpresent → hot water, andclimate: falseunless a room temperature also appears - an
ashw/ heat-pump token → heat pump (and hot water)
Control flags — boost, away, advance, open window, EcoStart, frost, timer, setpoint writes — default to enabled. That is deliberate: the cloud exposes these generically, and guessing "unsupported" would lock people out of endpoints that work. The cost is that an unsupported call fails at the cloud rather than being hidden, which is why control errors are surfaced with a readable message.
Your appliance's resolved flags are in a
diagnostics download under capabilities.
Confirmed but deliberately not exposed¶
| Endpoint | Why not |
|---|---|
ECO mode (bit 64) |
Behaviour on real hardware unknown. See modes. |
HOLIDAY, MANUAL, HYGIENE, STANDBY and other mode bits |
Read into diagnostics, never written. |
SetSetbackTemperature used to be on this list. It is now written by the
setback target number entity, gated on the capability matrix's
setback_write — treated as inferred from the app until someone confirms it against a real
appliance.
Schedule writes are exposed as two actions rather than a full editor — copy a schedule and edit one period. Creating, deleting or reordering periods still needs the official app.
Temperature ranges¶
Only two are confirmed:
| Mode | Range | Status |
|---|---|---|
| Away | 7–18 °C | Verified — live, and matches the app's picker |
| Frost protection | fixed 7 °C | Verified |
| Normal setpoint, boost, advance, manual | 7–30 °C | Inferred from the app |
Away turning out to be an exception means the 7–30 figures should not be fully trusted. dimplex-controller-py#98 tracks re-reading each mode's range.
Next¶
- Modes & presets — what each mode does
- Diagnostics — see your own appliance's resolved capabilities
- Troubleshooting