Thermostat Cluster

Cluster ID: 0x0201  |  Endpoint: Typically on Endpoint 1 (functional endpoint)

Thermostat is the core Cluster for Matter HVAC devices, defining all capabilities including temperature reading, cooling/heating setpoint management, system mode switching, and weekly schedule programming. All thermostat device development revolves around this Cluster.

Temperature Unit Pitfall

All temperature attributes in the Thermostat Cluster use 0.01°C units. For example, LocalTemperature = 2150 means an actual temperature of 21.50°C. Always perform unit conversion when reading/writing temperature attributes, otherwise setpoints will be off by a factor of 100.

Feature Bits

Thermostat capabilities are determined by the Feature Map. Bit 0 = HEAT, Bit 1 = COOL, Bit 5 = AUTO, Bit 6 = LTNE (Local Temperature Not Exposed). Many attributes are Feature-gated — for example, only devices supporting COOL have OccupiedCoolingSetpoint. Reading an unsupported attribute returns UNSUPPORTED_ATTRIBUTE.

Commands

Thermostat commands are primarily used to adjust setpoints and manage weekly schedules. Unlike door locks, thermostat commands do not require Timed Interaction and can be sent directly. Click a command ID in the table below to jump to its detailed description.

ID Name Description Feature Required
0x00 SetpointRaiseLower Raise or lower temperature setpoint None
0x01 SetWeeklySchedule Set weekly temperature schedule SCH
0x02 GetWeeklySchedule Query configured weekly schedule SCH
0x03 ClearWeeklySchedule Clear all weekly schedules SCH
SetpointRaiseLower Special Behavior

When the value exceeds the limit range, SetpointRaiseLower silently clamps to the nearest valid value instead of returning an error. This differs from direct attribute writes — writing an out-of-range value to OccupiedHeatingSetpoint returns CONSTRAINT_ERROR. This asymmetric behavior is intentional in the Matter specification.

SetpointRaiseLower — Adjust Setpoint (0x00)

Raise or lower temperature setpoints. This is the most commonly used command for thermostat devices — called when the user taps the "Temperature +" or "Temperature -" buttons in the App. Depending on the Mode parameter, you can adjust only the heating setpoint, only the cooling setpoint, or both simultaneously.

ParameterTypeRequiredDescription
Mode enum8 Yes Adjustment target: 0 = Heat, 1 = Cool, 2 = Both
Amount int8 Yes Adjustment amount, in 0.1°C units. Positive values raise, negative values lower. For example, 10 means raise by 1.0°C
Usage Scenarios & Parameters

When the user taps "Temperature +1°C" in the App, send SetpointRaiseLower(Mode=2, Amount=10) to raise both heating and cooling setpoints by 1°C. If the current SystemMode is Heat, you can send just Mode=0. Values exceeding MinHeatSetpointLimit / MaxCoolSetpointLimit are automatically clamped without returning an error.

SetWeeklySchedule — Set Weekly Schedule (0x01)

Set temperature transition schedules for specified days of the week. Multiple days and time points can be set in a single call. Requires device support for the SCH (Schedule) Feature.

ParameterTypeDescription
NumberOfTransitionsForSequence uint8 Number of temperature transition points in this request
DayOfWeekForSequence bitmap8 Applicable days of the week (bitmap: Bit 0 = Sunday, Bit 1 = Monday ... Bit 6 = Saturday)
ModeForSequence bitmap8 Mode bitmap: Bit 0 = includes heating setpoint, Bit 1 = includes cooling setpoint
Transitions list List of transition points. Each contains TransitionTime (minutes since midnight 0:00) and corresponding setpoint temperature
Usage Scenarios & Parameters

Set a schedule for "weekday mornings at 7:00 raise to 22°C, evenings at 22:00 lower to 18°C". DayOfWeekForSequence = 0b0111110 (Monday through Friday), with two transition points. Schedule capacity can be queried via NumberOfWeeklyTransitions (0x21) and NumberOfDailyTransitions (0x22).

GetWeeklySchedule — Query Weekly Schedule (0x02)

Query configured weekly schedules. Specify the desired days and mode; the device returns the corresponding transition table.

ParameterTypeDescription
DaysToReturn bitmap8 Days to query (bitmap format same as SetWeeklySchedule)
ModeToReturn bitmap8 Mode to query (Bit 0 = Heating, Bit 1 = Cooling)

ClearWeeklySchedule — Clear Weekly Schedule (0x03)

