diff --git a/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua b/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua index a91790cedb..fcd1432a69 100644 --- a/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua +++ b/drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua @@ -247,16 +247,13 @@ local function profile_changed(latest_profile, previous_profile) if prev_component == nil then return true end - if #synced_component.capabilities ~= #prev_component.capabilities then - return true - end -- Build a table of capability IDs from the previous component. Then, use this map to check -- that all capabilities in the synced component existed in the previous component. local prev_cap_ids = {} - for _, capability in ipairs(prev_component.capabilities or {}) do + for _, capability in pairs(prev_component.capabilities or {}) do prev_cap_ids[capability.id] = true end - for _, capability in ipairs(synced_component.capabilities or {}) do + for _, capability in pairs(synced_component.capabilities or {}) do if not prev_cap_ids[capability.id] then return true end diff --git a/drivers/SmartThings/matter-sensor/src/sub_drivers/air_quality_sensor/air_quality_sensor_utils/utils.lua b/drivers/SmartThings/matter-sensor/src/sub_drivers/air_quality_sensor/air_quality_sensor_utils/utils.lua index 5c1726d6d8..b80b8fa337 100644 --- a/drivers/SmartThings/matter-sensor/src/sub_drivers/air_quality_sensor/air_quality_sensor_utils/utils.lua +++ b/drivers/SmartThings/matter-sensor/src/sub_drivers/air_quality_sensor/air_quality_sensor_utils/utils.lua @@ -86,16 +86,13 @@ function AirQualitySensorUtils.profile_changed(latest_profile, previous_profile) if prev_component == nil then return true end - if #synced_component.capabilities ~= #prev_component.capabilities then - return true - end -- Build a table of capability IDs from the previous component. Then, use this map to check -- that all capabilities in the synced component existed in the previous component. local prev_cap_ids = {} - for _, capability in ipairs(prev_component.capabilities or {}) do + for _, capability in pairs(prev_component.capabilities or {}) do prev_cap_ids[capability.id] = true end - for _, capability in ipairs(synced_component.capabilities or {}) do + for _, capability in pairs(synced_component.capabilities or {}) do if not prev_cap_ids[capability.id] then return true end diff --git a/drivers/SmartThings/matter-switch/src/switch_utils/utils.lua b/drivers/SmartThings/matter-switch/src/switch_utils/utils.lua index 16d602cfc1..f3d1d388a4 100644 --- a/drivers/SmartThings/matter-switch/src/switch_utils/utils.lua +++ b/drivers/SmartThings/matter-switch/src/switch_utils/utils.lua @@ -334,16 +334,13 @@ function utils.profile_changed(latest_profile, previous_profile) if prev_component == nil then return true end - if #synced_component.capabilities ~= #prev_component.capabilities then - return true - end -- Build a table of capability IDs from the previous component. Then, use this map to check -- that all capabilities in the synced component existed in the previous component. local prev_cap_ids = {} - for _, capability in ipairs(prev_component.capabilities or {}) do + for _, capability in pairs(prev_component.capabilities or {}) do prev_cap_ids[capability.id] = true end - for _, capability in ipairs(synced_component.capabilities or {}) do + for _, capability in pairs(synced_component.capabilities or {}) do if not prev_cap_ids[capability.id] then return true end diff --git a/drivers/SmartThings/matter-switch/src/test/test_matter_light_fan.lua b/drivers/SmartThings/matter-switch/src/test/test_matter_light_fan.lua index b5ae89fd7a..b186446e04 100644 --- a/drivers/SmartThings/matter-switch/src/test/test_matter_light_fan.lua +++ b/drivers/SmartThings/matter-switch/src/test/test_matter_light_fan.lua @@ -161,7 +161,7 @@ test.register_coroutine_test( if i > 1 then subscribe_request:merge(clus:subscribe(mock_device_capabilities_disabled)) end end test.socket.device_lifecycle:__queue_receive(mock_device_capabilities_disabled:generate_info_changed( - {profile = {id = "00000000-1111-2222-3333-000000000004", components = { main = {capabilities={{id="fanSpeedPercent", version=1}, {id="fanMode", version=1}, {id="firmwareUpdate", version=1}, {id="refresh", version=1}}}}}}) + {profile = {id = "00000000-1111-2222-3333-000000000004", components = { main = {capabilities={["fanSpeedPercent"] = {id="fanSpeedPercent", version=1}, ["fanMode"] = {id="fanMode", version=1}, ["firmwareUpdate"] = {id="firmwareUpdate", version=1}, ["refresh"] = {id="refresh", version=1}}}}}}) ) test.socket.matter:__expect_send({mock_device_capabilities_disabled.id, subscribe_request}) end, @@ -180,7 +180,7 @@ test.register_coroutine_test( if i > 1 then subscribe_request:merge(clus:subscribe(mock_device_capabilities_disabled)) end end test.socket.device_lifecycle:__queue_receive(mock_device_capabilities_disabled:generate_info_changed( - {profile = {id = "00000000-1111-2222-3333-000000000004", components = { main = {capabilities={{id="firmwareUpdate", version=1}, {id="refresh", version=1}}}}}}) + {profile = {id = "00000000-1111-2222-3333-000000000004", components = { main = {capabilities={["firmwareUpdate"] = {id="firmwareUpdate", version=1}, ["refresh"] = {id="refresh", version=1}}}}}}) ) end, { test_init = function() test.mock_device.add_test_device(mock_device_capabilities_disabled) end }