Capabilities not updated for existing devices upon app update

I wonder how I can refresh the capabilities presented for a device, when adding new custom capabilities to a device through an app update. The problem is that the capabilities available for an existing device, added before the app upgrade with the new custom capabilities, is only updated if first removing the device and then adding it again. This is not a good solution since it makes all dependent flows invalid. What am I missing?

1 Like

This is by design.
capabilities for every device are determined only on pairing and can not be changed afterwards, so for new capabilities a re-pair is a must.

Athom once spoke of a ā€œre-includeā€ feature, but this has as of yet not come to life, or announced for the longest time.

I see, that is a bit unfortunate, since the users of the app might miss out of new capabilities since it is not clear that you have to remove and pair the devices again.

The developer can update the device to ā€˜errorā€™ and ask the user to repair.

At the moment the ā€˜setWarningā€™ is not working correctly.

you mean re-pair i guess ?

after calling setUnavailable the only possibility the user has is to remove & re-pair the device ( which breaks all flows for this devices ). that makes developing and updating ( add new functionalities/remove old ) pretty hard.

currently i only see the possibility to create new drivers every time and to mark the old ones as ā€œobsoleteā€.

You can do that, you can also add "deprecated": true to the app.json for it to not show up.

As some stated above, a re-pair is missing. Now you have to re-do alot of flows just cus of that (due to driver update and you have to remove/add dev again).
Feels like thats another ā€œcore fetatureā€ thats missing. Alongside a backup function and other stuff.