An Indigo plugin that connects directly to a zigbee2mqtt MQTT broker, auto-discovers all Zigbee device types, and creates matching Indigo devices — all organised in a Zigbee2MQTT device folder.
- Connects to zigbee2mqtt via MQTT (paho-mqtt)
- Auto-detects device type from zigbee2mqtt
exposesarray - Discover & Create Devices menu item: one click creates all Indigo devices, no manual setup
- Six Indigo device types:
- Z2M Light (dimmer) — bulbs, LED strips; brightness + optional colour/CCT
- Z2M Relay (relay) — switches, outlets, plugs; on/off + optional power/energy
- Z2M Sensor (sensor) — contact, motion, temperature, humidity, water leak, illuminance, battery
- Z2M Cover (dimmer) — blinds, shutters; position 0-100% maps to Indigo brightness
- Z2M Repeater (switch) — Zigbee signal repeaters (SLZB, SMLIGHT); link quality + availability
- Z2M Button / Scene (sensor) — button/scene controllers; lastAction, pressCount, lastButton states
- Availability and link quality tracked per device
- Handles friendly names containing
/(sub-room naming) - All devices created in a Zigbee2MQTT device folder
- Indigo 2023.2 or later (Python 3.11+)
- zigbee2mqtt running and accessible via MQTT
- MQTT credentials in
IndigoSecrets.pyOR in PluginConfig (v1.9.6+)
- Go to the Releases page and download
Zigbee2MQTTBridge.indigoPlugin.zip - Unzip the downloaded file — you will get
Zigbee2MQTTBridge.indigoPlugin - Double-click
Zigbee2MQTTBridge.indigoPlugin— Indigo will install it automatically
This plugin (along with all CliveS Indigo plugins) reads sensitive values from a shared master credentials file at:
/Library/Application Support/Perceptive Automation/IndigoSecrets.py
| File | Purpose | Real data? | Committed to GitHub? |
|---|---|---|---|
IndigoSecrets.py |
Working file the plugin reads at runtime. Keep a backup in a password manager. | YES | NO — listed in .gitignore |
IndigoSecrets_example.py |
Template only — empty placeholders. Shipped in the plugin bundle. | NO | YES |
If you do not have IndigoSecrets.py, copy IndigoSecrets_example.py from
the plugin bundle to that location and fill in your values. Or skip
IndigoSecrets.py entirely and enter values via the plugin's configuration
dialog — IndigoSecrets.py wins over the dialog when both are set.
If a required value is set in NEITHER source the plugin logs an ERROR
pointing the user to either fill in the matching field or add the key to
IndigoSecrets.py.
Keys read by Zigbee2MQTTBridge:
MQTT_BROKER = "192.168.x.x" # hostname or IP of your MQTT broker
MQTT_PORT = 1883
MQTT_USERNAME = "" # blank = no auth
MQTT_PASSWORD = ""All four have matching PluginConfig fields under Plugins → Zigbee2MQTT Bridge → Configure (fallback added in v1.9.6).
Every log line is prefixed with a millisecond timestamp [HH:MM:SS.mmm] so
events can be correlated tightly with other CliveS plugins (Device Activity
Monitor uses the same convention).
To turn the prefix off (or back on) at any time:
Plugins → Zigbee2MQTT Bridge → Toggle Timestamps in Log (on/off)
The setting is stored in pluginPrefs (timestampEnabled) and persists across
restarts. Defaults to ON.
- 1.9.7 (23-05-2026) — millisecond timestamp
[HH:MM:SS.mmm]prefix on everyself.loggerline viaplugin_utils.install_timestamp_filter(); new "Toggle Timestamps in Log" menu item. - 1.9.6 (23-05-2026) — PluginConfig fallback for MQTT broker/port/username/password (secrets-policy: users without
IndigoSecrets.pycan now configure entirely via the GUI). Legacysecrets.pywording updated toIndigoSecrets.pyin labels and error messages. - 1.9.5 — current release feature set.
- Enable the plugin in Indigo (Plugins > Manage Plugins)
- Set the Topic Prefix in plugin preferences (default:
zigbee2mqtt) - Wait for
MQTT connectedandBridge device cache updated: N devicesin the event log - Go to Plugins > Zigbee2MQTT Bridge > Discover & Create Devices
- All your Zigbee devices appear in Indigo under the Zigbee2MQTT folder
Re-run Discover & Create Devices any time you add new Zigbee devices.
With thanks to Autolog for the zigbee2mqtt plugin — studying its design showed us the way to build this plugin, and the project would not exist without that prior work.
CliveS & Claude Opus 4.7