@@ -1536,6 +1536,16 @@ cluster Thermostat = 513 {
1536
1536
kCoolingAndHeatingWithReheat = 5;
1537
1537
}
1538
1538
1539
+ enum PresetScenarioEnum : enum8 {
1540
+ kUnspecified = 0;
1541
+ kOccupied = 1;
1542
+ kUnoccupied = 2;
1543
+ kSleep = 3;
1544
+ kWake = 4;
1545
+ kVacation = 5;
1546
+ kUserDefined = 6;
1547
+ }
1548
+
1539
1549
enum SetpointChangeSourceEnum : enum8 {
1540
1550
kManual = 0;
1541
1551
kSchedule = 1;
@@ -1597,6 +1607,10 @@ cluster Thermostat = 513 {
1597
1607
kSetback = 0x10;
1598
1608
kAutoMode = 0x20;
1599
1609
kLocalTemperatureNotExposed = 0x40;
1610
+ kMatterScheduleConfiguration = 0x80;
1611
+ kPresets = 0x100;
1612
+ kSetpoints = 0x200;
1613
+ kQueuedPresetsSupported = 0x400;
1600
1614
}
1601
1615
1602
1616
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1606,6 +1620,11 @@ cluster Thermostat = 513 {
1606
1620
kHeatingUsesFuel = 0x20;
1607
1621
}
1608
1622
1623
+ bitmap PresetTypeFeaturesBitmap : bitmap16 {
1624
+ kAutomatic = 0x1;
1625
+ kSupportsNames = 0x2;
1626
+ }
1627
+
1609
1628
bitmap ProgrammingOperationModeBitmap : bitmap8 {
1610
1629
kScheduleActive = 0x1;
1611
1630
kAutoRecovery = 0x2;
@@ -1644,6 +1663,62 @@ cluster Thermostat = 513 {
1644
1663
kCoolSetpointPresent = 0x2;
1645
1664
}
1646
1665
1666
+ bitmap ScheduleTypeFeaturesBitmap : bitmap16 {
1667
+ kSupportsPresets = 0x1;
1668
+ kSupportsSetpoints = 0x2;
1669
+ kSupportsNames = 0x4;
1670
+ kSupportsOff = 0x8;
1671
+ }
1672
+
1673
+ bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
1674
+ kHoldDurationElapsed = 0x1;
1675
+ kHoldDurationElapsedOrPresetChanged = 0x2;
1676
+ }
1677
+
1678
+ struct ScheduleTransitionStruct {
1679
+ ScheduleDayOfWeekBitmap dayOfWeek = 0;
1680
+ int16u transitionTime = 1;
1681
+ optional octet_string<16> presetHandle = 2;
1682
+ optional SystemModeEnum systemMode = 3;
1683
+ optional temperature coolingSetpoint = 4;
1684
+ optional temperature heatingSetpoint = 5;
1685
+ }
1686
+
1687
+ struct ScheduleStruct {
1688
+ nullable octet_string<16> scheduleHandle = 0;
1689
+ SystemModeEnum systemMode = 1;
1690
+ optional char_string<64> name = 2;
1691
+ optional octet_string<16> presetHandle = 3;
1692
+ ScheduleTransitionStruct transitions[] = 4;
1693
+ optional nullable boolean builtIn = 5;
1694
+ }
1695
+
1696
+ struct PresetStruct {
1697
+ nullable octet_string<16> presetHandle = 0;
1698
+ PresetScenarioEnum presetScenario = 1;
1699
+ optional nullable char_string<64> name = 2;
1700
+ optional temperature coolingSetpoint = 3;
1701
+ optional temperature heatingSetpoint = 4;
1702
+ nullable boolean builtIn = 5;
1703
+ }
1704
+
1705
+ struct PresetTypeStruct {
1706
+ PresetScenarioEnum presetScenario = 0;
1707
+ int8u numberOfPresets = 1;
1708
+ PresetTypeFeaturesBitmap presetTypeFeatures = 2;
1709
+ }
1710
+
1711
+ struct QueuedPresetStruct {
1712
+ nullable octet_string<16> presetHandle = 0;
1713
+ nullable epoch_s transitionTimestamp = 1;
1714
+ }
1715
+
1716
+ struct ScheduleTypeStruct {
1717
+ SystemModeEnum systemMode = 0;
1718
+ int8u numberOfSchedules = 1;
1719
+ ScheduleTypeFeaturesBitmap scheduleTypeFeatures = 2;
1720
+ }
1721
+
1647
1722
struct WeeklyScheduleTransitionStruct {
1648
1723
int16u transitionTime = 0;
1649
1724
nullable temperature heatSetpoint = 1;
@@ -1699,6 +1774,20 @@ cluster Thermostat = 513 {
1699
1774
attribute access(write: manage) optional ACLouverPositionEnum ACLouverPosition = 69;
1700
1775
readonly attribute optional nullable temperature ACCoilTemperature = 70;
1701
1776
attribute access(write: manage) optional ACCapacityFormatEnum ACCapacityformat = 71;
1777
+ readonly attribute optional PresetTypeStruct presetTypes[] = 72;
1778
+ readonly attribute optional ScheduleTypeStruct scheduleTypes[] = 73;
1779
+ readonly attribute optional int8u numberOfPresets = 74;
1780
+ readonly attribute optional int8u numberOfSchedules = 75;
1781
+ readonly attribute optional int8u numberOfScheduleTransitions = 76;
1782
+ readonly attribute optional nullable int8u numberOfScheduleTransitionPerDay = 77;
1783
+ readonly attribute optional nullable octet_string<16> activePresetHandle = 78;
1784
+ readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
1785
+ attribute access(write: manage) optional PresetStruct presets[] = 80;
1786
+ attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
1787
+ readonly attribute optional boolean presetsSchedulesEditable = 82;
1788
+ readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
1789
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
1790
+ readonly attribute optional nullable QueuedPresetStruct queuedPreset = 85;
1702
1791
readonly attribute command_id generatedCommandList[] = 65528;
1703
1792
readonly attribute command_id acceptedCommandList[] = 65529;
1704
1793
readonly attribute event_id eventList[] = 65530;
@@ -1730,14 +1819,45 @@ cluster Thermostat = 513 {
1730
1819
ScheduleModeBitmap modeToReturn = 1;
1731
1820
}
1732
1821
1822
+ request struct SetActiveScheduleRequestRequest {
1823
+ octet_string<16> scheduleHandle = 0;
1824
+ }
1825
+
1826
+ request struct SetActivePresetRequestRequest {
1827
+ octet_string<16> presetHandle = 0;
1828
+ optional int16u delayMinutes = 1;
1829
+ }
1830
+
1831
+ request struct StartPresetsSchedulesEditRequestRequest {
1832
+ int16u timeoutSeconds = 0;
1833
+ }
1834
+
1835
+ request struct SetTemperatureSetpointHoldPolicyRequest {
1836
+ TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
1837
+ }
1838
+
1733
1839
/** Command description for SetpointRaiseLower */
1734
1840
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
1735
1841
/** Command description for SetWeeklySchedule */
1736
1842
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
1737
1843
/** Command description for GetWeeklySchedule */
1738
1844
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
1739
- /** The Clear Weekly Schedule command is used to clear the weekly schedule. */
1845
+ /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload . */
1740
1846
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
1847
+ /** This command is used to set the active schedule. */
1848
+ command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
1849
+ /** This command is used to set the active preset. */
1850
+ command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
1851
+ /** This command is used to start editing the presets and schedules. */
1852
+ command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
1853
+ /** This command is used to cancel editing presets and schedules. */
1854
+ command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
1855
+ /** This command is used to notify the server that all edits are done and should be committed. */
1856
+ command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
1857
+ /** This command is sent to cancel a queued preset. */
1858
+ command access(invoke: manage) CancelSetActivePresetRequest(): DefaultSuccess = 10;
1859
+ /** This command sets the set point hold policy. */
1860
+ command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
1741
1861
}
1742
1862
1743
1863
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
0 commit comments