Base: {
    attributes: {
        acCapacity: OptionalWritableAttribute<number, any>;
        acCapacityFormat: OptionalWritableAttribute<Thermostat.AcCapacityFormat, any>;
        acCoilTemperature: OptionalAttribute<number | null, any>;
        acCompressorType: OptionalWritableAttribute<Thermostat.AcCompressorType, any>;
        acErrorCode: OptionalWritableAttribute<TypeFromPartialBitSchema, any>;
        acLouverPosition: OptionalWritableAttribute<Thermostat.AcLouverPosition, any>;
        acRefrigerantType: OptionalWritableAttribute<Thermostat.AcRefrigerantType, any>;
        acType: OptionalWritableAttribute<Thermostat.AcType, any>;
        controlSequenceOfOperation: WritableAttribute<Thermostat.ControlSequenceOfOperation, any>;
        emergencyHeatDelta: OptionalWritableAttribute<number, any>;
        localTemperature: Attribute<number | null, any>;
        outdoorTemperature: OptionalAttribute<number | null, any>;
        remoteSensing: OptionalWritableAttribute<TypeFromPartialBitSchema, any>;
        setpointChangeAmount: OptionalAttribute<number | null, any>;
        setpointChangeSource: OptionalAttribute<Thermostat.SetpointChangeSource, any>;
        setpointChangeSourceTimestamp: OptionalAttribute<number, any>;
        systemMode: WritableAttribute<Thermostat.SystemMode, any>;
        temperatureSetpointHold: OptionalWritableAttribute<Thermostat.TemperatureSetpointHold, any>;
        temperatureSetpointHoldDuration: OptionalWritableAttribute<number | null, any>;
        thermostatProgrammingOperationMode: OptionalWritableAttribute<TypeFromPartialBitSchema, any>;
        thermostatRunningState: OptionalAttribute<TypeFromPartialBitSchema, any>;
    };
    commands: {
        setpointRaiseLower: Command<TypeFromFields, void, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                occupancy: Attribute<TypeFromPartialBitSchema, any>;
            };
        };
        flags: {
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                absMaxHeatSetpointLimit: OptionalFixedAttribute<number, any>;
                absMinHeatSetpointLimit: OptionalFixedAttribute<number, any>;
                maxHeatSetpointLimit: OptionalWritableAttribute<number, any>;
                minHeatSetpointLimit: OptionalWritableAttribute<number, any>;
                occupiedHeatingSetpoint: WritableAttribute<number, any>;
                piHeatingDemand: OptionalAttribute<number, any>;
            };
        };
        flags: {
            heating: true;
        };
    }, {
        component: {
            attributes: {
                absMaxCoolSetpointLimit: OptionalFixedAttribute<number, any>;
                absMinCoolSetpointLimit: OptionalFixedAttribute<number, any>;
                maxCoolSetpointLimit: OptionalWritableAttribute<number, any>;
                minCoolSetpointLimit: OptionalWritableAttribute<number, any>;
                occupiedCoolingSetpoint: WritableAttribute<number, any>;
                piCoolingDemand: OptionalAttribute<number, any>;
            };
        };
        flags: {
            cooling: true;
        };
    }, {
        component: {
            attributes: {
                localTemperatureCalibration: OptionalWritableAttribute<number, any>;
            };
        };
        flags: {
            localTemperatureNotExposed: false;
        };
    }, {
        component: {
            attributes: {
                unoccupiedCoolingSetpoint: WritableAttribute<number, any>;
            };
        };
        flags: {
            cooling: true;
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                unoccupiedHeatingSetpoint: WritableAttribute<number, any>;
            };
        };
        flags: {
            heating: true;
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                minSetpointDeadBand: WritableAttribute<number, any>;
                thermostatRunningMode: OptionalAttribute<Thermostat.ThermostatRunningMode, any>;
            };
        };
        flags: {
            autoMode: true;
        };
    }, {
        component: {
            attributes: {
                numberOfDailyTransitions: FixedAttribute<number, any>;
                numberOfWeeklyTransitions: FixedAttribute<number, any>;
                startOfWeek: FixedAttribute<Thermostat.StartOfWeek, any>;
            };
            commands: {
                clearWeeklySchedule: Command<void, void, any>;
                getWeeklySchedule: Command<TypeFromFields, TypeFromFields, any>;
                setWeeklySchedule: Command<TypeFromFields, void, any>;
            };
        };
        flags: {
            scheduleConfiguration: true;
        };
    }, {
        component: {
            attributes: {
                occupiedSetback: WritableAttribute<number | null, any>;
                occupiedSetbackMax: FixedAttribute<number | null, any>;
                occupiedSetbackMin: FixedAttribute<number | null, any>;
            };
        };
        flags: {
            setback: true;
        };
    }, {
        component: {
            attributes: {
                unoccupiedSetback: WritableAttribute<number | null, any>;
                unoccupiedSetbackMax: FixedAttribute<number | null, any>;
                unoccupiedSetbackMin: FixedAttribute<number | null, any>;
            };
        };
        flags: {
            occupancy: true;
            setback: true;
        };
    }, {
        component: false;
        flags: {
            autoMode: true;
            heating: false;
        };
    }, {
        component: false;
        flags: {
            autoMode: true;
            cooling: false;
        };
    }, {
        component: false;
        flags: {
            cooling: false;
            heating: false;
        };
    }];
    features: {
        autoMode: BitFlag;
        cooling: BitFlag;
        heating: BitFlag;
        localTemperatureNotExposed: BitFlag;
        occupancy: BitFlag;
        scheduleConfiguration: BitFlag;
        setback: BitFlag;
    };
    id: 513;
    name: "Thermostat";
    revision: 6;
}

