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
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ components:
- id: fanMode
version: 1
optional: true
- id: fanSpeedPercent
version: 1
config:
values:
- key: "percent.value"
range: [ 1, 100 ]
optional: true
- id: fanOscillationMode
version: 1
optional: true
Expand Down
4 changes: 2 additions & 2 deletions drivers/SmartThings/matter-thermostat/src/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,15 @@ local log = require "log"
local clusters = require "st.matter.clusters"
local embedded_cluster_utils = require "embedded-cluster-utils"
local im = require "st.matter.interaction_model"

local MatterDriver = require "st.matter.driver"
local utils = require "st.utils"
local version = require "version"

local SUPPORTED_COMPONENT_CAPABILITIES = "__supported_component_capabilities"
-- declare match_profile function for use throughout file
local match_profile

-- Include driver-side definitions when lua libs api version is < 10
local version = require "version"
if version.api < 10 then
clusters.HepaFilterMonitoring = require "HepaFilterMonitoring"
clusters.ActivatedCarbonFilterMonitoring = require "ActivatedCarbonFilterMonitoring"
Expand Down Expand Up @@ -966,6 +965,7 @@ local function match_modular_profile_thermostat(driver, device)

if #fan_eps > 0 then
table.insert(main_component_capabilities, capabilities.fanMode.ID)
table.insert(main_component_capabilities, capabilities.fanSpeedPercent.ID)
end
if #rock_eps > 0 then
table.insert(main_component_capabilities, capabilities.fanOscillationMode.ID)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ local expected_metadata = {
{
"relativeHumidityMeasurement",
"fanMode",
"fanSpeedPercent",
"fanOscillationMode",
"thermostatHeatingSetpoint",
"thermostatCoolingSetpoint"
Expand All @@ -231,6 +232,7 @@ local new_cluster_subscribe_list = {
clusters.RelativeHumidityMeasurement.attributes.MeasuredValue,
clusters.FanControl.attributes.FanMode,
clusters.FanControl.attributes.FanModeSequence,
clusters.FanControl.attributes.PercentCurrent,
clusters.FanControl.attributes.RockSupport, -- These two attributes will be subscribed to following the profile
clusters.FanControl.attributes.RockSetting, -- change since the fanOscillationMode capability will be enabled.
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,8 +331,6 @@ test.register_message_test(
}
)

-- test.socket.matter:__expect_send({mock_device_auto.id, clusters.Thermostat.attributes.MinSetpointDeadBand:read(mock_device_auto)})

test.register_message_test(
"Thermostat mode reports should generate correct messages",
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ local mock_device_basic = test.mock_device.build_test_matter_device({
{cluster_id = clusters.TemperatureMeasurement.ID, cluster_type = "SERVER"},
{cluster_id = clusters.RelativeHumidityMeasurement.ID, cluster_type = "SERVER"},
{cluster_id = clusters.PowerSource.ID, cluster_type = "SERVER", feature_map = 0},
{cluster_id = clusters.FanControl.ID, cluster_type = "SERVER", feature_map = 0},
},
device_types = {
{device_type_id = 0x0301, device_type_revision = 1} -- Thermostat
Expand All @@ -65,7 +66,6 @@ local function initialize_mock_device(generic_mock_device, generic_subscribed_at
subscribe_request:merge(cluster:subscribe(generic_mock_device))
end
end
test.socket.matter:__expect_send({generic_mock_device.id, subscribe_request})
return subscribe_request
end

Expand Down Expand Up @@ -107,6 +107,7 @@ local function test_init()

test.socket.device_lifecycle:__queue_receive({ mock_device_basic.id, "init" })
subscribe_request_basic = initialize_mock_device(mock_device_basic, subscribed_attributes)
test.socket.matter:__expect_send({mock_device_basic.id, subscribe_request_basic})
end

-- run the profile configuration tests
Expand Down Expand Up @@ -134,6 +135,7 @@ local expected_metadata = {
{
"relativeHumidityMeasurement",
"fanMode",
"fanSpeedPercent",
"thermostatHeatingSetpoint",
"thermostatCoolingSetpoint"
},
Expand All @@ -145,7 +147,28 @@ local expected_metadata = {
test.register_coroutine_test(
"Device with modular profile should enable correct optional capabilities",
function()
test_thermostat_device_type_update_modular_profile(mock_device_basic, expected_metadata, subscribe_request_basic)
local subscribed_attributes = {
clusters.Thermostat.attributes.LocalTemperature,
clusters.Thermostat.attributes.OccupiedCoolingSetpoint,
clusters.Thermostat.attributes.OccupiedHeatingSetpoint,
clusters.Thermostat.attributes.AbsMinCoolSetpointLimit,
clusters.Thermostat.attributes.AbsMaxCoolSetpointLimit,
clusters.Thermostat.attributes.AbsMinHeatSetpointLimit,
clusters.Thermostat.attributes.AbsMaxHeatSetpointLimit,
clusters.Thermostat.attributes.SystemMode,
clusters.Thermostat.attributes.ThermostatRunningState,
clusters.Thermostat.attributes.ControlSequenceOfOperation,
clusters.TemperatureMeasurement.attributes.MeasuredValue,
clusters.TemperatureMeasurement.attributes.MinMeasuredValue,
clusters.TemperatureMeasurement.attributes.MaxMeasuredValue,
clusters.RelativeHumidityMeasurement.attributes.MeasuredValue,
clusters.FanControl.attributes.FanMode,
clusters.FanControl.attributes.FanModeSequence,
clusters.FanControl.attributes.PercentCurrent,
clusters.PowerSource.attributes.BatPercentRemaining,
}
local subscribe_request = initialize_mock_device(mock_device_basic, subscribed_attributes)
test_thermostat_device_type_update_modular_profile(mock_device_basic, expected_metadata, subscribe_request)
end,
{ test_init = test_init }
)
Expand Down
Loading