From ad84550c0c0c9d8d4c3f6d911619ffd36794a94a Mon Sep 17 00:00:00 2001 From: rboy1 <3846367+rboy1@users.noreply.github.com> Date: Sat, 15 Nov 2025 23:34:43 -0500 Subject: [PATCH 1/2] Fix for integer overflow zwave required signed integers --- drivers/SmartThings/zwave-switch/src/init.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/SmartThings/zwave-switch/src/init.lua b/drivers/SmartThings/zwave-switch/src/init.lua index 5814945884..ba1899a38f 100644 --- a/drivers/SmartThings/zwave-switch/src/init.lua +++ b/drivers/SmartThings/zwave-switch/src/init.lua @@ -16,6 +16,7 @@ local Configuration = (require "st.zwave.CommandClass.Configuration")({ version local SwitchMultilevel = (require "st.zwave.CommandClass.SwitchMultilevel")({ version = 4 }) local preferencesMap = require "preferences" local configurationsMap = require "configurations" +local utils = require "st.utils" local lazy_load_if_possible = require "lazy_load_subdriver" @@ -65,7 +66,7 @@ local function info_changed(driver, device, event, args) for id, value in pairs(device.preferences) do if args.old_st_store.preferences[id] ~= value and preferences and preferences[id] then local new_parameter_value = preferencesMap.to_numeric_value(device.preferences[id]) - device:send(Configuration:Set({ parameter_number = preferences[id].parameter_number, size = preferences[id].size, configuration_value = new_parameter_value })) + device:send(Configuration:Set({ parameter_number = preferences[id].parameter_number, size = preferences[id].size, configuration_value = utils.unsigned_to_signed(new_parameter_value, preferences[id].size) })) end end end @@ -78,7 +79,7 @@ local function do_configure(driver, device) local configuration = configurationsMap.get_device_configuration(device) if configuration ~= nil then for _, value in ipairs(configuration) do - device:send(Configuration:Set({ parameter_number = value.parameter_number, size = value.size, configuration_value = value.configuration_value })) + device:send(Configuration:Set({ parameter_number = value.parameter_number, size = value.size, configuration_value = utils.unsigned_to_signed(value.configuration_value, value.size) })) end end end From 5a4a4545e5a05c7cc42121d814ffd5fc3165fc31 Mon Sep 17 00:00:00 2001 From: rboy1 <3846367+rboy1@users.noreply.github.com> Date: Sat, 15 Nov 2025 23:36:04 -0500 Subject: [PATCH 2/2] Fix for integer overflow --- .../SmartThings/zwave-switch/src/aeotec-heavy-duty/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/SmartThings/zwave-switch/src/aeotec-heavy-duty/init.lua b/drivers/SmartThings/zwave-switch/src/aeotec-heavy-duty/init.lua index 2a47c4e122..471973dfd8 100644 --- a/drivers/SmartThings/zwave-switch/src/aeotec-heavy-duty/init.lua +++ b/drivers/SmartThings/zwave-switch/src/aeotec-heavy-duty/init.lua @@ -10,6 +10,7 @@ local cc = require "st.zwave.CommandClass" local Configuration = (require "st.zwave.CommandClass.Configuration")({ version = 4 }) local preferencesMap = require "preferences" +local utils = require "st.utils" local LAST_REPORT_TIME = "LAST_REPORT_TIME" @@ -79,7 +80,7 @@ local function info_changed(driver, device, event, args) device:send(Configuration:Set({ parameter_number = preferences[id].parameter_number, size = preferences[id].size, - configuration_value = new_parameter_value + configuration_value = utils.unsigned_to_signed(new_parameter_value, preferences[id].size) })) end end