Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
231 changes: 231 additions & 0 deletions drivers/SmartThings/matter-switch/profiles/button-modular.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
name: button-modular
components:
- id: main
capabilities:
- id: button
version: 1
- id: battery
version: 1
optional: true
- id: batteryLevel
version: 1
optional: true
- id: motionSensor
version: 1
optional: true
- id: firmwareUpdate
version: 1
- id: refresh
version: 1
categories:
- name: RemoteController
- id: button1
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button2
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button3
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button4
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button5
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button6
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button7
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button8
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button9
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button10
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button11
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button12
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button13
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button14
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button15
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button16
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button17
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button18
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button19
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button20
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button21
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button22
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button23
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button24
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button25
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button26
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button27
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button28
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button29
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
- id: button30
capabilities:
- id: button
version: 1
optional: true
categories:
- name: RemoteController
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ local st_utils = require "st.utils"
local device_cfg = require "switch_utils.device_configuration"
local fields = require "switch_utils.fields"
local switch_utils = require "switch_utils.utils"
local update_metadata_request = require "switch_utils.update_metadata_request"

local CameraDeviceConfiguration = {}

Expand Down Expand Up @@ -196,7 +197,7 @@ function CameraDeviceConfiguration.create_child_devices(driver, device)
local parent_child_device = false
for _, ep in ipairs(device.endpoints or {}) do
if device:supports_server_cluster(clusters.OnOff.ID, ep.endpoint_id) then
local child_profile = device_cfg.SwitchCfg.assign_profile_for_onoff_ep(device, ep.endpoint_id)
local child_profile = device_cfg.SwitchCfg.assign_profile_for_onoff_ep(device, ep.endpoint_id).profile
if child_profile then
num_floodlight_eps = num_floodlight_eps + 1
local name = string.format("%s %d", "Floodlight", num_floodlight_eps)
Expand Down Expand Up @@ -224,7 +225,7 @@ function CameraDeviceConfiguration.match_profile(device)
local status_light_enabled_present, status_light_brightness_present = get_status_light_presence(device)
local hard_privacy_mode_present = get_hard_privacy_mode_presence(device)
local profile_update_requested = false
local optional_supported_component_capabilities = {}
local updated_metadata = update_metadata_request.init():add_profile("camera")
local main_component_capabilities = {}
local status_led_component_capabilities = {}
local speaker_component_capabilities = {}
Expand Down Expand Up @@ -313,23 +314,23 @@ function CameraDeviceConfiguration.match_profile(device)
table.insert(status_led_component_capabilities, capabilities.mode.ID)
end

table.insert(optional_supported_component_capabilities, {camera_fields.profile_components.main, main_component_capabilities})
updated_metadata:add_capabilities_to_component(camera_fields.profile_components.main, main_component_capabilities)
if #status_led_component_capabilities > 0 then
table.insert(optional_supported_component_capabilities, {camera_fields.profile_components.statusLed, status_led_component_capabilities})
updated_metadata:add_capabilities_to_component(camera_fields.profile_components.statusLed, status_led_component_capabilities)
end
if #speaker_component_capabilities > 0 then
table.insert(optional_supported_component_capabilities, {camera_fields.profile_components.speaker, speaker_component_capabilities})
updated_metadata:add_capabilities_to_component(camera_fields.profile_components.speaker, speaker_component_capabilities)
end
if #microphone_component_capabilities > 0 then
table.insert(optional_supported_component_capabilities, {camera_fields.profile_components.microphone, microphone_component_capabilities})
updated_metadata:add_capabilities_to_component(camera_fields.profile_components.microphone, microphone_component_capabilities)
end
if #doorbell_component_capabilities > 0 then
table.insert(optional_supported_component_capabilities, {camera_fields.profile_components.doorbell, doorbell_component_capabilities})
updated_metadata:add_capabilities_to_component(camera_fields.profile_components.doorbell, doorbell_component_capabilities)
end

if camera_utils.optional_capabilities_list_changed(optional_supported_component_capabilities, device.profile.components) then
if camera_utils.optional_capabilities_list_changed(updated_metadata:formatted_enabled_components(), device.profile.components) then
profile_update_requested = true
device:try_update_metadata({profile = "camera", optional_component_capabilities = optional_supported_component_capabilities})
device:try_update_metadata(updated_metadata:format_request())
if #doorbell_endpoints > 0 then
CameraDeviceConfiguration.update_doorbell_component_map(device, doorbell_endpoints[1])
button_cfg.configure_buttons(device, device:get_endpoints(clusters.Switch.ID, {feature_bitmap=clusters.Switch.types.SwitchFeature.MOMENTARY_SWITCH}))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ local cluster_base = require "st.matter.cluster_base"
local device_lib = require "st.device"
local buttonCfg = require "switch_utils.device_configuration".ButtonCfg
local create_child = require "switch_utils.device_configuration".ChildCfg.create_or_update_child_devices
local update_metadata_request = require "switch_utils.update_metadata_request"
local switch_utils = require "switch_utils.utils"
local fields = require "switch_utils.fields"
local version = require "version"
Expand Down Expand Up @@ -94,7 +95,7 @@ end
local function assign_profile_for_endpoint(device_type_id)
local profile = fields.device_type_profile_map[device_type_id] or "switch-binary"
return function(device, ep_id, is_child_device)
return profile, nil
return update_metadata_request.init():add_profile(profile)
end
end

Expand Down
Loading
Loading