Clear all weekly schedules on the device. No parameters; after execution, the device returns to a no-schedule state.

Attributes

Thermostat Cluster attributes are organized into five functional groups. Click an attribute ID in the summary table below to jump to its detailed description.

ID Name Type Group Description
0x00 LocalTemperature int16s / null Temperature Info Locally measured temperature
0x01 OutdoorTemperature int16s / null Temperature Info Outdoor temperature
0x02 Occupancy bitmap8 Temperature Info Occupancy status
0x03 AbsMinHeatSetpointLimit int16s Temperature Info Absolute minimum heating setpoint
0x04 AbsMaxHeatSetpointLimit int16s Temperature Info Absolute maximum heating setpoint
0x05 AbsMinCoolSetpointLimit int16s Temperature Info Absolute minimum cooling setpoint
0x06 AbsMaxCoolSetpointLimit int16s Temperature Info Absolute maximum cooling setpoint
0x07 PICoolingDemand uint8 Temperature Info Cooling demand percentage (0-100)
0x08 PIHeatingDemand uint8 Temperature Info Heating demand percentage (0-100)
0x09 HVACSystemTypeConfiguration bitmap8 Temperature Info HVAC system type configuration
0x10 LocalTemperatureCalibration int8 Setpoints Local temperature calibration offset
0x11 OccupiedCoolingSetpoint int16s Setpoint Occupied cooling setpoint temperature
0x12 OccupiedHeatingSetpoint int16s Setpoint Occupied heating setpoint temperature
0x13 UnoccupiedCoolingSetpoint int16s Setpoint Unoccupied cooling setpoint temperature
0x14 UnoccupiedHeatingSetpoint int16s Setpoint Unoccupied heating setpoint temperature
0x15 MinHeatSetpointLimit int16s Setpoint User-adjustable minimum heating setpoint
0x16 MaxHeatSetpointLimit int16s Setpoint User-adjustable maximum heating setpoint
0x17 MinCoolSetpointLimit int16s Setpoint User-adjustable minimum cooling setpoint
0x18 MaxCoolSetpointLimit int16s Setpoint User-adjustable maximum cooling setpoint
0x19 MinSetpointDeadBand int8 Setpoint Minimum gap between heating and cooling setpoints
0x1A RemoteSensing bitmap8 Mode & Status Remote sensor usage flags
0x1B ControlSequenceOfOperation enum8 Mode & Status Control sequence of operation
0x1C SystemMode enum8 Mode & Status System operating mode
0x1E ThermostatRunningMode enum8 Mode & Status Actual running mode
0x20 StartOfWeek enum8 Mode & Status Start of week
0x21 NumberOfWeeklyTransitions uint8 Mode & Status Maximum weekly transition points
0x22 NumberOfDailyTransitions uint8 Mode & Status Maximum daily transition points
0x23 TemperatureSetpointHold enum8 Mode & Status Setpoint hold toggle
0x24 TemperatureSetpointHoldDuration uint16 / null Mode & Status Setpoint hold duration (minutes)
0x25 ThermostatProgrammingOperationMode bitmap8 Mode & Status Programming operation mode
0x29 ThermostatRunningState bitmap16 Mode & Status Current running state bitmap
0x30 SetpointChangeSource enum8 Change Tracking Source of the last setpoint change
0x31 SetpointChangeAmount int16s / null Change Tracking Amount of the last setpoint change
0x32 SetpointChangeSourceTimestamp epoch-s Change Tracking Timestamp of the last setpoint change
0x34 OccupiedSetback uint8 / null Change Tracking Occupied energy-saving setback temperature
0x35 OccupiedSetbackMin uint8 / null Change Tracking Occupied setback minimum
0x36 OccupiedSetbackMax uint8 / null Change Tracking Occupied setback maximum
0x37 UnoccupiedSetback uint8 / null Change Tracking Unoccupied energy-saving setback temperature
0x38 UnoccupiedSetbackMin uint8 / null Change Tracking Unoccupied setback minimum
0x39 UnoccupiedSetbackMax uint8 / null Change Tracking Unoccupied setback maximum
0x3A EmergencyHeatDelta uint8 Change Tracking Emergency heat activation delta
0x40 ACType enum8 AC Capabilities AC type
0x41 ACCapacity uint16 AC Capabilities AC cooling/heating capacity
0x42 ACRefrigerantType enum8 AC Capabilities Refrigerant type
0x43 ACCompressorType enum8 AC Capabilities Compressor type
0x44 ACErrorCode bitmap32 AC Capabilities AC error code bitmap
0x45 ACLouverPosition enum8 AC Capabilities Louver/air deflector position
0x46 ACCoilTemperature int16s / null AC Capabilities Coil temperature
0x47 ACCapacityFormat enum8 AC Capabilities Capacity unit format

