Zigbee2MQTT Companion App for iPhone and iPad

Subscribe to <code>zigbee2mqtt/#</code> and watch every device state update arrive in real time. Tap into bridge controls — permit join, restart, health-check — and push <code>.../set</code> commands to individual devices, all from a native iOS app that keeps your broker data on-device.

Coming soon to theApp Store See the features

Coming soon to the App Store · $2.99

Zigbee2MQTT Companion App for iPhone and iPad
$2.99
one-time purchase, no subscription
iOS 15+
iPhone and iPad, native Swift UI
MQTT 5.0
and MQTT 3.1.1 fully supported
On-device
broker data never leaves your iPhone

Who it's for

  • Zigbee2MQTT users who want to inspect device payloads without opening a laptop
  • Home automation hobbyists debugging Zigbee sensors, bulbs, and switches on the go
  • Self-hosters who need to permit-join new Zigbee devices directly from their iPhone
  • Developers testing Zigbee2MQTT automations who want a portable payload inspector
  • Anyone managing a Zigbee2MQTT bridge on a home server and wanting quick restart access

Subscribe to zigbee2mqtt/# and See Every Device at Once

MQTT Commander ships with a built-in preset for zigbee2mqtt/# so you can subscribe to your entire Zigbee2MQTT topic tree in one tap. The live topic list groups messages by device friendly name, and the iOS app highlights which topics changed in the last poll cycle — making it easy to spot a chatty sensor or a device that has gone silent. QoS 0, 1, and 2 are all supported, and retained messages are flagged visually so you always know whether a payload reflects a live reading or a cached state.

Read Device State with the Built-In Payload Inspector

Tap any zigbee2mqtt/<friendly_name> topic to open the payload inspector. Switch between formatted JSON, raw hex, Base64, and image views without leaving the screen. The diff view highlights exactly which fields changed between the last two payloads — useful when chasing intermittent state changes on a temperature or occupancy sensor. JSONPath expressions let you pin a single value (for example $.temperature) so you can watch one field update without scrolling through a large JSON object. Read the full walkthrough in the Zigbee2MQTT guide.

Send Bridge Commands Safely from Your iPhone

MQTT Commander includes reusable command templates for the most common Zigbee2MQTT bridge operations. Permit-join a new device by publishing to zigbee2mqtt/bridge/request/permit_join with {"value": true, "time": 60} — the template pre-fills the payload so you cannot accidentally leave join open indefinitely. Restart the bridge with zigbee2mqtt/bridge/request/restart or trigger a health-check, all without copy-pasting topic strings by hand. The publish composer shows a retain warning before every write and requires explicit confirmation before sending a retained delete, preventing accidental overwrites of bridge configuration topics.

Push Device .../set Commands with Retained-Write Protection

Control any Zigbee2MQTT device by publishing to its zigbee2mqtt/<friendly_name>/set topic. Save your most-used payloads — brightness, color temperature, on/off — as named templates in the publish composer so you can replay them in seconds. Because many Zigbee2MQTT /set topics should not carry a retained flag, MQTT Commander shows a prominent warning whenever retain = true is selected and confirms before you publish. This prevents ghost commands that replay on every broker reconnect. Use Connection Doctor to verify your broker is reachable before sending commands.

Connect Securely with TLS/mTLS and the Certificate Wizard

If your Zigbee2MQTT broker is exposed over the internet or running behind a reverse proxy, MQTT Commander supports TCP, TLS, WebSocket, and WSS transports. The Certificate Wizard walks you through importing a CA certificate, client certificate, and private key for mutual TLS authentication without needing to touch config files. All credentials — passwords, client certificates, and broker URLs — are stored in the iOS Keychain and never written to iCloud backups. Shared subscriptions and Last Will messages are supported for advanced setups running multiple clients against the same broker.

Frequently asked questions

Does MQTT Commander work with Zigbee2MQTT out of the box?

Yes. MQTT Commander ships with a zigbee2mqtt/# subscription preset that connects to your broker and subscribes to the full Zigbee2MQTT topic tree in one tap. You need the hostname or IP of your MQTT broker (the same one Zigbee2MQTT connects to), your port, and any username and password you have configured.

Can I permit-join new Zigbee devices from my iPhone?

Yes. A built-in command template publishes to zigbee2mqtt/bridge/request/permit_join with a configurable time window. You fill in the duration in seconds, tap Send, and Zigbee2MQTT opens the network for joining. The template defaults to 60 seconds so the join window closes automatically rather than staying open indefinitely.

Will retained messages from Zigbee2MQTT cause problems?

MQTT Commander displays a retain flag indicator on every received message so you can tell immediately whether a payload is live or cached. When publishing, the app warns you before sending a retained message and asks for explicit confirmation before issuing a retained delete. This protects Zigbee2MQTT bridge configuration topics from accidental overwrites.

What MQTT versions does the app support?

MQTT Commander supports both MQTT 3.1.1 and MQTT 5.0. Zigbee2MQTT 1.x uses MQTT 3.1.1 by default, but if you have upgraded your broker or Zigbee2MQTT to use MQTT 5 features, the app handles both protocols without any additional setup.

Is my Zigbee device data sent to any cloud service?

No. All broker connections and message data stay on your iPhone or iPad. MQTT Commander collects only anonymous, opt-out crash diagnostics via Sentry and anonymous usage counts via Aptabase. Neither service receives any topic names, payload content, or broker addresses.

Does MQTT Commander support wildcard subscriptions for Zigbee2MQTT?

Yes. Both single-level (+) and multi-level (#) wildcards are supported, and the zigbee2mqtt/# preset uses the multi-level wildcard to capture all device and bridge topics in one subscription. You can also add more specific subscriptions alongside it, for example zigbee2mqtt/bridge/# to focus only on bridge events.

Get MQTT Commander

Native for iPhone & iPad. $2.99, one-time.

Coming soon to theApp Store

Coming soon to the App Store · $2.99