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. |
| 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. |
| Broadcast, Area 00, and General 0 frames do not generate entities. |
Broadcast frames (WHERE="0", "00") coordinate multiple actuators and do not represent individual physical devices (except WHO 5 where WHERE="0" is the alarm central unit). Creating entities from these frames produced phantom entities like sensor.zone_00 or climate.climate_zone_00. |
Control individual actuators or use YAML declared groups (where: '#G') and manual scenes. |
Secondary energy meters (52–59) require bus activity or manual configuration for initial setup. |
Startup discovery queries factory default meter 51 (*#18*51*51##, *#18*51*113##) to avoid long startup sweep delays. |
Secondary meters appear automatically when they transmit power/energy readings on the bus, or immediately when running myhome.sweep_bus. They can also be declared in myhome.yaml. |
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. |
| Physical sensors sharing an actuator address (e.g. 3477 twilight photocell) trigger the actuator directly on the wire. |
Point-to-point SCS physical addressing binds the sensor contact interface directly to the relay. Hardware turn-ons cannot be prevented before they execute on the bus. |
Use the Hardware-Coupled Sensors Guide and Dusk Curfew Blueprint to enforce bedtime curfews and companion synchronization, or decouple the sensor address. |
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. |
| Rapid concurrent point-to-point commands behind an F422 interface can drop frames. |
The physical F422 interface internal FIFO buffer and secondary SCS bus arbitration saturate under rapid unpaced bursts. |
Use native General broadcast covers (where: '0', bus_interface: '<id>') which send a single OpenWebNet broadcast (*2*WHAT*0#4#<id>##), or rely on the integration's automatic 0.3 s paced member fan-out for position control. See Covers. |
| 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 frames are available as myhome_message_event (with Generate Events on) and alarm state changes as myhome_alarm_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. |
| Removing the group leader interrupts the music briefly. Unticking the leader in Music Assistant, or turning it off (Home Assistant or wall panel), stops the sound for a few seconds before the remaining rooms resume. |
Music Assistant owns one queue per player and can only move it by stopping it and starting a new stream on another player; a powered-off player cannot keep a queue. The bus itself is not interrupted: MyHOME switches only the leader's amplifier off and hands the decoder to the next room. See Why deselecting the group leader gives a short gap. |
Play to a Music Assistant Sync Group with Dynamic members on, so any room can be ticked and unticked; see Recommended: one Music Assistant Sync Group for the house. With temporary groups, play to a room that stays on: removing a member never interrupts anything. |
| Plants that use only the later sound-diffusion dialect (WHO 22) get no audio entities. |
The integration speaks the WHO 16 sound system (amplifiers, sources, the F441 / F441M matrix). WHO 22 is BTicino's later sound-diffusion dialect and is not implemented; it is not the FM tuner, which the integration handles as a WHO 16 source. |
— |
| 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. |