Temperature Information (0x00-0x09)

Basic measurements, absolute limits, and system demand information for the thermostat device.

IDNameTypeDescription
0x00 LocalTemperature
Local Temperature
int16s / null Current temperature measured by the thermostat, in 0.01°C units. null indicates temperature unavailable
0x01 OutdoorTemperature
Outdoor Temperature
int16s / null Outdoor temperature, provided by external sensors or remote data sources
0x02 Occupancy
Occupancy Status
bitmap8 Bit 0 = 1 indicates the space is occupied, device uses Occupied setpoints; = 0 uses Unoccupied setpoints
0x03 AbsMinHeatSetpointLimit
Abs Min Heat Setpoint
int16s Hardware-defined absolute minimum heating setpoint, factory-fixed
0x04 AbsMaxHeatSetpointLimit
Abs Max Heat Setpoint
int16s Hardware-defined absolute maximum heating setpoint, factory-fixed
0x05 AbsMinCoolSetpointLimit
Abs Min Cool Setpoint
int16s Hardware-defined absolute minimum cooling setpoint
0x06 AbsMaxCoolSetpointLimit
Abs Max Cool Setpoint
int16s Hardware-defined absolute maximum cooling setpoint
0x07 PICoolingDemand
Cooling Demand
uint8 Current cooling demand percentage (0-100%), calculated by PI algorithm
0x08 PIHeatingDemand
Heating Demand
uint8 Current heating demand percentage (0-100%), calculated by PI algorithm
0x09 HVACSystemTypeConfiguration
HVAC System Type
bitmap8 System type bitmap — cooling system stages, heating system stages, heating type (gas/electric), heating fuel source
Developer Tip

LocalTemperature is a Nullable type — the value is null when the sensor is faulty or not yet ready. If the LTNE (Local Temperature Not Exposed) Feature is enabled, this attribute also returns null. The App must handle null values when displaying temperature.

Absolute Limits vs. User Limits

AbsMin/MaxHeatSetpointLimit (0x03-0x06) are hardware-defined absolute ranges, read-only and immutable. MinHeatSetpointLimit (0x15-0x18) are user-adjustable ranges that must stay within the absolute limits. Setpoint write validation chain: AbsMin ≤ UserMin ≤ Setpoint ≤ UserMax ≤ AbsMax.

Setpoints (0x10-0x19)

Temperature setpoints are the core of thermostat control — the device determines heating/cooling actions based on the difference between setpoints and current temperature.

IDNameTypeDescription
0x10 LocalTemperatureCalibration
Temperature Calibration
int8 Calibration offset for the local temperature sensor, in 0.1°C units. For example, -5 means actual temperature is 0.5°C lower than the sensor reading
0x11 OccupiedCoolingSetpoint
Occupied Cooling Setpoint
int16s Cooling target temperature when occupied. Cooling starts when LocalTemperature exceeds this value
0x12 OccupiedHeatingSetpoint
Occupied Heating Setpoint
int16s Heating target temperature when occupied. Heating starts when LocalTemperature falls below this value
0x13 UnoccupiedCoolingSetpoint
Unoccupied Cooling Setpoint
int16s Cooling target temperature when unoccupied (typically higher than occupied, for energy saving)
0x14 UnoccupiedHeatingSetpoint
Unoccupied Heating Setpoint
int16s Heating target temperature when unoccupied (typically lower than occupied, for energy saving)
0x15 MinHeatSetpointLimit
Min Heat Limit
int16s User-configurable minimum heating temperature (writable, but cannot be lower than AbsMinHeatSetpointLimit)
0x16 MaxHeatSetpointLimit
Max Heat Limit
int16s User-configurable maximum heating temperature
0x17 MinCoolSetpointLimit
Min Cool Limit
int16s User-configurable minimum cooling temperature
0x18 MaxCoolSetpointLimit
Max Cool Limit
int16s User-configurable maximum cooling temperature
0x19 MinSetpointDeadBand
Deadband
int8 Minimum temperature gap between heating and cooling setpoints, in 0.1°C units. Prevents simultaneous heating and cooling. For example, 25 means 2.5°C
Setpoint Limit Chain

