Skip to content

Commit e806acb

Browse files
committed
Add support for Presets attributes and commands to the Thermostat cluster
Clean up the Thermostat cluster and remove the TemperatureSetpointHoldPolicy attribute and SetTemperatureSetpointHoldPolicy command
1 parent c88d5cf commit e806acb

File tree

60 files changed

+2703
-1393
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+2703
-1393
lines changed

data_model/master/clusters/Thermostat.xml

+55-55
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,59 @@
11
<?xml version="1.0"?>
2-
<!--
3-
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
4-
The information within this document is the property of the Connectivity
5-
Standards Alliance and its use and disclosure are restricted, except as
6-
expressly set forth herein.
7-
8-
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
9-
nontransferable, worldwide, limited and revocable license (without the right to
10-
sublicense), under Connectivity Standards Alliance's applicable copyright
11-
rights, to view, download, save, reproduce and use the document solely for your
12-
own internal purposes and in accordance with the terms of the license set forth
13-
herein. This license does not authorize you to, and you expressly warrant that
14-
you shall not: (a) permit others (outside your organization) to use this
15-
document; (b) post or publish this document; (c) modify, adapt, translate, or
16-
otherwise change this document in any manner or create any derivative work
17-
based on this document; (d) remove or modify any notice or label on this
18-
document, including this Copyright Notice, License and Disclaimer. The
19-
Connectivity Standards Alliance does not grant you any license hereunder other
20-
than as expressly stated herein.
21-
22-
Elements of this document may be subject to third party intellectual property
23-
rights, including without limitation, patent, copyright or trademark rights,
24-
and any such third party may or may not be a member of the Connectivity
25-
Standards Alliance. Connectivity Standards Alliance members grant other
26-
Connectivity Standards Alliance members certain intellectual property rights as
27-
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
28-
Standards Alliance members do not grant you any rights under this license. The
29-
Connectivity Standards Alliance is not responsible for, and shall not be held
30-
responsible in any manner for, identifying or failing to identify any or all
31-
such third party intellectual property rights. Please visit www.csa-iot.org for
32-
more information on how to become a member of the Connectivity Standards
33-
Alliance.
34-
35-
This document and the information contained herein are provided on an “AS IS”
36-
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
37-
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
38-
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
39-
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
40-
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
41-
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
42-
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
43-
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
44-
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
45-
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
46-
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
47-
LOSS OR DAMAGE.
48-
49-
All company, brand and product names in this document may be trademarks that
50-
are the sole property of their respective owners.
51-
52-
This notice and disclaimer must be included on all copies of this document.
53-
54-
Connectivity Standards Alliance
55-
508 Second Street, Suite 206
56-
Davis, CA 95616, USA
2+
<!--
3+
Copyright (C) Connectivity Standards Alliance (2021). All rights reserved.
4+
The information within this document is the property of the Connectivity
5+
Standards Alliance and its use and disclosure are restricted, except as
6+
expressly set forth herein.
7+
8+
Connectivity Standards Alliance hereby grants you a fully-paid, non-exclusive,
9+
nontransferable, worldwide, limited and revocable license (without the right to
10+
sublicense), under Connectivity Standards Alliance's applicable copyright
11+
rights, to view, download, save, reproduce and use the document solely for your
12+
own internal purposes and in accordance with the terms of the license set forth
13+
herein. This license does not authorize you to, and you expressly warrant that
14+
you shall not: (a) permit others (outside your organization) to use this
15+
document; (b) post or publish this document; (c) modify, adapt, translate, or
16+
otherwise change this document in any manner or create any derivative work
17+
based on this document; (d) remove or modify any notice or label on this
18+
document, including this Copyright Notice, License and Disclaimer. The
19+
Connectivity Standards Alliance does not grant you any license hereunder other
20+
than as expressly stated herein.
21+
22+
Elements of this document may be subject to third party intellectual property
23+
rights, including without limitation, patent, copyright or trademark rights,
24+
and any such third party may or may not be a member of the Connectivity
25+
Standards Alliance. Connectivity Standards Alliance members grant other
26+
Connectivity Standards Alliance members certain intellectual property rights as
27+
set forth in the Connectivity Standards Alliance IPR Policy. Connectivity
28+
Standards Alliance members do not grant you any rights under this license. The
29+
Connectivity Standards Alliance is not responsible for, and shall not be held
30+
responsible in any manner for, identifying or failing to identify any or all
31+
such third party intellectual property rights. Please visit www.csa-iot.org for
32+
more information on how to become a member of the Connectivity Standards
33+
Alliance.
34+
35+
This document and the information contained herein are provided on an “AS IS”
36+
basis and the Connectivity Standards Alliance DISCLAIMS ALL WARRANTIES EXPRESS
37+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO (A) ANY WARRANTY THAT THE USE OF THE
38+
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OF THIRD PARTIES (INCLUDING
39+
WITHOUT LIMITATION ANY INTELLECTUAL PROPERTY RIGHTS INCLUDING PATENT, COPYRIGHT
40+
OR TRADEMARK RIGHTS); OR (B) ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
41+
FOR A PARTICULAR PURPOSE, TITLE OR NONINFRINGEMENT. IN NO EVENT WILL THE
42+
CONNECTIVITY STANDARDS ALLIANCE BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF
43+
BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER
44+
DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, PUNITIVE OR CONSEQUENTIAL
45+
DAMAGES OF ANY KIND, IN CONTRACT OR IN TORT, IN CONNECTION WITH THIS DOCUMENT
46+
OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
47+
LOSS OR DAMAGE.
48+
49+
All company, brand and product names in this document may be trademarks that
50+
are the sole property of their respective owners.
51+
52+
This notice and disclaimer must be included on all copies of this document.
53+
54+
Connectivity Standards Alliance
55+
508 Second Street, Suite 206
56+
Davis, CA 95616, USA
5757
-->
5858
<cluster xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="types types.xsd cluster cluster.xsd" id="0x0201" name="Thermostat Cluster" revision="8">
5959
<revisionHistory>

