Skip to content

Commit 6dec746

Browse files
Remove OPTIONAL_SUPPORTED_COMPONENT_CAPABILITIES field
Compare the newly generated component capabilities list against the current device profile rather than saving this information in a persisted field.
1 parent 2c5cb29 commit 6dec746

File tree

1 file changed

+14
-9
lines changed
  • drivers/SmartThings/matter-switch/src/sub_drivers/camera

1 file changed

+14
-9
lines changed

drivers/SmartThings/matter-switch/src/sub_drivers/camera/init.lua

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ local MAX_ENCODED_PIXEL_RATE = "__max_encoded_pixel_rate"
2828
local MAX_FRAMES_PER_SECOND = "__max_frames_per_second"
2929
local MAX_VOLUME_LEVEL = "__max_volume_level"
3030
local MIN_VOLUME_LEVEL = "__min_volume_level"
31-
local OPTIONAL_SUPPORTED_COMPONENT_CAPABILITIES = "__optional_supported_component_capabilities"
3231
local SUPPORTED_RESOLUTIONS = "__supported_resolutions"
3332
local TRIGGERED_ZONES = "__triggered_zones"
3433
local VIEWPORT = "__viewport"
@@ -258,21 +257,29 @@ local function compare_components(synced_components, prev_components)
258257
return true
259258
end
260259

261-
local function compare_optional_capabilities(optional_capabilities, prev_optional_capabilities)
260+
local function optional_capabilities_list_changed(optional_capabilities, prev_component_list)
261+
local prev_optional_capabilities = {}
262+
for idx, comp in pairs(prev_component_list or {}) do
263+
local cap_list = {}
264+
for _, capability in pairs(comp.capabilities) do
265+
table.insert(cap_list, capability.id)
266+
end
267+
table.insert(prev_optional_capabilities, {idx, cap_list})
268+
end
262269
if #optional_capabilities ~= #prev_optional_capabilities then
263-
return false
270+
return true
264271
end
265272
for _, capability in pairs(optional_capabilities) do
266273
if not switch_utils.tbl_contains(prev_optional_capabilities, capability) then
267-
return false
274+
return true
268275
end
269276
end
270277
for _, capability in pairs(prev_optional_capabilities) do
271278
if not switch_utils.tbl_contains(optional_capabilities, capability) then
272-
return false
279+
return true
273280
end
274281
end
275-
return true
282+
return false
276283
end
277284

278285
local function add_camera_subscribed_attributes(device)
@@ -566,11 +573,9 @@ local function match_profile(device, status_light_enabled_present, status_light_
566573
table.insert(optional_supported_component_capabilities, {component_map.doorbell, doorbell_component_capabilities})
567574
end
568575

569-
if not device:get_field(CAMERA_INITIALIZED) or
570-
not compare_optional_capabilities(optional_supported_component_capabilities, device:get_field(OPTIONAL_SUPPORTED_COMPONENT_CAPABILITIES) or {}) then
576+
if not device:get_field(CAMERA_INITIALIZED) or optional_capabilities_list_changed(optional_supported_component_capabilities, device.profile.components) then
571577
device:try_update_metadata({profile = "matter-camera", optional_component_capabilities = optional_supported_component_capabilities})
572578
device:set_field(CAMERA_INITIALIZED, true, {persist = true})
573-
device:set_field(OPTIONAL_SUPPORTED_COMPONENT_CAPABILITIES, optional_supported_component_capabilities, {persist = true})
574579
end
575580
end
576581

0 commit comments

Comments
 (0)