brians Posted March 29, 2022 Posted March 29, 2022 (edited) Anyone who has used Z-Wave probably has run into the issue when they have to exclude and re-include the same device, the Node ID increments to the next available number. This number is picked by the actual Z-Wave controller itself (not ISY) and the number is stored in its NVRAM. This results in gaps. Eg. if you currently have the following devices on ISY... Quote Light2 ZW002 Light3 ZW003 Light4 ZW004 If you exclude Light3 and re-include it, rename it, the ID will change to: Quote Light3 ZW005 And the devices will be like this on ISY... Quote Light2 ZW002 <not used was ZW003> Light4 ZW004 Light3 ZW005 Programs and scenes break because they reference the old ZW003, so the resolution is to manually go through all the programs and change to the new device which is ZW005. Z-Wave has a limit of 232 devices, after reaching that limit, it will start at 1 (2 actually, the controller is 1) again and start filling in the gaps. I suppose you could exclude/include the device 232 or so more times to get the counter back where it was but this is not realistic. Now I wonder if it is possible for UD to change the way Z-Wave nodes are created by adding in a reference table. There would be 232 entries and when you add a Z-Wave device you would pick a free slot to add, which would contain the actual Node ID. ISY would instead use the slot number in the table and convert back/forth to/from the Z-Wave controller. UD aready seems to do this for node servers (only has 25 slots)... it is possible to add/remove a Node server from polyglot back into the same slot number and all programs work as before (not sure about scenes because I have not tried this). Initial migration to this method for existing users would be some work however. Any thoughts if this is possible? Edited March 29, 2022 by brians
lilyoyo1 Posted March 30, 2022 Posted March 30, 2022 6 hours ago, brians said: Anyone who has used Z-Wave probably has run into the issue when they have to exclude and re-include the same device, the Node ID increments to the next available number. This number is picked by the actual Z-Wave controller itself (not ISY) and the number is stored in its NVRAM. This results in gaps. Eg. if you currently have the following devices on ISY... If you exclude Light3 and re-include it, rename it, the ID will change to: And the devices will be like this on ISY... Programs and scenes break because they reference the old ZW003, so the resolution is to manually go through all the programs and change to the new device which is ZW005. Z-Wave has a limit of 232 devices, after reaching that limit, it will start at 1 (2 actually, the controller is 1) again and start filling in the gaps. I suppose you could exclude/include the device 232 or so more times to get the counter back where it was but this is not realistic. Now I wonder if it is possible for UD to change the way Z-Wave nodes are created by adding in a reference table. There would be 232 entries and when you add a Z-Wave device you would pick a free slot to add, which would contain the actual Node ID. ISY would instead use the slot number in the table and convert back/forth to/from the Z-Wave controller. UD aready seems to do this for node servers (only has 25 slots)... it is possible to add/remove a Node server from polyglot back into the same slot number and all programs work as before (not sure about scenes because I have not tried this). Initial migration to this method for existing users would be some work however. Any thoughts if this is possible? That's a known limitation of zwave and not something they can change since it's built into the zwave code itself
brians Posted March 30, 2022 Author Posted March 30, 2022 53 minutes ago, lilyoyo1 said: That's a known limitation of zwave and not something they can change since it's built into the zwave code itself From how I understand how it works is the Z-Wave controller (meaning the USB dongle in this case) determines the node number when including a z-wave device. ISY uses that number for its nodes/devices and you can rename them to something more friendly. However the ISY does not use this friendly name other than for our benefit to keep things organized and recognizable, and uses the actual node number of the device to reference internally (programs etc). I am wondering if there could be one more level of naming reference in between the one used internally and the z-wave node number... a better explanation for what I am referring to is maybe a zwave node alias. This way you could put any z-wave node ID into an internal ISY node-slot of your choosing. This may just not be possible or realistic to do because of they way ISY is designed to work with Z-Wave and the amount of work required and bugs introduced may not justify the benefits. Maybe it just isn't possible at all.
lilyoyo1 Posted March 30, 2022 Posted March 30, 2022 (edited) 5 hours ago, brians said: From how I understand how it works is the Z-Wave controller (meaning the USB dongle in this case) determines the node number when including a z-wave device. ISY uses that number for its nodes/devices and you can rename them to something more friendly. However the ISY does not use this friendly name other than for our benefit to keep things organized and recognizable, and uses the actual node number of the device to reference internally (programs etc). I am wondering if there could be one more level of naming reference in between the one used internally and the z-wave node number... a better explanation for what I am referring to is maybe a zwave node alias. This way you could put any z-wave node ID into an internal ISY node-slot of your choosing. This may just not be possible or realistic to do because of they way ISY is designed to work with Z-Wave and the amount of work required and bugs introduced may not justify the benefits. Maybe it just isn't possible at all. This is all done by the controller itself and it's something UDI has no control over. Siliconlabs designed this into the chip. It works for node servers because those are undefined. There's no protocol requirements that UDI must follow. UDI can do what they want with it https://www.google.com/url?sa=t&source=web&rct=j&url=https://cn.silabs.com/documents/public/user-guides/INS10244-Z-Wave-Node-Type-Overview-Network-Installation-Guide.pdf&ved=2ahUKEwiy58WexO32AhWDlWoFHXgmCQMQFnoECEgQAQ&usg=AOvVaw1R8d1pxdOmaYU545DVS4Rv Edited March 30, 2022 by lilyoyo1
jfai Posted March 30, 2022 Posted March 30, 2022 It could be done using alias-to-ZID mapping. In your ISY programs, you would only use the aliases for Z-Wave devices. The ISY would use the mapping table to translate between the alias and the Z-Wave id. Then, when a device is assigned a new id, you would need to change the id in the mapping table as an additional administration step, leaving the alias the same.
Recommended Posts