Known Limitations
Things the integration does not do, or does with a caveat, and the reason. Where a limitation is a design decision it links to the discussion; where it is a gap it names the trace or hardware needed to close it (see the Roadmap and RFC #248). The full feature matrix is in Supported Functions.
Bus and gateway
| Limitation |
Why |
Workaround |
| One command session per gateway on MH200 / MH200N / MH201. Commands are queued and paced (150 / 80 / 60 ms). |
Those gateways refuse or drop overlapping sessions; the pacing is what keeps them alive. |
Keep the worker count at the profile default. F454 / F455 / MyHOMEServer1 / MH202 take more workers. |
Lights are not hydrated at startup. State appears when the actuator first reports, or after myhome.sweep_bus. |
*#1*0## is not a valid OpenWebNet request; there is no general status query for WHO 1. |
Call myhome.sweep_bus from an automation on homeassistant.start, or turn something on. |
| Entities can be unavailable for up to 60 s after a gateway drop. |
The availability grace period hides short reconnects instead of flapping every entity. |
Nothing needed; a longer outage marks entities unavailable and they recover on reconnect. |
| A gateway's model can be mislabelled. |
Only the WHO 13 device-type reply is available in-band, and its official table stops at 2006 hardware. |
The identification rules correct manual choices and raise a repair issue when evidence contradicts SSDP; use the reconfigure flow to set the model explicitly. |
| Serial (Legrand 3578) gateways are not discovered. |
No SSDP on a USB port. |
Add the integration manually and pick the serial transport. |
| No HMAC on MH200 / MH200N / MH201 / AM4890 / 3578. |
Those gateways only implement the numeric (SHA-less) password. |
Configure the numeric OpenWebNet password on the gateway. |
Lighting (WHO 1)
| Limitation |
Why |
Workaround |
| Group, area and general commands from wall switches re-sync with a ~250 ms delay, and only areas with a known light. (P7, #368) |
A debounced re-sync (see runtime behaviour) only sweeps *#1*A## per area/group, or skips the sweep entirely if the gateway already echoed each member's status; there is still no trace from a gateway that echoes nothing to confirm the fallback is sufficient there. |
Disable Sweep group/area/general light addresses for status in the Options Flow if your gateway needs a different cadence, and report a bus trace on #368. |
A declared group (where: '#G' in myhome.yaml) never auto-discovers its membership. (P7, #368) |
OpenWebNet has no command to read back which actuators a group was programmed with - that is set on the plant itself (MyHOME_Suite or a physical group-programmed actuator), not on the bus. |
Declare members: yourself if you want derived on/off, brightness and colour state; without it the entity is assumed_state and shows separate On/Off controls. |
| Colour modes are learned, not configured. A DALI DT8 light shows colour temperature only after its first dimension 14 frame. |
The bus does not describe an actuator's capabilities; it only reports what it does. |
Set color_temp: true / rgb: true / hs: true in myhome.yaml to declare the mode up front. |
| Native transitions depend on the actuator. |
Some dimmers ignore the fade parameter. |
Keep the default software_stepped transition mode. |
Covers (WHO 2)
| Limitation |
Why |
Workaround |
| Timed covers report a calculated position. It drifts if the motor runs at a different speed than assumed, or after a manual stop mid-travel. |
The actuator has no encoder; only position-reporting actuators (dimension 10) know where the shutter is. |
Calibrate with myhome.calibrate_cover (or myhome.set_cover_travel_time); a full open or close resynchronises the estimate. |
| Calibration on an MH200 / MH200N can fail with no stop status from the actuator. |
The single-session gateway delays or drops the actuator's stop status; some actuators also enforce a 60 s safety cut-off that ends the run early. |
Measure the run with a stopwatch and store the timings via myhome.set_cover_travel_time. |
| One calibration at a time per gateway. |
Two motors on one paced session make the timings meaningless. |
Queue is automatic; myhome.stop_cover_calibration cancels it. |
| No slat / tilt control. |
Not implemented; the frames exist in OWNd. |
myhome.send_message with the tilt frame. |
Thermoregulation (WHO 4)
| Limitation |
Why |
Workaround |
| Weekly programs, holiday and scenario modes are not exposed. |
Only manual set-point, auto, off and the seasonal modes are modelled on the climate entity. |
myhome.send_message with the central-unit mode frame (*4*<mode>*#0##). |
4-zone central unit 4695 (#0#1) is verified on synthetic frames only. |
No community trace from a 4695 plant yet. |
Please attach a trace to RFC #248 if you own one. |
Probes (WHERE ≥ 100) are read-only and push-driven. |
They NACK the explicit poll (*#4*ZPP*15##) and push readings on their own schedule. |
Nothing needed; a probe that goes silent is polled again after 5 min. |
Burglar alarm (WHO 5)
| Limitation |
Why |
Workaround |
| Zones are not entities; the panel follows the central unit. Some plants (F454 + 3486) surface several zone objects with no arm / disarm frames answered (#311). |
WHO 5 zone and sensor discovery needs a bus trace from a physical central unit to model correctly; the current implementation is built on golden frames. |
Zone events are available as myhome_event; a trace attached to #311 unblocks the design. |
| Arming requires the central unit to accept the command. |
Central units reject arming while a zone is open or the engineer code is active; the bus only reports the refusal. |
Watch the bus-monitor card for the NACK. |
Sound system (WHO 16)
| Limitation |
Why |
Workaround |
| Streaming needs a network decoder per concurrent stream. With two decoders mapped, a third room asks for All audio matrix inputs are currently in use. |
The F441 matrix routes one physical input per source; the integration claims one decoder per playing zone. |
Map more decoders in the options flow, or group rooms on the decoder side. |
| The legacy FM tuner (WHO 22) is not supported. |
Deferred in RFC #248; streaming replaces it. |
— |
| Limitation |
Why |
Workaround |
| CEN / CEN+ devices are stateless. They have no entity, only device triggers. |
Pushbuttons report presses, not a state. |
Use the device triggers (see CEN & CEN+) or the community blueprint. |
| Multi-click bursts are verified on synthetic frames only. |
No physical wall-switch burst trace yet. |
Please attach one to RFC #248. |
Home Assistant integration surface
| Limitation |
Why |
Workaround |
entity_name in myhome.yaml only applies to sensors and binary sensors. On a light, switch, cover, thermostat, audio zone or alarm panel it is ignored: those entities are their device and carry the device name. |
Home Assistant's device / entity naming model; entity_name never named those platforms in earlier versions either. |
Rename the device in the UI, or change name. |
Fresh installs name sensor ids after the device class (sensor.house_power, binary_sensor.cancello_opening) where 2.0.0b12 produced sensor.house, sensor.house_2, binary_sensor.cancello. |
The previous ids were the device name with numeric suffixes for the second and third sensor of a device. |
Existing installations keep their ids; automations on a fresh install use the new ids. |
| Strict typing is complete. |
mypy --strict is fully enforced across all 31 source modules as of 2.0.0b13 (Platinum Quality Scale). |
— |
myhome.yaml is a compatibility path, not the primary configuration. Devices are discovered from the bus; YAML only adds names, device classes and options. |
v2 is UI-first. |
Keep myhome.yaml for names and travel_time; delete devices you no longer want from the device page. |
| Deleting a device does not stop it from coming back. |
Devices are re-discovered from bus traffic; a device that still exists reappears on its next status frame. |
Only delete devices that are physically gone. |
Home Assistant 2026.3 or newer is required (hacs.json). |
Current cores need Python 3.14 and dropped the pre-2026 device-registry and static-path APIs; carrying shims for cores nobody can test any more is not honest support. |
Stay on integration 2.0.0b12 on older cores. |