examples/air-purifier-app/air-purifier-common/air-purifier-app.matter

+3-14
Original file line numberDiff line numberDiff line change
@@ -1277,7 +1277,8 @@ cluster Thermostat = 513 {
12771277
kSleep = 3;
12781278
kWake = 4;
12791279
kVacation = 5;
1280-
kUserDefined = 6;
1280+
kGoingToSleep = 6;
1281+
kUserDefined = 7;
12811282
}
12821283

12831284
enum SetpointChangeSourceEnum : enum8 {
@@ -1403,11 +1404,6 @@ cluster Thermostat = 513 {
14031404
kSupportsOff = 0x8;
14041405
}
14051406

1406-
bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
1407-
kHoldDurationElapsed = 0x1;
1408-
kHoldDurationElapsedOrPresetChanged = 0x2;
1409-
}
1410-
14111407
struct ScheduleTransitionStruct {
14121408
ScheduleDayOfWeekBitmap dayOfWeek = 0;
14131409
int16u transitionTime = 1;
@@ -1513,8 +1509,7 @@ cluster Thermostat = 513 {
15131509
attribute access(write: manage) optional PresetStruct presets[] = 80;
15141510
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
15151511
readonly attribute optional boolean presetsSchedulesEditable = 82;
1516-
readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
1517-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
1512+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
15181513
readonly attribute command_id generatedCommandList[] = 65528;
15191514
readonly attribute command_id acceptedCommandList[] = 65529;
15201515
readonly attribute event_id eventList[] = 65530;
@@ -1558,10 +1553,6 @@ cluster Thermostat = 513 {
15581553
int16u timeoutSeconds = 0;
15591554
}
15601555

1561-
request struct SetTemperatureSetpointHoldPolicyRequest {
1562-
TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
1563-
}
1564-
15651556
/** Command description for SetpointRaiseLower */
15661557
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
15671558
/** Command description for SetWeeklySchedule */
@@ -1580,8 +1571,6 @@ cluster Thermostat = 513 {
15801571
command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
15811572
/** This command is used to notify the server that all edits are done and should be committed. */
15821573
command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
1583-
/** This command sets the set point hold policy. */
1584-
command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
15851574
}
15861575

15871576
/** An interface for controlling a fan in a heating/cooling system. */

examples/all-clusters-app/all-clusters-common/all-clusters-app.matter

+4-16
Original file line numberDiff line numberDiff line change
@@ -5006,7 +5006,8 @@ cluster Thermostat = 513 {
50065006
kSleep = 3;
50075007
kWake = 4;
50085008
kVacation = 5;
5009-
kUserDefined = 6;
5009+
kGoingToSleep = 6;
5010+
kUserDefined = 7;
50105011
}
50115012

50125013
enum SetpointChangeSourceEnum : enum8 {
@@ -5132,11 +5133,6 @@ cluster Thermostat = 513 {
51325133
kSupportsOff = 0x8;
51335134
}
51345135

5135-
bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
5136-
kHoldDurationElapsed = 0x1;
5137-
kHoldDurationElapsedOrPresetChanged = 0x2;
5138-
}
5139-
51405136
struct ScheduleTransitionStruct {
51415137
ScheduleDayOfWeekBitmap dayOfWeek = 0;
51425138
int16u transitionTime = 1;
@@ -5242,8 +5238,7 @@ cluster Thermostat = 513 {
52425238
attribute access(write: manage) optional PresetStruct presets[] = 80;
52435239
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
52445240
readonly attribute optional boolean presetsSchedulesEditable = 82;
5245-
readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
5246-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
5241+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
52475242
readonly attribute command_id generatedCommandList[] = 65528;
52485243
readonly attribute command_id acceptedCommandList[] = 65529;
52495244
readonly attribute event_id eventList[] = 65530;
@@ -5287,10 +5282,6 @@ cluster Thermostat = 513 {
52875282
int16u timeoutSeconds = 0;
52885283
}
52895284

5290-
request struct SetTemperatureSetpointHoldPolicyRequest {
5291-
TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
5292-
}
5293-
52945285
/** Command description for SetpointRaiseLower */
52955286
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
52965287
/** Command description for SetWeeklySchedule */
@@ -5309,8 +5300,6 @@ cluster Thermostat = 513 {
53095300
command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
53105301
/** This command is used to notify the server that all edits are done and should be committed. */
53115302
command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
5312-
/** This command sets the set point hold policy. */
5313-
command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
53145303
}
53155304

53165305
/** An interface for controlling a fan in a heating/cooling system. */
@@ -8598,8 +8587,7 @@ endpoint 1 {
85988587
callback attribute presets;
85998588
callback attribute schedules;
86008589
ram attribute presetsSchedulesEditable;
8601-
ram attribute temperatureSetpointHoldPolicy default = 0;
8602-
ram attribute setpointHoldExpiryTimestamp;
8590+
ram attribute setpointHoldExpiryTimestamp default = 0;
86038591
callback attribute generatedCommandList;
86048592
callback attribute acceptedCommandList;
86058593
callback attribute eventList;

examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter

+3-14
Original file line numberDiff line numberDiff line change
@@ -3551,7 +3551,8 @@ cluster Thermostat = 513 {
35513551
kSleep = 3;
35523552
kWake = 4;
35533553
kVacation = 5;
3554-
kUserDefined = 6;
3554+
kGoingToSleep = 6;
3555+
kUserDefined = 7;
35553556
}
35563557

35573558
enum SetpointChangeSourceEnum : enum8 {
@@ -3677,11 +3678,6 @@ cluster Thermostat = 513 {
36773678
kSupportsOff = 0x8;
36783679
}
36793680

3680-
bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
3681-
kHoldDurationElapsed = 0x1;
3682-
kHoldDurationElapsedOrPresetChanged = 0x2;
3683-
}
3684-
36853681
struct ScheduleTransitionStruct {
36863682
ScheduleDayOfWeekBitmap dayOfWeek = 0;
36873683
int16u transitionTime = 1;
@@ -3787,8 +3783,7 @@ cluster Thermostat = 513 {
37873783
attribute access(write: manage) optional PresetStruct presets[] = 80;
37883784
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
37893785
readonly attribute optional boolean presetsSchedulesEditable = 82;
3790-
readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
3791-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
3786+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
37923787
readonly attribute command_id generatedCommandList[] = 65528;
37933788
readonly attribute command_id acceptedCommandList[] = 65529;
37943789
readonly attribute event_id eventList[] = 65530;
@@ -3832,10 +3827,6 @@ cluster Thermostat = 513 {
38323827
int16u timeoutSeconds = 0;
38333828
}
38343829

3835-
request struct SetTemperatureSetpointHoldPolicyRequest {
3836-
TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
3837-
}
3838-
38393830
/** Command description for SetpointRaiseLower */
38403831
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
38413832
/** Command description for SetWeeklySchedule */
@@ -3854,8 +3845,6 @@ cluster Thermostat = 513 {
38543845
command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
38553846
/** This command is used to notify the server that all edits are done and should be committed. */
38563847
command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
3857-
/** This command sets the set point hold policy. */
3858-
command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
38593848
}
38603849

38613850
/** An interface for controlling a fan in a heating/cooling system. */

examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter

+3-14
Original file line numberDiff line numberDiff line change
@@ -1200,7 +1200,8 @@ cluster Thermostat = 513 {
12001200
kSleep = 3;
12011201
kWake = 4;
12021202
kVacation = 5;
1203-
kUserDefined = 6;
1203+
kGoingToSleep = 6;
1204+
kUserDefined = 7;
12041205
}
12051206

12061207
enum SetpointChangeSourceEnum : enum8 {
@@ -1326,11 +1327,6 @@ cluster Thermostat = 513 {
13261327
kSupportsOff = 0x8;
13271328
}
13281329

1329-
bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
1330-
kHoldDurationElapsed = 0x1;
1331-
kHoldDurationElapsedOrPresetChanged = 0x2;
1332-
}
1333-
13341330
struct ScheduleTransitionStruct {
13351331
ScheduleDayOfWeekBitmap dayOfWeek = 0;
13361332
int16u transitionTime = 1;
@@ -1436,8 +1432,7 @@ cluster Thermostat = 513 {
14361432
attribute access(write: manage) optional PresetStruct presets[] = 80;
14371433
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
14381434
readonly attribute optional boolean presetsSchedulesEditable = 82;
1439-
readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
1440-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
1435+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
14411436
readonly attribute command_id generatedCommandList[] = 65528;
14421437
readonly attribute command_id acceptedCommandList[] = 65529;
14431438
readonly attribute event_id eventList[] = 65530;
@@ -1481,10 +1476,6 @@ cluster Thermostat = 513 {
14811476
int16u timeoutSeconds = 0;
14821477
}
14831478

1484-
request struct SetTemperatureSetpointHoldPolicyRequest {
1485-
TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
1486-
}
1487-
14881479
/** Command description for SetpointRaiseLower */
14891480
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
14901481
/** Command description for SetWeeklySchedule */
@@ -1503,8 +1494,6 @@ cluster Thermostat = 513 {
15031494
command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
15041495
/** This command is used to notify the server that all edits are done and should be committed. */
15051496
command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
1506-
/** This command sets the set point hold policy. */
1507-
command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
15081497
}
15091498

15101499
/** An interface for controlling a fan in a heating/cooling system. */

examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter

+3-14
Original file line numberDiff line numberDiff line change
@@ -1557,7 +1557,8 @@ cluster Thermostat = 513 {
15571557
kSleep = 3;
15581558
kWake = 4;
15591559
kVacation = 5;
1560-
kUserDefined = 6;
1560+
kGoingToSleep = 6;
1561+
kUserDefined = 7;
15611562
}
15621563

15631564
enum SetpointChangeSourceEnum : enum8 {
@@ -1683,11 +1684,6 @@ cluster Thermostat = 513 {
16831684
kSupportsOff = 0x8;
16841685
}
16851686

1686-
bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
1687-
kHoldDurationElapsed = 0x1;
1688-
kHoldDurationElapsedOrPresetChanged = 0x2;
1689-
}
1690-
16911687
struct ScheduleTransitionStruct {
16921688
ScheduleDayOfWeekBitmap dayOfWeek = 0;
16931689
int16u transitionTime = 1;
@@ -1793,8 +1789,7 @@ cluster Thermostat = 513 {
17931789
attribute access(write: manage) optional PresetStruct presets[] = 80;
17941790
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
17951791
readonly attribute optional boolean presetsSchedulesEditable = 82;
1796-
readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
1797-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
1792+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
17981793
readonly attribute command_id generatedCommandList[] = 65528;
17991794
readonly attribute command_id acceptedCommandList[] = 65529;
18001795
readonly attribute event_id eventList[] = 65530;
@@ -1838,10 +1833,6 @@ cluster Thermostat = 513 {
18381833
int16u timeoutSeconds = 0;
18391834
}
18401835

1841-
request struct SetTemperatureSetpointHoldPolicyRequest {
1842-
TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
1843-
}
1844-
18451836
/** Command description for SetpointRaiseLower */
18461837
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
18471838
/** Command description for SetWeeklySchedule */
@@ -1860,8 +1851,6 @@ cluster Thermostat = 513 {
18601851
command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
18611852
/** This command is used to notify the server that all edits are done and should be committed. */
18621853
command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
1863-
/** This command sets the set point hold policy. */
1864-
command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
18651854
}
18661855

18671856
/** An interface for controlling a fan in a heating/cooling system. */

0 commit comments

Comments
 (0)