When writing setpoints, the device validates the complete limit chain (Matter spec section 4.3.6):
AbsMin ≤ MinLimit ≤ Setpoint ≤ MaxLimit ≤ AbsMax
Additionally in Auto mode: HeatingSetpoint + MinSetpointDeadBand ≤ CoolingSetpoint.
Writing an out-of-range value directly returns CONSTRAINT_ERROR; via SetpointRaiseLower it silently clamps.

Mode & Status (0x1A-0x29)

Defines the thermostat system's operating modes, scheduling capabilities, and current running status.

IDNameTypeDescription
0x1A RemoteSensing
Remote Sensing Flags
bitmap8 Indicates which temperature/occupancy data comes from remote sensors. Bit 0 = Local temperature, Bit 1 = Outdoor temperature, Bit 2 = Occupancy
0x1B ControlSequenceOfOperation
Control Sequence
enum8 Supported operating combinations (cooling only / heating only / cooling and heating, etc.). See enum values below
0x1C SystemMode
System Mode
enum8 User-configured system operating mode. See enum values below
0x1E ThermostatRunningMode
Actual Running Mode
enum8 Current actual running mode. Available only with AUTO Feature, value is one of Off/Cool/Heat
0x20 StartOfWeek
Start of Week
enum8 First day of the weekly schedule. See enum values below
0x21 NumberOfWeeklyTransitions
Weekly Transitions
uint8 Maximum number of weekly temperature transition points supported by the device
0x22 NumberOfDailyTransitions
Daily Transitions
uint8 Maximum number of daily temperature transition points supported by the device
0x23 TemperatureSetpointHold
Setpoint Hold
enum8 Whether to temporarily lock the current setpoint, ignoring scheduled changes. See enum values below
0x24 TemperatureSetpointHoldDuration
Hold Duration
uint16 / null Duration of the setpoint hold, in minutes (0-1440). null or 0xFFFF indicates indefinite hold
0x25 ThermostatProgrammingOperationMode
Programming Mode
bitmap8 Programming mode bitmap. See definitions below
0x29 ThermostatRunningState
Running State Bitmap
bitmap16 Currently running subsystems (heating/cooling/fan stages). See bitmap below

SystemMode Enum Values

0
Off Off, no heating or cooling
1
Auto Auto mode, automatically switches between heating/cooling based on temperature
3
Cool Cooling only mode
4
Heat Heating only mode
5
EmergencyHeat Emergency heat (backup heat source, such as electric heating elements)
6
Precooling Precooling (pre-cool during off-peak electricity hours)
7
FanOnly Fan only, no heating or cooling
8
Dry Dehumidification mode
9
Sleep Sleep mode (low noise, gentle temperature control)
Note the Numbering Gap

The SystemMode enum has no value 2 (it jumps from 1=Auto directly to 3=Cool). Do not assume consecutive values when parsing; use explicit map lookups.

ControlSequenceOfOperation Enum Values

0
CoolingOnly Cooling only
1
CoolingWithReheat Cooling with reheat (prevents overcooling)
2
HeatingOnly Heating only
3
HeatingWithReheat Heating with reheat
4
CoolingAndHeating Cooling and heating (four-pipe system)
5
CoolingAndHeatingWithReheat Cooling and heating with reheat

ThermostatRunningMode Enum Values

Available only with the AUTO Feature, indicates the system's current actual operating direction:

0
Off Not currently running
3
Cool Currently cooling
4
Heat Currently heating

ThermostatRunningState Bitmap

Bit 0
HeatStateOn First-stage heating active
Bit 1
CoolStateOn First-stage cooling active
Bit 2
FanStateOn Fan active
Bit 3
HeatSecondStageStateOn Second-stage heating active
Bit 4
CoolSecondStageStateOn Second-stage cooling active
Bit 5
FanSecondStageStateOn Second-stage fan active
Bit 6
FanThirdStageStateOn Third-stage fan active

TemperatureSetpointHold Enum Values

0
Off Not holding, setpoint follows schedule changes
1
On Holding, setpoint locked at current value unaffected by schedule

ThermostatProgrammingOperationMode Bitmap

Bit 0
ScheduleActive 1 = Run according to schedule, 0 = Run according to manual setpoint
Bit 1
AutoRecovery 1 = Enable auto recovery (start early to reach target temperature on time)
Bit 2
Economy 1 = Economy mode (Energy Star compatible operation)

StartOfWeek Enum Values

