I recently needed to update a few switches from an older firmware to the latest via ZHA on Home Assistant and couldn’t find a direct guide, so I wanted to contribute to the community on how I accomplished it. Please realize that I’m intentionally making this a “guide for dummies” to remove any ambiguity for non tech-savvy folk, and forgive me for some of the explanations that delve deeper into simple tasks that some of us already know.
ZHA supports OTA (Over the Air) updates for Inovelli switches, but this needs to be enabled via configuration YAML changes. From your HA install, navigate to “File editor” and ensure you’re editing the configuration.yaml
file. Insert the following:
zha:
zigpy_config:
ota:
inovelli_provider: true
otau_directory: /config/zigpy_ota
Indentation matters with YAML, so be sure you copy and paste the literal text from above.
Then click the “Browse Filesystem” button at the top of the File editor UI, and click “New folder”. In the prompt, type zigpy_ota
What you’ve done, at this point, is configured ZHA to enable OTA updated for Inovelli switches and scan the OTA folder for matching binaries to update. All we need now is the binary to update to!
For 2.15, this is currently found in the beta
folder of the inovelli github repository. While this is marked as beta, Inovelli is currently shipping new switches with this firmware (and I’m running several of them without problems) so it can be considered “production” at this point.
For firmware 2.15, use the following link: 2.15. Click “Download raw file” from the Github page, which will retrieve a file named VZM31-SN_2.15.ota
Back in Home Assistant’s File Editor, navigate to the newly created folder named zigpy_ota
by clicking the Folder icon at the top and selecting the directory named that. Then click the “Upload file” icon from the same page, and select the file you downloaded from Github earlier.
Now you need to restart Home Assistant to effectively reboot ZHA to reconfigure and scan for the new OTA files for your switch. You can do this via the “Settings → System → Corner Power Icon → Restart Home Assistant”
HA will start back up and the OTA won’t happen immediately. Time for a cuppa. Eventually, your switch will start showing the firmware progress LED (displayed as a slow blink effect), assuming your switch has the Firmware progress LED
setting enabled (it is by default). This update takes time: while the file is less than a megabyte, zigbee is a slow transmission protocol; give the switch around 30 minutes to update.
After the LED on the switch is done flickering a progress bar, check/refresh the device in ZHA. To check the version string, click the “hamburger” icon next to the Reconfigure
text on the device page and select Manage zigbee device
.
Pick the Basic
“Cluster” from the dropdown that appears, and select the sw_build_id
attribute. Click Read
. If the device updated successfully, you should see 2.15
.
At this point, your switch is on the most recent firmware. Congrats! However, you may be missing some of the new entities which recent firmwares exposes (for example, Led scaling mode
). There may be a better way, but I personally just chose to remove my switches from ZHA by clicking the same “hamburger” icon mentioned above and selecting “Remove”, and then re-adding the device via ZHA (like you originally did to add it). This will cause HA to reinterview the switch and generate all new parameters as entities. This may effect existing automations/etc, so be aware before doing so (I’m not entirely sure on this part).
I hope this helps! If screenshots/etc would help anybody, or if any part is unclear, please respond to this post and I’ll gladly edit/update with additional clarification and steps and images. Happy ZHA switching!