These elements and properties are present in all Thermostat clusters.

Type declaration

  • Readonlyattributes: {
        acCapacity: OptionalWritableAttribute<number, any>;
        acCapacityFormat: OptionalWritableAttribute<Thermostat.AcCapacityFormat, any>;
        acCoilTemperature: OptionalAttribute<number | null, any>;
        acCompressorType: OptionalWritableAttribute<Thermostat.AcCompressorType, any>;
        acErrorCode: OptionalWritableAttribute<TypeFromPartialBitSchema, any>;
        acLouverPosition: OptionalWritableAttribute<Thermostat.AcLouverPosition, any>;
        acRefrigerantType: OptionalWritableAttribute<Thermostat.AcRefrigerantType, any>;
        acType: OptionalWritableAttribute<Thermostat.AcType, any>;
        controlSequenceOfOperation: WritableAttribute<Thermostat.ControlSequenceOfOperation, any>;
        emergencyHeatDelta: OptionalWritableAttribute<number, any>;
        localTemperature: Attribute<number | null, any>;
        outdoorTemperature: OptionalAttribute<number | null, any>;
        remoteSensing: OptionalWritableAttribute<TypeFromPartialBitSchema, any>;
        setpointChangeAmount: OptionalAttribute<number | null, any>;
        setpointChangeSource: OptionalAttribute<Thermostat.SetpointChangeSource, any>;
        setpointChangeSourceTimestamp: OptionalAttribute<number, any>;
        systemMode: WritableAttribute<Thermostat.SystemMode, any>;
        temperatureSetpointHold: OptionalWritableAttribute<Thermostat.TemperatureSetpointHold, any>;
        temperatureSetpointHoldDuration: OptionalWritableAttribute<number | null, any>;
        thermostatProgrammingOperationMode: OptionalWritableAttribute<TypeFromPartialBitSchema, any>;
        thermostatRunningState: OptionalAttribute<TypeFromPartialBitSchema, any>;
    }
    • ReadonlyacCapacity: OptionalWritableAttribute<number, any>

      Indicates capacity of Mini Split AC in terms of the format defined by the ACCapacityFormat attribute

      MatterSpecification.v13.Cluster § 4.3.9.46

    • ReadonlyacCapacityFormat: OptionalWritableAttribute<Thermostat.AcCapacityFormat, any>

      Indicates the format for the ACCapacity attribute.

      MatterSpecification.v13.Cluster § 4.3.9.52

    • ReadonlyacCoilTemperature: OptionalAttribute<number | null, any>

      Indicates the temperature of the AC coil, as measured locally or remotely (over the network).

      MatterSpecification.v13.Cluster § 4.3.9.51

    • ReadonlyacCompressorType: OptionalWritableAttribute<Thermostat.AcCompressorType, any>

      Indicates the type of compressor used within the Mini Split AC.

      MatterSpecification.v13.Cluster § 4.3.9.48

    • ReadonlyacErrorCode: OptionalWritableAttribute<TypeFromPartialBitSchema, any>

      Indicates the type of errors encountered within the Mini Split AC.

      MatterSpecification.v13.Cluster § 4.3.9.49

    • ReadonlyacLouverPosition: OptionalWritableAttribute<Thermostat.AcLouverPosition, any>

      Indicates the position of Louver on the AC.

      MatterSpecification.v13.Cluster § 4.3.9.50

    • ReadonlyacRefrigerantType: OptionalWritableAttribute<Thermostat.AcRefrigerantType, any>

      Indicates type of refrigerant used within the Mini Split AC.

      MatterSpecification.v13.Cluster § 4.3.9.47

    • ReadonlyacType: OptionalWritableAttribute<Thermostat.AcType, any>

      Indicates the type of Mini Split ACTypeEnum of Mini Split AC is defined depending on how Cooling and Heating condition is achieved by Mini Split AC.

      MatterSpecification.v13.Cluster § 4.3.9.45

    • ReadonlycontrolSequenceOfOperation: WritableAttribute<Thermostat.ControlSequenceOfOperation, any>

      Indicates the overall operating environment of the thermostat, and thus the possible system modes that the thermostat can operate in.

      MatterSpecification.v13.Cluster § 4.3.9.24

    • ReadonlyemergencyHeatDelta: OptionalWritableAttribute<number, any>

      Indicates the delta between the Calculated Local Temperature and the OccupiedHeatingSetpoint or UnoccupiedHeatingSetpoint attributes at which the Thermostat server will operate in emergency heat mode.

      If the difference between the Calculated Local Temperature and OccupiedCoolingSetpoint or UnoccupiedCoolingSetpoint is greater than or equal to the EmergencyHeatDelta and the Thermostat server’s SystemMode attribute is in a heating-related mode, then the Thermostat server shall immediately switch to the SystemMode attribute value that provides the highest stage of heating (e.g., emergency heat) and continue operating in that running state until the OccupiedHeatingSetpoint value is reached. For example:

      • Calculated Local Temperature = 10.0°C

      • OccupiedHeatingSetpoint = 16.0°C

      • EmergencyHeatDelta = 2.0°C

      ⇒ OccupiedHeatingSetpoint - Calculated Local Temperature ≥? EmergencyHeatDelta

      ⇒ 16°C - 10°C ≥? 2°C

      ⇒ TRUE >>> Thermostat server changes its SystemMode to operate in 2nd stage or emergency heat mode

      The purpose of this attribute is to provide Thermostat clients the ability to configure rapid heating when a setpoint is of a specified amount greater than the measured temperature. This allows the heated space to be quickly heated to the desired level set by the user.

      MatterSpecification.v13.Cluster § 4.3.9.44

    • ReadonlylocalTemperature: Attribute<number | null, any>

      Indicates the current Calculated Local Temperature, when available.

      • If the LTNE feature is not supported:

      ◦ If the LocalTemperatureCalibration is invalid or currently unavailable, the attribute shall report
        null.
      
      ◦ If the LocalTemperatureCalibration is valid, the attribute shall report that value.
      

      • Otherwise, if the LTNE feature is supported, there is no feedback externally available for the LocalTemperatureCalibration. In that case, the LocalTemperature attribute shall always report null.

      MatterSpecification.v13.Cluster § 4.3.9.3

    • ReadonlyoutdoorTemperature: OptionalAttribute<number | null, any>

      Indicates the outdoor temperature, as measured locally or remotely (over the network).

      MatterSpecification.v13.Cluster § 4.3.9.4

    • ReadonlyremoteSensing: OptionalWritableAttribute<TypeFromPartialBitSchema, any>

      Indicates when the local temperature, outdoor temperature and occupancy are being sensed by remote networked sensors, rather than internal sensors.

      If the LTNE feature is present in the server, the LocalTemperature RemoteSensing bit value shall always report a value of 0.

      If the LocalTemperature RemoteSensing bit is written with a value of 1 when the LTNE feature is present, the write shall fail and the server shall report a CONSTRAINT_ERROR.

      MatterSpecification.v13.Cluster § 4.3.9.23

    • ReadonlysetpointChangeAmount: OptionalAttribute<number | null, any>

      Indicates the delta between the current active OccupiedCoolingSetpoint or OccupiedHeatingSetpoint and the previous active setpoint. This attribute is meant to accompany the SetpointChangeSource attribute; devices implementing SetpointChangeAmount SHOULD also implement SetpointChangeSource.

      The null value indicates that the previous setpoint was unknown.

      MatterSpecification.v13.Cluster § 4.3.9.36

    • ReadonlysetpointChangeSource: OptionalAttribute<Thermostat.SetpointChangeSource, any>

      Indicates the source of the current active OccupiedCoolingSetpoint or OccupiedHeatingSetpoint (i.e., who or what determined the current setpoint).

      This attribute enables service providers to determine whether changes to setpoints were initiated due to occupant comfort, scheduled programming or some other source (e.g., electric utility or other service provider). Because automation services may initiate frequent setpoint changes, this attribute clearly differentiates the source of setpoint changes made at the thermostat.

      MatterSpecification.v13.Cluster § 4.3.9.35

    • ReadonlysetpointChangeSourceTimestamp: OptionalAttribute<number, any>

      Indicates the time in UTC at which the SetpointChangeAmount attribute change was recorded.

      MatterSpecification.v13.Cluster § 4.3.9.37

    • ReadonlysystemMode: WritableAttribute<Thermostat.SystemMode, any>

      Indicates the current operating mode of the thermostat. Its value shall be limited by the ControlSequenceOfOperation attribute.

      MatterSpecification.v13.Cluster § 4.3.9.25

    • ReadonlytemperatureSetpointHold: OptionalWritableAttribute<Thermostat.TemperatureSetpointHold, any>

      Indicates the temperature hold status on the thermostat. If hold status is on, the thermostat SHOULD maintain the temperature setpoint for the current mode until a system mode change. If hold status is off, the thermostat SHOULD follow the setpoint transitions specified by its internal scheduling program. If the thermostat supports setpoint hold for a specific duration, it SHOULD also implement the TemperatureSetpointHoldDuration attribute.

      MatterSpecification.v13.Cluster § 4.3.9.31

    • ReadonlytemperatureSetpointHoldDuration: OptionalWritableAttribute<number | null, any>

      Indicates the period in minutes for which a setpoint hold is active. Thermostats that support hold for a specified duration SHOULD implement this attribute. The null value indicates the field is unused. All other values are reserved.

      MatterSpecification.v13.Cluster § 4.3.9.32

    • ReadonlythermostatProgrammingOperationMode: OptionalWritableAttribute<TypeFromPartialBitSchema, any>

      Indicates the operational state of the thermostat’s programming. The thermostat shall modify its programming operation when this attribute is modified by a client and update this attribute when its programming operation is modified locally by a user. The thermostat may support more than one active ProgrammingOperationModeBitmap. For example, the thermostat may operate simultaneously in Schedule Programming Mode and Recovery Mode.

      Thermostats which contain a schedule may use this attribute to control how that schedule is used, even if they do not support the ScheduleConfiguration feature.

      When ScheduleActive is not set, the setpoint is altered only by manual up/down changes at the thermostat or remotely, not by internal schedule programming.

      NOTE

      Modifying the ScheduleActive bit does not clear or delete previous weekly schedule programming configurations.

      MatterSpecification.v13.Cluster § 4.3.9.33

    • ReadonlythermostatRunningState: OptionalAttribute<TypeFromPartialBitSchema, any>

      Indicates the current relay state of the heat, cool, and fan relays. Unimplemented outputs shall be treated as if they were Off.

      MatterSpecification.v13.Cluster § 4.3.9.34

  • Readonlycommands: {
        setpointRaiseLower: Command<TypeFromFields, void, any>;
    }
    • ReadonlysetpointRaiseLower: Command<TypeFromFields, void, any>

      Upon receipt, the attributes for the indicated setpoint(s) shall have the amount specified in the Amount field added to them. If the resulting value is outside the limits imposed by MinCoolSetpointLimit, MaxCoolSetpointLimit, MinHeatSetpointLimit and MaxHeatSetpointLimit, the value is clamped to those limits. This is not considered an error condition.

      MatterSpecification.v13.Cluster § 4.3.10.1

  • Readonlyextensions: readonly [{
        component: {
            attributes: {
                occupancy: Attribute<TypeFromPartialBitSchema, any>;
            };
        };
        flags: {
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                absMaxHeatSetpointLimit: OptionalFixedAttribute<number, any>;
                absMinHeatSetpointLimit: OptionalFixedAttribute<number, any>;
                maxHeatSetpointLimit: OptionalWritableAttribute<number, any>;
                minHeatSetpointLimit: OptionalWritableAttribute<number, any>;
                occupiedHeatingSetpoint: WritableAttribute<number, any>;
                piHeatingDemand: OptionalAttribute<number, any>;
            };
        };
        flags: {
            heating: true;
        };
    }, {
        component: {
            attributes: {
                absMaxCoolSetpointLimit: OptionalFixedAttribute<number, any>;
                absMinCoolSetpointLimit: OptionalFixedAttribute<number, any>;
                maxCoolSetpointLimit: OptionalWritableAttribute<number, any>;
                minCoolSetpointLimit: OptionalWritableAttribute<number, any>;
                occupiedCoolingSetpoint: WritableAttribute<number, any>;
                piCoolingDemand: OptionalAttribute<number, any>;
            };
        };
        flags: {
            cooling: true;
        };
    }, {
        component: {
            attributes: {
                localTemperatureCalibration: OptionalWritableAttribute<number, any>;
            };
        };
        flags: {
            localTemperatureNotExposed: false;
        };
    }, {
        component: {
            attributes: {
                unoccupiedCoolingSetpoint: WritableAttribute<number, any>;
            };
        };
        flags: {
            cooling: true;
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                unoccupiedHeatingSetpoint: WritableAttribute<number, any>;
            };
        };
        flags: {
            heating: true;
            occupancy: true;
        };
    }, {
        component: {
            attributes: {
                minSetpointDeadBand: WritableAttribute<number, any>;
                thermostatRunningMode: OptionalAttribute<Thermostat.ThermostatRunningMode, any>;
            };
        };
        flags: {
            autoMode: true;
        };
    }, {
        component: {
            attributes: {
                numberOfDailyTransitions: FixedAttribute<number, any>;
                numberOfWeeklyTransitions: FixedAttribute<number, any>;
                startOfWeek: FixedAttribute<Thermostat.StartOfWeek, any>;
            };
            commands: {
                clearWeeklySchedule: Command<void, void, any>;
                getWeeklySchedule: Command<TypeFromFields, TypeFromFields, any>;
                setWeeklySchedule: Command<TypeFromFields, void, any>;
            };
        };
        flags: {
            scheduleConfiguration: true;
        };
    }, {
        component: {
            attributes: {
                occupiedSetback: WritableAttribute<number | null, any>;
                occupiedSetbackMax: FixedAttribute<number | null, any>;
                occupiedSetbackMin: FixedAttribute<number | null, any>;
            };
        };
        flags: {
            setback: true;
        };
    }, {
        component: {
            attributes: {
                unoccupiedSetback: WritableAttribute<number | null, any>;
                unoccupiedSetbackMax: FixedAttribute<number | null, any>;
                unoccupiedSetbackMin: FixedAttribute<number | null, any>;
            };
        };
        flags: {
            occupancy: true;
            setback: true;
        };
    }, {
        component: false;
        flags: {
            autoMode: true;
            heating: false;
        };
    }, {
        component: false;
        flags: {
            autoMode: true;
            cooling: false;
        };
    }, {
        component: false;
        flags: {
            cooling: false;
            heating: false;
        };
    }]

    This metadata controls which ThermostatCluster elements matter.js activates for specific feature combinations.

  • Readonlyfeatures: {
        autoMode: BitFlag;
        cooling: BitFlag;
        heating: BitFlag;
        localTemperatureNotExposed: BitFlag;
        occupancy: BitFlag;
        scheduleConfiguration: BitFlag;
        setback: BitFlag;
    }
    • ReadonlyautoMode: BitFlag

      AutoMode

      Supports a System Mode of Auto

    • Readonlycooling: BitFlag

      Cooling

      Thermostat is capable of managing a cooling device

    • Readonlyheating: BitFlag

      Heating

      Thermostat is capable of managing a heating device

    • ReadonlylocalTemperatureNotExposed: BitFlag

      LocalTemperatureNotExposed

      This feature indicates that the Calculated Local Temperature used internally is unavailable to report externally, for example due to the temperature control being done by a separate subsystem which does not offer a view into the currently measured temperature, but allows setpoints to be provided.

      MatterSpecification.v13.Cluster § 4.3.4.1

    • Readonlyoccupancy: BitFlag

      Occupancy

      Supports Occupied and Unoccupied setpoints

    • ReadonlyscheduleConfiguration: BitFlag

      ScheduleConfiguration

      Supports remote configuration of a weekly schedule of setpoint transitions

    • Readonlysetback: BitFlag

      Setback

      Supports configurable setback (or span)

  • Readonlyid: 513
  • Readonlyname: "Thermostat"
  • Readonlyrevision: 6