0
Sunday Sunday
1
Monday Monday
2
Tuesday Tuesday
3
Wednesday Wednesday
4
Thursday Thursday
5
Friday Friday
6
Saturday Saturday
SystemMode vs ThermostatRunningMode vs ThermostatRunningState

Three easily confused attributes:
SystemMode (0x1C) = User-configured target mode, read/write (e.g., "Auto")
ThermostatRunningMode (0x1E) = Actual direction chosen in Auto mode (read-only, one of Off/Cool/Heat)
ThermostatRunningState (0x29) = Real-time on/off status of each subsystem (heating/cooling/fan) (read-only bitmap)

Change Tracking & Energy Saving (0x30-0x3A)

Tracks setpoint change sources and history, as well as energy-saving setback configuration.

IDNameTypeDescription
0x30 SetpointChangeSource
Change Source
enum8 Source of the most recent setpoint change. See enum values below
0x31 SetpointChangeAmount
Change Amount
int16s / null Magnitude of the most recent setpoint change, in 0.01°C units. null indicates no change record
0x32 SetpointChangeSourceTimestamp
Change Timestamp
epoch-s UTC timestamp of the most recent setpoint change
0x34 OccupiedSetback
Occupied Setback
uint8 / null Energy-saving temperature setback when occupied, in 0.1°C units. Used to moderately reduce energy consumption during occupied periods
0x35 OccupiedSetbackMin
Occupied Setback Min
uint8 / null Minimum allowed value for OccupiedSetback
0x36 OccupiedSetbackMax
Occupied Setback Max
uint8 / null Maximum allowed value for OccupiedSetback
0x37 UnoccupiedSetback
Unoccupied Setback
uint8 / null Energy-saving temperature setback when unoccupied, in 0.1°C units. Typically larger than occupied setback
0x38 UnoccupiedSetbackMin
Unoccupied Setback Min
uint8 / null Minimum allowed value for UnoccupiedSetback
0x39 UnoccupiedSetbackMax
Unoccupied Setback Max
uint8 / null Maximum allowed value for UnoccupiedSetback
0x3A EmergencyHeatDelta
Emergency Heat Delta
uint8 Temperature deviation threshold for triggering emergency heat, in 0.1°C units

SetpointChangeSource Enum Values

0
Manual Manual adjustment by user (via panel or App)
1
Schedule Automatically triggered by weekly/daily schedule
2
External Triggered by external system (such as a home automation platform)

AC Capabilities (0x40-0x47)

Hardware capabilities and operating parameters for AC units. This group of attributes is primarily used for Mini Split AC devices.

IDNameTypeDescription
0x40 ACType
AC Type
enum8 AC type and drive method. See enum values below
0x41 ACCapacity
AC Capacity
uint16 Cooling/heating capacity, unit determined by ACCapacityFormat (typically BTU/h)
0x42 ACRefrigerantType
Refrigerant Type
enum8 Type of refrigerant used. See enum values below
0x43 ACCompressorType
Compressor Type
enum8 Compressor temperature rating. See enum values below
0x44 ACErrorCode
AC Error Code
bitmap32 AC fault status bitmap — Bit 0: Compressor fault, Bit 1: Indoor temperature sensor fault, Bit 2: Outdoor temperature sensor fault, Bit 3: Coil sensor fault, Bit 4: Fan fault
0x45 ACLouverPosition
Louver Position
enum8 Louver/air deflector open/close position. See enum values below
0x46 ACCoilTemperature
Coil Temperature
int16s / null Real-time temperature of the evaporator/condenser coil, in 0.01°C units
0x47 ACCapacityFormat
Capacity Format
enum8 Unit format for ACCapacity. 0 = BTU/h

ACType Enum Values

0
Unknown Unknown type
1
CoolingFixedSpeed Fixed-speed cooling
2
HeatPumpFixedSpeed Fixed-speed heat pump
3
CoolingInverter Inverter cooling
4
HeatPumpInverter Inverter heat pump

ACRefrigerantType Enum Values

0
Unknown Unknown
1
R22 R22 (deprecated HCFC)
2
R410a R410a (mainstream HFC)
3
R407c R407c (HFC alternative)

ACCompressorType Enum Values

0
Unknown Unknown
1
T1 Max outdoor temperature 43°C
2
T2 Max outdoor temperature 35°C
3
T3 Max outdoor temperature 52°C (tropical regions)

ACLouverPosition Enum Values

