How Does Home Assistant Coordinate Zigbee2MQTT With Core?

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

Home Assistant coordinates Zigbee2MQTT through MQTT rather than by treating Zigbee2MQTT as part of Home Assistant Core. Zigbee2MQTT owns the Zigbee coordinator and mesh interaction, an MQTT broker carries messages, and Home Assistant's MQTT integration turns discovery and state topics into entities that automations can use.

This separation is powerful because Zigbee transport, message brokering, and home-automation logic can restart or move independently. It also creates a three-service dependency chain: a Zigbee device can be healthy while Home Assistant shows it unavailable if Zigbee2MQTT, the broker, discovery, or availability messaging is broken.

Zigbee2MQTT Owns the Radio-Side Device Conversation

Zigbee2MQTT communicates with the coordinator, maintains Zigbee device definitions, receives reports from the mesh, and converts them into MQTT messages. Home Assistant does not need direct access to that coordinator when Zigbee2MQTT owns it.

The Zigbee2MQTT Home Assistant integration guide explains that MQTT discovery is the standard path for automatically creating Zigbee2MQTT devices and entities in Home Assistant.

That ownership boundary matters during recovery. Restarting Home Assistant should not require repairing the Zigbee mesh, and restarting Zigbee2MQTT should not erase Home Assistant automations that refer to stable entity identities.

The MQTT Broker Is the Message Boundary Between the Two Services

Zigbee2MQTT publishes device state and bridge information to MQTT topics. Home Assistant subscribes to the relevant topics and publishes commands back when an automation or user changes a device.

The MQTT broker is the message boundary because Zigbee2MQTT publishes messages to topics while Home Assistant subscribes to the topics it needs and publishes commands back through the same broker. A current MQTT architecture guide explains how publishers and subscribers remain decoupled while the broker routes topic-based messages between them.

If the broker fails, the Zigbee mesh can continue existing while the Home Assistant view stops updating. Diagnose the broker separately from the coordinator and from Core.

Discovery Describes the Entities; State Topics Keep Them Current

Discovery messages tell Home Assistant what entity should exist, which topics provide state and commands, what device it belongs to, and how values should be interpreted. Once the entity exists, ordinary state messages keep it current.

A reload or restart can expose mistakes here. A Home Assistant community case documents how MQTT-discovered entities can remain unavailable when the expected rediscovery or retained state path does not rebuild correctly.

Use stable unique IDs and a deliberate rediscovery strategy. Recreating entities under new identities after every bridge change breaks dashboards, history continuity, and automations even if the physical Zigbee device never changed.

-15% OFF
Single board computer zimaboard2

Availability Is a Separate Signal From Device State

A state such as ON tells Home Assistant the last reported value; it does not prove that Zigbee2MQTT or the device is currently reachable. Availability topics provide a separate liveness contract.

Zigbee2MQTT availability treats powered and battery devices differently because passive devices cannot be pinged on demand. Its current documentation specifies that active devices use shorter check-in windows and ping/backoff logic, while passive devices rely on much longer check-in windows. Availability should therefore be interpreted separately from the last retained state.

Do not trigger safety-critical actions from a stale state without considering availability. A retained value can be useful for reconstruction while still representing a device that is currently offline.

Startup Order Should Rebuild the Contract, Not Depend on Luck

The clean startup sequence is not merely โ€œbroker first, then Zigbee2MQTT, then Home Assistant.โ€ Services may start in different orders, so the messaging contract must tolerate reconnects. Zigbee2MQTT should reconnect to the broker, discovery should become available, Home Assistant should subscribe, and current state should be republished or retained as designed.

ZimaSpace's smart-home event examples show how MQTT lets smart-home services exchange local events without sharing one process or one physical server. Zigbee2MQTT is a concrete example of that decoupling.

Layer Primary responsibility Failure symptom
Zigbee2MQTT Zigbee mesh and device translation No fresh Zigbee messages
MQTT broker Message delivery between services Publish/subscribe path fails
Home Assistant MQTT Entity discovery and state mapping Entities missing/unavailable
Automation/Core Rules and service calls Entity is healthy but action logic fails

FAQ

Does Zigbee2MQTT require Home Assistant to keep the Zigbee network alive?

No. Zigbee2MQTT owns the coordinator-side Zigbee network. Home Assistant is a consumer and command source through MQTT. Home Assistant can be offline while the Zigbee2MQTT service and broker remain running.

Why do Zigbee2MQTT entities become unavailable after a broker or Home Assistant restart?

Usually because discovery, retained state, availability, or reconnect messaging has not rebuilt the full MQTT contract yet. Check Zigbee2MQTT bridge state, broker connectivity, discovery topics, and entity availability before re-pairing devices.

Tech & AI HUB

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.