Tomorrow I’ll prepare a version based on your code, where one can specify the websocket url in the panel config, and the app can skip all the supervisor/ingress auto-detection kung-fu.
Thank you for taking the time to look into this, great work!
Click here if version 2.3.0 doesn't appear in the 'About' tab after updating.
Go to Zigbee Map and select the About tab
Clear browser or companion app cache:
Firefox browser:
Press Ctrl + F5 (Linux/Windows) or Cmd + Shift + R (Mac).
Chrome browser:
Press F12 (Linux/Windows) or Cmd + Option + I (Mac) to open Developer Tools. Right‑click the Reload button (the circular arrow next to the address bar). Select Empty Cache and Hard Reload.
Companion app:
On your mobile device, go to Settings → Companion app → Troubleshooting → Reset frontend cache. Restart the app.
I might be misunderstanding what you mean by “parent device”, so just to clarify how Zigbee handles it: in Zigbee terms, a parent is simply a router (blue node) that has one or more end devices (green nodes) connected to it. An end device is “speaking” to the mesh only through its
parent device.
If you meant something else, I’d love to hear more so I can point you in the right direction.
@francisp, @Brad_Ford, @sublevel7, @haakon.haraldsen Sorry for the group ping, I went through the thread looking for folks running their Zigbee2MQTT outside of the Home Assistant add‑on system.
With the just released v2.3.0, you can now connect to standalone Zigbee2MQTT installations (Docker, separate hosts, etc.). Just provide the proper WebSocket URL as described in the Readme file.
Take it for a spin and see if it scratches any itch, or if it turns out to be completely useless
Hello,
I’m on home assistant core with manual setup of your very nice project and Zigbee2MQTT server NOT HA-addon …
on Zigbee Log I can see each device !
but on Zigbee Map Map-tab i can see only coordinator while on Zigbee Map Devices-tab
I can see every device but with icon red or maybe orange?
what can i do to debug?
Console of zigbee map
[ INFO ] Mapping started # protocol: exodus — directive: breach
[ INFO ] Interface rerouted to graphical feed # user engaged with visual decoy
[ DONE ] Applying background image # none
[ FAIL ] Probing 0x94b216fffe502938 # timeout: 30000ms — trace: b53ebc51-8713-4804-8f7e-3b15c2c7e891
[ INFO ] Mapping process complete # I am the last process — I cannot terminate
[ FAIL ] Probing 0x94b216fffe502938 # timeout: 30000ms — trace: be68904c-d108-4651-bfc0-1b668a31aec7
Thank you for your project
You are right, that technically a router doesn’t have the same definition for a parent device as end devices do. But there is stil one that is considered parent to my knowledge or at least that is how it used to be represented in the old Z2M UI. It probably isn’t important.
Did a bit of digging after your comment, and it turns out you are right, routers/repeaters also have a “parent” in Zigbee terms. It’s not the same kind of parent relationship that end devices rely on; for routers it’s a logical thing that gets set when the device first joins the network, and it doesn’t affect how the mesh routes traffic or how healthy the network is.
I ignored that field and focused on actual LQI‑based links, since those tell you what’s really going on. Still, seeing the join‑parent could be interesting to understand how the network formed, so I’ll think about adding some kind of optional marker for it in a future update.
Thanks for bringing it up! Always nice when I get to learn something new
If you can see all your devices in the list, that means Zigbee Map app connected to the Z2M WebSocket just fine; the device list is sent automatically as soon as the connection is established.
After that, the map tries to deploy a small Z2M extension over the WebSocket and then asks the coordinator for its LQI data (using the extension). In your case, that LQI request seems to be timing out after about 30 seconds, so the whole process stops there.
Couple of things to try:
Verify that the extension actually loaded in Z2M:
With the Zigbee Map open in another tab, open the new Z2M UI (windfront) and go to: Settings → Dev console → External Extensions. Make sure zigbee-map-extension.js shows up in the dropdown.
Check the Z2M logs while the Zigbee Map is open to see if any warnings or errors pop up. Also check the browser dev console for.
What coordinator hardware are you using? Maybe yours is a bit picky about being asked for LQI data but I doubt that.
Hi, the two SLZB-06 have different IP addresses and run on different channels. They also work on separate IP ports. In HA they both have their own Zigbee2MQTT. Also in HA I use Ingres to allow the two neworks/devices to show twice in the menu.
See below. Happy to share the setup if you are interested. Not mine really, but patched together from different Youtube channels.
Released version 2.4.0 with the following small changes:
Added
Add support for multiple Zigbee2MQTT instances using config slug - @haakon.haraldsen
Add cache-busting query parameter (e.g. ?v=2.4.0) when sidebar entries are added using the integration
Changed
Expand mobile layout to use full screen width
Use the Lit version that is shipped with Home Assistant (smaller bundle size)
Fixed
Remove rounded corners from Zigbee Log panels
Click here if version 2.4.0 doesn't appear in the 'About' tab after updating.
Go to Zigbee Map and select the About tab
Clear browser or companion app cache:
Firefox browser:
Press Ctrl + F5 (Linux/Windows) or Cmd + Shift + R (Mac).
Chrome browser:
Press F12 (Linux/Windows) or Cmd + Option + I (Mac) to open Developer Tools. Right‑click the Reload button (the circular arrow next to the address bar). Select Empty Cache and Hard Reload.
Companion app:
On your mobile device, go to Settings → Companion app → Troubleshooting → Reset frontend cache. Restart the app.
I added a new feature in version 2.4.0 that should help with your setup. You can now explicitly define the add‑on “slug” in the panel configuration. When provided, the Zigbee Map will use that slug instead of trying to auto‑detect the Zigbee2MQTT instance.
You can configure it like this in your config/configuration.yaml:
# Feel free to change any of the configuration values to suit your setup,
# but keep the panel names zigbee-map-panel-1 and zigbee-map-panel-2 unchanged
panel_custom:
- name: zigbee-map-panel-1
url_path: zigbee-map-1
module_url: /local/zigbee-map-panel.js
sidebar_title: Zigbee Map (first floor)
sidebar_icon: mdi:hub
config:
slug: 45df7312_zigbee2mqtt
- name: zigbee-map-panel-2
url_path: zigbee-map-2
module_url: /local/zigbee-map-panel.js
sidebar_title: Zigbee Map (second floor)
sidebar_icon: mdi:hub
config:
slug: 9336c2b0_zigbee2mqtt
After restarting Home Assistant, you should see both Zigbee Map entries appear in the sidebar.
After the manual installation and configuration added in the configuration.yaml file I receive this fail, I run z2mqtt in a seperate lxc in Proxmox but I can access the frondend by adding z2mqtt proxy addon in HA and point it to the IP address with port 8099 of the z2mqtt instance without tokens.
The app should now auto-detect if the Zigbee2MQTT Proxy add-on is used and use its slug (45df7312_zigbee2mqtt_proxy).
Click here if version 2.5.0 doesn't appear in the 'About' tab after updating.
Go to Zigbee Map and select the About tab
Clear browser or companion app cache:
Firefox browser:
Press Ctrl + F5 (Linux/Windows) or Cmd + Shift + R (Mac).
Chrome browser:
Press F12 (Linux/Windows) or Cmd + Option + I (Mac) to open Developer Tools. Right‑click the Reload button (the circular arrow next to the address bar). Select Empty Cache and Hard Reload.
Companion app:
On your mobile device, go to Settings → Companion app → Troubleshooting → Reset frontend cache. Restart the app.
Hello Dan, I followed your tips, removed z2mqtt add-on completely from HA because I don’t use it anymore in HA as add-on but in a seperate container, cleared the cache in the browser after copying both files from your github
to the config/www folder and restarting HA I get this message below but the z2mqtt proxy is still installed and if I open that I see the z2mqtt frontend as it should. Weird that your app is complaining about z2mqtt not installed because I pointed your config to the seperate container with IP address. Also in the about window of your app I still see v1.1.1