MQTT devices can now use the child device model that Home Assistant introduced for products made of several parts. A pull request by Jan Bouwhuis, merged into the development branch on 26 October 2026, adds a child_device option to MQTT entities. A follow-up fix merged the same evening is already tagged for the 2026.11 beta.
What changes for a power strip
Take a strip with switchable outlets and a power meter for the whole strip. Until now an MQTT setup could put everything on one device, or create a device per outlet and link it back with via_device. With child devices, the strip stays the parent and each outlet becomes a child device, such as "Outlet 1". The parent keeps the manufacturer and model, and a child has only identifiers and a name. Children follow the same general rules as elsewhere: a child takes its parent's area unless you move it, and deleting the parent deletes its children.
Three ways to configure it
- In YAML and in single component discovery, you add a
child_devicemapping (abbreviatedcdev) inside the entity'sdeviceblock. Thedevicebecomes the parent and the entity is attached to the child. A child accepts onlyidentifiers, which are required, andname. - In device based discovery, the payload on
homeassistant/device/<id>/configgets achild_deviceslist (cdevs). Each child has its own identifiers, name andcomponents(cmps), while the parent's own entities stay in the top-levelcomponents. Component IDs must be unique across the parent and all its children, and a child's identifiers must differ from the parent's. - An entity with a child device must have a
unique_id. Without one, Home Assistant ignores the entity's whole device block, a breaking change already merged separately for 2026.11.
Device triggers and tags do not support child devices.
Behaviour worth knowing
When a discovery update changes an entity's device, with or without a child device, the entity now moves to the new device right away and the old one is cleaned up if nothing else uses it. Before, the move only happened after a reload or restart. A parent that still has children is never removed by this cleanup, and it goes away after its last child does.
Deleting a child device in Home Assistant does not clear the discovery topic, since that would also remove the parent and its other children. A warning is logged and the child comes back with the next discovery message, unless the publishing bridge drops it from the payload. Deleting the parent still clears the topic.
If an existing device with the same identifiers is reused as a child, the device registry converts it and keeps its device ID, so automations that point at it keep working.
The follow-up fix covers two edge cases. Removing the device block in a discovery update now unlinks the entity at once, and a component that is not a mapping, such as "cmps": {"sw": null}, now gets the usual invalid payload warning instead of a TypeError. The documentation pull request was still open on 27 October.