The Thermostat cluster (0x0201) is a Matter cluster that Controls heating and cooling systems with setpoints, modes, and schedules for climate control.. It defines 12 commands and 64 attributes and is mandatory for 5 device types.
Thermostat 0x0201
Controls heating and cooling systems with setpoints, modes, and schedules for climate control.
Spec History
This cluster's ClusterRevision across the Matter releases it has shipped in. Click a version to inspect the cluster as it existed in that release.
Attributes 64
Commands 12
Features 11
| Code | Name | Type | Flags |
|---|---|---|---|
| 0x0000 |
LocalTemperature
min -27315 · nullable
|
temperature | |
| 0x0001 |
OutdoorTemperature
min -27315 · nullable
|
temperature | Optional |
| 0x0002 |
Occupancy
max 0x01
|
OccupancyBitmap | Optional |
| 0x0003 |
AbsMinHeatSetpointLimit
default 700
|
temperature | Optional |
| 0x0004 |
AbsMaxHeatSetpointLimit
default 3000
|
temperature | Optional |
| 0x0005 |
AbsMinCoolSetpointLimit
default 1600
|
temperature | Optional |
| 0x0006 |
AbsMaxCoolSetpointLimit
default 3200
|
temperature | Optional |
| 0x0007 |
PICoolingDemand
max 100
|
int8u | Optional |
| 0x0008 |
PIHeatingDemand
max 100
|
int8u | Optional |
| 0x0009 |
HVACSystemTypeConfiguration
max 0x3F · default 0x00
|
HVACSystemTypeBitmap | Writable Optional write: manage |
| 0x0010 |
LocalTemperatureCalibration
min -127 · default 0x00
|
int8s | Writable Optional write: manage |
| 0x0011 |
OccupiedCoolingSetpoint
min -27315 · default 2600
|
temperature | Writable Optional |
| 0x0012 |
OccupiedHeatingSetpoint
min -27315 · default 2000
|
temperature | Writable Optional |
| 0x0013 |
UnoccupiedCoolingSetpoint
min -27315 · default 2600
|
temperature | Writable Optional |
| 0x0014 |
UnoccupiedHeatingSetpoint
min -27315 · default 2000
|
temperature | Writable Optional |
| 0x0015 |
MinHeatSetpointLimit
min -27315 · default 700
|
temperature | Writable Optional write: manage |
| 0x0016 |
MaxHeatSetpointLimit
min -27315 · default 3000
|
temperature | Writable Optional write: manage |
| 0x0017 |
MinCoolSetpointLimit
min -27315 · default 1600
|
temperature | Writable Optional write: manage |
| 0x0018 |
MaxCoolSetpointLimit
min -27315 · default 3200
|
temperature | Writable Optional write: manage |
| 0x0019 |
MinSetpointDeadBand
min 0 · default 20
|
int8s | Writable Optional write: manage |
| 0x001A |
RemoteSensing
max 0x7 · default 0
|
RemoteSensingBitmap | Writable Optional write: manage |
| 0x001B |
ControlSequenceOfOperation
max 0x5
|
ControlSequenceOfOperationEnum | Writable write: manage |
| 0x001C |
SystemMode
max 0x9
|
SystemModeEnum | Writable write: manage |
| 0x001E |
ThermostatRunningMode
max 0x4 · default 0
|
ThermostatRunningModeEnum | Optional |
| 0x0020 |
StartOfWeek
max 0x6
|
StartOfWeekEnum | Optional |
| 0x0021 |
NumberOfWeeklyTransitions
default 0
|
int8u | Optional |
| 0x0022 |
NumberOfDailyTransitions
default 0
|
int8u | Optional |
| 0x0023 |
TemperatureSetpointHold
max 0x1 · default 0
|
TemperatureSetpointHoldEnum | Writable Optional write: manage |
| 0x0024 |
TemperatureSetpointHoldDuration
max 1440 · nullable
|
int16u | Writable Optional write: manage |
| 0x0025 |
ThermostatProgrammingOperationMode
max 0x7 · default 0
|
ProgrammingOperationModeBitmap | Writable Optional write: manage |
| 0x0029 |
ThermostatRunningState
max 0x7F
|
RelayStateBitmap | Optional |
| 0x0030 |
SetpointChangeSource
max 0x2 · default 0
|
SetpointChangeSourceEnum | Optional |
| 0x0031 |
SetpointChangeAmount
nullable
|
int16s | Optional |
| 0x0032 | SetpointChangeSourceTimestamp | epoch_s | Optional |
| 0x0034 |
OccupiedSetback
nullable
|
int8u | Writable Optional write: manage |
| 0x0035 |
OccupiedSetbackMin
nullable
|
int8u | Optional |
| 0x0036 |
OccupiedSetbackMax
nullable
|
int8u | Optional |
| 0x0037 |
UnoccupiedSetback
nullable
|
int8u | Writable Optional write: manage |
| 0x0038 |
UnoccupiedSetbackMin
nullable
|
int8u | Optional |
| 0x0039 |
UnoccupiedSetbackMax
nullable
|
int8u | Optional |
| 0x003A |
EmergencyHeatDelta
default 0xFF
|
int8u | Writable Optional write: manage |
| 0x0040 |
ACType
max 0x4 · default 0
|
ACTypeEnum | Writable Optional write: manage |
| 0x0041 |
ACCapacity
default 0
|
int16u | Writable Optional write: manage |
| 0x0042 |
ACRefrigerantType
max 0x3 · default 0
|
ACRefrigerantTypeEnum | Writable Optional write: manage |
| 0x0043 |
ACCompressorType
max 0x3 · default 0
|
ACCompressorTypeEnum | Writable Optional write: manage |
| 0x0044 |
ACErrorCode
default 0
|
ACErrorCodeBitmap | Writable Optional write: manage |
| 0x0045 |
ACLouverPosition
max 0x5 · default 0
|
ACLouverPositionEnum | Writable Optional write: manage |
| 0x0046 |
ACCoilTemperature
min -27315 · nullable
|
temperature | Optional |
| 0x0047 |
ACCapacityformat
max 0x00 · default 0
|
ACCapacityFormatEnum | Writable Optional write: manage |
| 0x0048 | PresetTypes | array | Optional |
| 0x0049 | ScheduleTypes | array | Optional |
| 0x004A |
NumberOfPresets
min 1
|
int8u | Optional |
| 0x004B |
NumberOfSchedules
min 1
|
int8u | Optional |
| 0x004C |
NumberOfScheduleTransitions
min 1
|
int8u | Optional |
| 0x004D |
NumberOfScheduleTransitionPerDay
1..254 · nullable
|
int8u | Optional |
| 0x004E |
ActivePresetHandle
nullable
|
octet_string | Optional |
| 0x004F |
ActiveScheduleHandle
nullable
|
octet_string | Optional |
| 0x0050 | Presets | array | Writable Optional write: manage |
| 0x0051 | Schedules | array | Writable Optional write: manage |
| 0x0052 |
SetpointHoldExpiryTimestamp
nullable
|
epoch_s | Optional |
| 0x0053 |
MaxThermostatSuggestions
min 5
|
int8u | Optional Provisional |
| 0x0054 | ThermostatSuggestions | array | Optional Provisional |
| 0x0055 |
CurrentThermostatSuggestion
nullable
|
ThermostatSuggestionStruct | Optional Provisional |
| 0x0056 |
ThermostatSuggestionNotFollowingReason
max 0x00FF · nullable
|
ThermostatSuggestionNotFollowingReasonBitmap | Optional Provisional |
| Code | Name | Direction | Parameters |
|---|---|---|---|
| 0x00 |
SetpointRaiseLower
This command will raise or lower the setpoint based on the provided values.
|
client→server |
Mode: SetpointRaiseLowerModeEnum, Amount: int8s |
| 0x00 |
GetWeeklyScheduleResponse
Optional This command has the same payload format as the Set Weekly Schedule.
|
server→client |
NumberOfTransitionsForSequence: int8u, DayOfWeekForSequence: ScheduleDayOfWeekBitmap, ModeForSequence: ScheduleModeBitmap, Transitions: WeeklyScheduleTransitionStruct |
| 0x01 |
SetWeeklySchedule
Optional invoke: manage
This command is used to update the thermostat weekly setpoint schedule from a management system.
|
client→server |
NumberOfTransitionsForSequence: int8u, DayOfWeekForSequence: ScheduleDayOfWeekBitmap, ModeForSequence: ScheduleModeBitmap, Transitions: WeeklyScheduleTransitionStruct |
| 0x02 |
GetWeeklySchedule
Optional The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command.
|
client→server |
DaysToReturn: ScheduleDayOfWeekBitmap, ModeToReturn: ScheduleModeBitmap |
| 0x02 |
AddThermostatSuggestionResponse
Optional Provisional
This command is sent in response to the AddThermostatSuggestion command.
|
server→client |
UniqueID: int8u |
| 0x03 |
ClearWeeklySchedule
Optional invoke: manage
This command is used to clear the weekly schedule.
|
client→server | None |
| 0x05 |
SetActiveScheduleRequest
Optional This command will set the active schedule to the provided schedule handle.
|
client→server |
ScheduleHandle: octet_string |
| 0x06 |
SetActivePresetRequest
Optional This command will set the active preset to the provided preset handle.
|
client→server |
PresetHandle: octet_string |
| 0x07 |
AddThermostatSuggestion
Optional Provisional
invoke: manage
This command will add a new suggestion based on the specified values.
|
client→server |
PresetHandle: octet_string, EffectiveTime: epoch_s, ExpirationInMinutes: int16u |
| 0x08 |
RemoveThermostatSuggestion
Optional Provisional
invoke: manage
This command will remove the specified suggestion.
|
client→server |
UniqueID: int8u |
| 0xFD |
AtomicResponse
Optional Returns the status of an atomic write
|
server→client |
StatusCode: status, AttributeStatus: AtomicAttributeStatusStruct, Timeout: int16u |
| 0xFE |
AtomicRequest
Optional invoke: manage
Begins, Commits or Cancels an atomic write
|
client→server |
RequestType: AtomicRequestTypeEnum, AttributeRequests: attrib_id, Timeout: int16u |
Heating
(HEAT)
bit 0
Thermostat is capable of managing a heating device
Cooling
(COOL)
bit 1
Thermostat is capable of managing a cooling device
Occupancy
(OCC)
bit 2
Supports Occupied and Unoccupied setpoints
ScheduleConfiguration
(SCH)
bit 3
Supports remote configuration of a weekly schedule of setpoint transitions
Setback
(SB)
bit 4
AutoMode
(AUTO)
bit 5
Supports a System Mode of Auto
LocalTemperatureNotExposed
(LTNE)
bit 6
Thermostat does not expose the LocalTemperature Value in the LocalTemperature attribute
MatterScheduleConfiguration
(MSCH)
bit 7
Supports enhanced schedules
Presets
(PRES)
bit 8
Thermostat supports setpoint presets
Events
(TEVT)
bit 9
Provisional
Thermostat supports events
ThermostatSuggestions
(TSUGGEST)
bit 10
Provisional
Thermostat supports suggestions
Device Types Using This Cluster
Device types in the Matter spec that reference this cluster
Devices Implementing This Cluster
28 devices in the survey implement this cluster
Eve Thermo
Eve Systems
tado Smart Radiator Thermostat X
tado° GmbH
Aqara Hub
Aqara
YS1606-UC
t0bst4r
Aqara Climate Sensor W100
Aqara
Eve Thermo Control
Eve Systems
Radiator Thermostat W600
Aqara
Nest Learning Thermostat 4th gen
Google LLC
Eve Thermo
Eve Systems
Radiator Thermostat II [+M]
BOSCH
TEST_PRODUCT
t0bst4r
Aqara Floor Heating Thermostat W500
Aqara
tado Wireless Temperature Sensor X
tado° GmbH
tado Smart Thermostat X
tado° GmbH
Google Nest Thermostat
Google LLC
FocusPro S200 Smart Thermostat
Resideo
Smart Wi-Fi Thermostat
Meross
Comet Matter
Eurotronic Technology GmbH
Aqara Thermostat Hub W200
Aqara
TCL Window AC
tcl-vendor
BHT-18
BECA
Smart Wi-Fi Thermostat
Meross
Touchscreen Switch S100
Aqara
Midea_AC
Midea Group