@@ -99,6 +99,12 @@ enum AreaTypeTag : enum8 {
99
99
kWorkshop = 94;
100
100
}
101
101
102
+ enum AtomicRequestTypeEnum : enum8 {
103
+ kBeginWrite = 0;
104
+ kCommitWrite = 1;
105
+ kRollbackWrite = 2;
106
+ }
107
+
102
108
enum FloorSurfaceTag : enum8 {
103
109
kCarpet = 0;
104
110
kCeramic = 1;
@@ -188,13 +194,16 @@ enum PositionTag : enum8 {
188
194
kMiddle = 4;
189
195
kRow = 5;
190
196
kColumn = 6;
191
- kUnder = 7;
192
- kNextTo = 8;
193
- kAround = 9;
194
- kOn = 10;
195
- kAbove = 11;
196
- kFrontOf = 12;
197
- kBehind = 13;
197
+ }
198
+
199
+ enum RelativePositionTag : enum8 {
200
+ kUnder = 0;
201
+ kNextTo = 1;
202
+ kAround = 2;
203
+ kOn = 3;
204
+ kAbove = 4;
205
+ kFrontOf = 5;
206
+ kBehind = 6;
198
207
}
199
208
200
209
enum TestGlobalEnum : enum8 {
@@ -220,6 +229,11 @@ struct LocationDescriptorStruct {
220
229
nullable AreaTypeTag areaType = 2;
221
230
}
222
231
232
+ struct AtomicAttributeStatusStruct {
233
+ attrib_id attributeID = 0;
234
+ status statusCode = 1;
235
+ }
236
+
223
237
/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
224
238
cluster Identify = 3 {
225
239
revision 4;
@@ -1520,7 +1534,7 @@ cluster ActivatedCarbonFilterMonitoring = 114 {
1520
1534
1521
1535
/** An interface for configuring and controlling the functionality of a thermostat. */
1522
1536
cluster Thermostat = 513 {
1523
- revision 6 ;
1537
+ revision 7 ;
1524
1538
1525
1539
enum ACCapacityFormatEnum : enum8 {
1526
1540
kBTUh = 0;
@@ -1566,7 +1580,6 @@ cluster Thermostat = 513 {
1566
1580
}
1567
1581
1568
1582
enum PresetScenarioEnum : enum8 {
1569
- kUnspecified = 0;
1570
1583
kOccupied = 1;
1571
1584
kUnoccupied = 2;
1572
1585
kSleep = 3;
@@ -1639,7 +1652,6 @@ cluster Thermostat = 513 {
1639
1652
kLocalTemperatureNotExposed = 0x40;
1640
1653
kMatterScheduleConfiguration = 0x80;
1641
1654
kPresets = 0x100;
1642
- kSetpoints = 0x200;
1643
1655
}
1644
1656
1645
1657
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1649,6 +1661,10 @@ cluster Thermostat = 513 {
1649
1661
kHeatingUsesFuel = 0x20;
1650
1662
}
1651
1663
1664
+ bitmap OccupancyBitmap : bitmap8 {
1665
+ kOccupied = 0x1;
1666
+ }
1667
+
1652
1668
bitmap PresetTypeFeaturesBitmap : bitmap16 {
1653
1669
kAutomatic = 0x1;
1654
1670
kSupportsNames = 0x2;
@@ -1714,7 +1730,7 @@ cluster Thermostat = 513 {
1714
1730
optional char_string<64> name = 2;
1715
1731
optional octet_string<16> presetHandle = 3;
1716
1732
ScheduleTransitionStruct transitions[] = 4;
1717
- optional nullable boolean builtIn = 5;
1733
+ nullable boolean builtIn = 5;
1718
1734
}
1719
1735
1720
1736
struct PresetStruct {
@@ -1746,23 +1762,23 @@ cluster Thermostat = 513 {
1746
1762
1747
1763
readonly attribute nullable temperature localTemperature = 0;
1748
1764
readonly attribute optional nullable temperature outdoorTemperature = 1;
1749
- readonly attribute optional bitmap8 occupancy = 2;
1765
+ readonly attribute optional OccupancyBitmap occupancy = 2;
1750
1766
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
1751
1767
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
1752
1768
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
1753
1769
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
1754
1770
readonly attribute optional int8u PICoolingDemand = 7;
1755
1771
readonly attribute optional int8u PIHeatingDemand = 8;
1756
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
1772
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
1757
1773
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
1758
- attribute optional int16s occupiedCoolingSetpoint = 17;
1759
- attribute optional int16s occupiedHeatingSetpoint = 18;
1760
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
1761
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
1762
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
1763
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
1764
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
1765
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
1774
+ attribute optional temperature occupiedCoolingSetpoint = 17;
1775
+ attribute optional temperature occupiedHeatingSetpoint = 18;
1776
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
1777
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
1778
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
1779
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
1780
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
1781
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
1766
1782
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
1767
1783
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
1768
1784
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1803,8 +1819,7 @@ cluster Thermostat = 513 {
1803
1819
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
1804
1820
attribute access(write: manage) optional PresetStruct presets[] = 80;
1805
1821
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
1806
- readonly attribute optional boolean presetsSchedulesEditable = 82;
1807
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
1822
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
1808
1823
readonly attribute command_id generatedCommandList[] = 65528;
1809
1824
readonly attribute command_id acceptedCommandList[] = 65529;
1810
1825
readonly attribute event_id eventList[] = 65530;
@@ -1844,28 +1859,32 @@ cluster Thermostat = 513 {
1844
1859
octet_string<16> presetHandle = 0;
1845
1860
}
1846
1861
1847
- request struct StartPresetsSchedulesEditRequestRequest {
1848
- int16u timeoutSeconds = 0;
1862
+ response struct AtomicResponse = 253 {
1863
+ status statusCode = 0;
1864
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
1865
+ optional int16u timeout = 2;
1866
+ }
1867
+
1868
+ request struct AtomicRequestRequest {
1869
+ AtomicRequestTypeEnum requestType = 0;
1870
+ attrib_id attributeRequests[] = 1;
1871
+ optional int16u timeout = 2;
1849
1872
}
1850
1873
1851
- /** Command description for SetpointRaiseLower */
1874
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
1852
1875
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
1853
- /** Command description for SetWeeklySchedule */
1876
+ /** This command is used to update the thermostat weekly setpoint schedule from a management system. */
1854
1877
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
1855
- /** Command description for GetWeeklySchedule */
1878
+ /** The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command. */
1856
1879
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
1857
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
1880
+ /** This command is used to clear the weekly schedule. */
1858
1881
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
1859
- /** This command is used to set the active schedule . */
1882
+ /** Upon receipt, if the Schedules attribute contains a ScheduleStruct whose ScheduleHandle field matches the value of the ScheduleHandle field, the server SHALL set the thermostat's ActiveScheduleHandle attribute to the value of the ScheduleHandle field . */
1860
1883
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
1861
- /** This command is used to set the active preset. */
1884
+ /** ID */
1862
1885
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
1863
- /** This command is used to start editing the presets and schedules. */
1864
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
1865
- /** This command is used to cancel editing presets and schedules. */
1866
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
1867
- /** This command is used to notify the server that all edits are done and should be committed. */
1868
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
1886
+ /** Begins, Commits or Cancels an atomic write */
1887
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
1869
1888
}
1870
1889
1871
1890
/** An interface for controlling a fan in a heating/cooling system. */
0 commit comments