zwave-js / zwave-js-ui

Full featured Z-Wave Control Panel UI and MQTT gateway. Built using Nodejs, and Vue/Vuetify
https://zwave-js.github.io/zwave-js-ui
MIT License
966 stars 205 forks source link

[feat] Use gathered statistics to notify of available firmware updates #2529

Open LordMike opened 2 years ago

LordMike commented 2 years ago

Is your feature request related to a problem? Please describe. I'm not always aware of firmware updates that exist, especially not when I have devices from multiple different manufacturers.. Then getting to know of updates is a pain point. Generally, I want to be ahead of the curve and get updates, as they may fix issues I haven't noticed - or add new features that I didn't know I needed :).

Just getting to know that there is an update, is a first step.

Describe the solution you'd like I was reading over the statistics you gather (which I've always enabled), and I realized you're gathering device ids and firmware versions. This is all we really need to tell of available firmware.

I imagine something like this could be done in the UI.

image

The exclamation mark and text would link to either:

Additionally, some alert box somewhere should say that any device has a firmware update available, maybe like one of these examples below - either next to actions buttons or maybe further up in the navbar. Clicking on of these alerts could handily filter the nodes table to only show devices with available updates.

image

image

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context I imagine that to reduce the load on any potential server, you would be able to do a dump of the data in the statistics database for each device. Kind of like a grouping of (device id, firmware[]), so you know of all available firmwares known for each device.

I then imagine that you could distribute this list of device-firmware pairs using regular updates of zwavejs2mqtt, and not by using any API call to some central server (potentially costly). So if you, like the config database, embed the current database within an update, then users will have a complete set of available firmwares for each device - which can then be used to provide the visual cues I'd like.

Even with 10's of thousands of devices, the full list of firmwares would be relatively short (and even then, it's just a long list of numbers - both device ids and firmwares).. You may even consider only including the max() of each firmware, so that only the latest is displayed.

Side note: I'm not advocating for sharing updates in any way, just notifying users that there is one available.. It's still on me, as a user, to download the update and apply it.

kpine commented 2 years ago

Perhaps you are unaware of this? https://github.com/zwave-js/firmware-updates

robertsLando commented 2 years ago

In this PR: https://github.com/zwave-js/zwavejs2mqtt/pull/2504

I added the support for OTA updates (Not released yet). I think automatic updates checks could be a zwavejs option and zwavejs could create a 'firmware available' event that tells use when a new update is available for a node or a set of nodes.

Otherwise I could add a settings to make scheduled checks on my side

LordMike commented 2 years ago

Perhaps you are unaware of this? https://github.com/zwave-js/firmware-updates

I did not. This is cool. :)

I hope the data in this service will be improved by the statistics provided by zwavejs users :) it didn’t mention that.

As a side note. If this ends up being done by api, I think the check interval should be extremely rare, unless it’s some kind of feed.