1
FullyClosed Fully closed
2
FullyOpen Fully open
3
QuarterOpen Quarter open
4
HalfOpen Half open
5
ThreeQuartersOpen Three-quarters open

Standard Example

Below is a typical attribute data example for a Matter thermostat (JSON format), with each field annotated:

{
  // --- Temperature Info ---
  "0x00": 2150,          // LocalTemperature = 2150 → actual 21.50°C
  "0x01": 3200,          // OutdoorTemperature = 3200 → actual 32.00°C
  "0x02": 1,             // Occupancy = 1 (occupied)

  // --- Setpoints ---
  "0x11": 2400,          // OccupiedCoolingSetpoint = 2400 → 24.00°C
  "0x12": 2000,          // OccupiedHeatingSetpoint = 2000 → 20.00°C
  "0x15": 700,           // MinHeatSetpointLimit = 700 → 7.00°C
  "0x16": 3000,          // MaxHeatSetpointLimit = 3000 → 30.00°C
  "0x17": 1600,          // MinCoolSetpointLimit = 1600 → 16.00°C
  "0x18": 3200,          // MaxCoolSetpointLimit = 3200 → 32.00°C
  "0x19": 25,            // MinSetpointDeadBand = 25 → 2.5°C

  // --- Mode & Status ---
  "0x1B": 4,             // ControlSequenceOfOperation = CoolingAndHeating
  "0x1C": 1,             // SystemMode = Auto
  "0x1E": 3,             // ThermostatRunningMode = Cool
  "0x29": 0x0006,        // ThermostatRunningState = CoolStateOn + FanStateOn

  // --- AC Capabilities ---
  "0x40": 3,             // ACType = CoolingAndInverter
  "0x41": 12000,         // ACCapacity = 12000 (BTU/h)
  "0x42": 2,             // ACRefrigerantType = R410a
  "0x45": 4              // ACLouverPosition = HalfOpen
}
Developer Tip

All temperature attribute values are integers in 0.01°C units. To display 2150 returned by the device to the user, divide by 100 to get 21.50°C. ThermostatRunningState = 0x0006 means Bit 1 (CoolStateOn) and Bit 2 (FanStateOn) are both set, indicating both cooling and fan are running.

Common Scenarios

Scenario 1: Read Current Temperature and System Status
  1. Read LocalTemperature (0x00) — handle null values
  2. Read SystemMode (0x1C) to get the current mode (Off/Auto/Cool/Heat, etc.)
  3. Read ThermostatRunningState (0x29) to determine which subsystems are running
  4. Perform unit conversion when displaying — divide all temperature values by 100 for actual Celsius
Scenario 2: Adjust Temperature Setpoints
  1. First read MinHeatSetpointLimit (0x15) through MaxCoolSetpointLimit (0x18) to determine the adjustable range
  2. Use the SetpointRaiseLower command for incremental adjustments, or write directly to OccupiedCoolingSetpoint (0x11) / OccupiedHeatingSetpoint (0x12)
  3. In Auto mode, observe the MinSetpointDeadBand (0x19) constraint — heating and cooling setpoints must maintain sufficient separation
  4. Subscribe to setpoint attribute changes to confirm modifications take effect
Scenario 3: Switch System Mode
  1. Read ControlSequenceOfOperation (0x1B) to determine which mode combinations the device supports
  2. For cooling-only devices (value 0-1), do not show Heat options; for heating-only devices (value 2-3), do not show Cool options
  3. Write to SystemMode (0x1C) to switch modes
  4. After switching, read ThermostatRunningMode (0x1E) (in Auto mode) to confirm actual device operating direction
Scenario 4: Set Weekly Schedule
  1. First confirm the device supports the SCH Feature (check Feature Map)
  2. Read NumberOfWeeklyTransitions (0x21) and NumberOfDailyTransitions (0x22) to understand capacity limits
  3. Read StartOfWeek (0x20) to determine the start of week
  4. Send SetWeeklySchedule (0x01) to set the schedule
  5. Verify by reading back with GetWeeklySchedule (0x02)
Scenario 5: Display Thermostat Card on App Home Screen
  1. Subscribe to LocalTemperature (0x00) + SystemMode (0x1C) + ThermostatRunningState (0x29)
  2. Display current temperature and target temperature (select corresponding setpoint based on SystemMode)
  3. Use ThermostatRunningState bitmap for running animations — heating / cooling / fan running
  4. Combine with PowerSource Cluster to display battery level (for battery-powered thermostats)