Z2M Dash
An Android dashboard app for Zigbee2MQTT
Version: 0.0.130
Added: 27-10-2026
Updated: 27-10-2026
Added: 27-10-2026
Updated: 27-10-2026
An Android dashboard app for Zigbee2MQTT, built to replace closed-source apps. No cloud account required and no lock-in - the app talks directly to your own MQTT broker, and your whole configuration is either one plain JSON file you can export and re-import or auto-configure settings stored in MQTT.
Optional online service: the "Import via code" button on the Add Broker screen uses sync.odiousapps.com, a credential relay run by the developer. If you use it, you log in to an account on that site and pick a saved credential, and the broker's hostname, username and password are passed back to the app through that server. It is entirely optional - nothing is sent unless you tap the button and agree to continue - and brokers can always be entered by hand or imported from a file instead. The relay's server code is free software (Unlicense), published in the MX3Launcher repository under website/.
Features:
Optional online service: the "Import via code" button on the Add Broker screen uses sync.odiousapps.com, a credential relay run by the developer. If you use it, you log in to an account on that site and pick a saved credential, and the broker's hostname, username and password are passed back to the app through that server. It is entirely optional - nothing is sent unless you tap the button and agree to continue - and brokers can always be entered by hand or imported from a file instead. The relay's server code is free software (Unlicense), published in the MX3Launcher repository under website/.
Features:
- Groups of clusters, each cluster grouping the related tiles for one physical device (sensor readings, toggles/buttons) under a shared name
- Sensor tiles with configurable decimal places, units, and an optional ideal min/max range that colours the tile red/green/blue when out of range
- Toggle tiles reflecting live device state (not just the last command sent), and momentary button tiles for one-shot commands like a blind motor's STOP
- Presence/occupancy sensor tiles - recognises both Zigbee2MQTT's "occupancy" and "presence" conventions, shown as "Detected"/"Clear" with a tinted icon rather than a raw true/false
- Drag-and-drop reordering for groups, clusters within a group, and panels within a cluster (long-press to start dragging) - group reordering and renaming both happen directly on the dashboard via each group's own header, no separate screen needed
- Groups can be collapsed/expanded, and deleted along with their panels
- New-device and new-cluster prompts (see Auto-configure below) show as banners on the dashboard as well as system notifications
- Sensor panels for any field in the device's regular state payload
- Toggle and momentary-button controls (a control without an off_payload is treated as a single-press button rather than an on/off switch)
- Per-field decimal places, custom ordering within and across clusters, and splitting one physical device's fields across multiple clusters
- A manual reorder of auto-configured panels/clusters republishes an updated, retained /app message reflecting the new arrangement, so the device's own config stays in sync rather than being silently reverted on its next update
- Watches every incoming MQTT payload, across every topic, for a "smoke": true field - no per-device registration needed
- A live, filterable log of every MQTT message across all configured brokers - useful for debugging payloads and topic structures without a separate MQTT client
- Export/import the whole configuration, or just the brokers list on its own (for moving connection details between devices without touching groups or panels), as a single gzip-compressed JSON file
- A restore can replace the whole configuration, or - independently of how the file was originally exported - merge in just its brokers (matched by id: updates existing ones, adds new ones, leaves the rest of your setup untouched)
- Full-configuration exports can optionally be encrypted (AES-256-GCM) using one of your broker's own passwords, rather than a separate password to remember - restoring auto-detects an encrypted file and prompts for the password before decrypting
- Publish/restore a backup via a retained MQTT message instead, for moving configuration between devices without a file transfer - since that path never includes brokers in the backup at all, restoring from it always preserves whatever brokers