Skip to content

Commit ad29996

Browse files
Add fanSpeedPercent to Thermostat device types
1 parent 63158a5 commit ad29996

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

drivers/SmartThings/matter-thermostat/profiles/thermostat-modular.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ components:
99
- id: fanMode
1010
version: 1
1111
optional: true
12+
- id: fanSpeedPercent
13+
version: 1
14+
config:
15+
values:
16+
- key: "percent.value"
17+
range: [ 1, 100 ]
18+
optional: true
1219
- id: fanOscillationMode
1320
version: 1
1421
optional: true

drivers/SmartThings/matter-thermostat/src/test/test_matter_thermo_multiple_device_types.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ local expected_metadata = {
197197
{
198198
"relativeHumidityMeasurement",
199199
"fanMode",
200+
"fanSpeedPercent",
200201
"fanOscillationMode",
201202
"thermostatHeatingSetpoint",
202203
"thermostatCoolingSetpoint"
@@ -220,6 +221,7 @@ local new_cluster_subscribe_list = {
220221
clusters.RelativeHumidityMeasurement.attributes.MeasuredValue,
221222
clusters.FanControl.attributes.FanMode,
222223
clusters.FanControl.attributes.FanModeSequence,
224+
clusters.FanControl.attributes.PercentCurrent,
223225
clusters.FanControl.attributes.RockSupport, -- These two attributes will be subscribed to following the profile
224226
clusters.FanControl.attributes.RockSetting, -- change since the fanOscillationMode capability will be enabled.
225227
}

drivers/SmartThings/matter-thermostat/src/test/test_matter_thermostat.lua

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,6 @@ test.register_message_test(
320320
}
321321
)
322322

323-
-- test.socket.matter:__expect_send({mock_device_auto.id, clusters.Thermostat.attributes.MinSetpointDeadBand:read(mock_device_auto)})
324-
325323
test.register_message_test(
326324
"Thermostat mode reports should generate correct messages",
327325
{

drivers/SmartThings/matter-thermostat/src/test/test_matter_thermostat_modular.lua

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ local mock_device_basic = test.mock_device.build_test_matter_device({
3838
{cluster_id = clusters.TemperatureMeasurement.ID, cluster_type = "SERVER"},
3939
{cluster_id = clusters.RelativeHumidityMeasurement.ID, cluster_type = "SERVER"},
4040
{cluster_id = clusters.PowerSource.ID, cluster_type = "SERVER", feature_map = 0},
41+
{cluster_id = clusters.FanControl.ID, cluster_type = "SERVER", feature_map = 0},
4142
},
4243
device_types = {
4344
{device_type_id = 0x0301, device_type_revision = 1} -- Thermostat
@@ -54,7 +55,6 @@ local function initialize_mock_device(generic_mock_device, generic_subscribed_at
5455
subscribe_request:merge(cluster:subscribe(generic_mock_device))
5556
end
5657
end
57-
test.socket.matter:__expect_send({generic_mock_device.id, subscribe_request})
5858
return subscribe_request
5959
end
6060

@@ -96,6 +96,7 @@ local function test_init()
9696

9797
test.socket.device_lifecycle:__queue_receive({ mock_device_basic.id, "init" })
9898
subscribe_request_basic = initialize_mock_device(mock_device_basic, subscribed_attributes)
99+
test.socket.matter:__expect_send({mock_device_basic.id, subscribe_request_basic})
99100
end
100101

101102
-- run the profile configuration tests
@@ -123,6 +124,7 @@ local expected_metadata = {
123124
{
124125
"relativeHumidityMeasurement",
125126
"fanMode",
127+
"fanSpeedPercent",
126128
"thermostatHeatingSetpoint",
127129
"thermostatCoolingSetpoint"
128130
},
@@ -134,7 +136,28 @@ local expected_metadata = {
134136
test.register_coroutine_test(
135137
"Device with modular profile should enable correct optional capabilities",
136138
function()
137-
test_thermostat_device_type_update_modular_profile(mock_device_basic, expected_metadata, subscribe_request_basic)
139+
local subscribed_attributes = {
140+
clusters.Thermostat.attributes.LocalTemperature,
141+
clusters.Thermostat.attributes.OccupiedCoolingSetpoint,
142+
clusters.Thermostat.attributes.OccupiedHeatingSetpoint,
143+
clusters.Thermostat.attributes.AbsMinCoolSetpointLimit,
144+
clusters.Thermostat.attributes.AbsMaxCoolSetpointLimit,
145+
clusters.Thermostat.attributes.AbsMinHeatSetpointLimit,
146+
clusters.Thermostat.attributes.AbsMaxHeatSetpointLimit,
147+
clusters.Thermostat.attributes.SystemMode,
148+
clusters.Thermostat.attributes.ThermostatRunningState,
149+
clusters.Thermostat.attributes.ControlSequenceOfOperation,
150+
clusters.TemperatureMeasurement.attributes.MeasuredValue,
151+
clusters.TemperatureMeasurement.attributes.MinMeasuredValue,
152+
clusters.TemperatureMeasurement.attributes.MaxMeasuredValue,
153+
clusters.RelativeHumidityMeasurement.attributes.MeasuredValue,
154+
clusters.FanControl.attributes.FanMode,
155+
clusters.FanControl.attributes.FanModeSequence,
156+
clusters.FanControl.attributes.PercentCurrent,
157+
clusters.PowerSource.attributes.BatPercentRemaining,
158+
}
159+
local subscribe_request = initialize_mock_device(mock_device_basic, subscribed_attributes)
160+
test_thermostat_device_type_update_modular_profile(mock_device_basic, expected_metadata, subscribe_request)
138161
end,
139162
{ test_init = test_init }
140163
)

drivers/SmartThings/matter-thermostat/src/thermostat_utils/device_configuration.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ function DeviceConfiguration.match_modular_profile_thermostat(device)
201201

202202
if #fan_eps > 0 then
203203
table.insert(main_component_capabilities, capabilities.fanMode.ID)
204+
table.insert(main_component_capabilities, capabilities.fanSpeedPercent.ID)
204205
end
205206
if #rock_eps > 0 then
206207
table.insert(main_component_capabilities, capabilities.fanOscillationMode.ID)

0 commit comments

Comments
 (0)