This is the default server implementation of TemperatureControlBehavior.

The Matter specification requires the TemperatureControl cluster to support features we do not enable by default. You should use TemperatureControlServer.with to specialize the class for the features your implementation supports.

Hierarchy (view full)

Constructors

Properties

[reference]: Datasource<StateType>
agent: Agent
cluster: never

The implemented cluster.

context: ActionContext
endpoint: Endpoint<Empty>
events: EventEmitter & Omit<ClusterEvents<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior>, never> & {} & {} & {} & {} & {} & {}

Access the behavior's events.

features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
    temperatureLevel: BitFlag;
    temperatureNumber: BitFlag;
    temperatureStep: BitFlag;
}>

Supported features as a flag object.

session: SecureSession
state: Omit<ClusterState.Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior>, never> & {} & {} & {} & {}

Access the behavior's state.

cluster: Of<{
    commands: {
        setTemperature: Command<TypeFromFields<{
            targetTemperature: OptionalFieldType<number>;
            targetTemperatureLevel: OptionalFieldType<number>;
        }>, void, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                maxTemperature: FixedAttribute<number, any>;
                minTemperature: FixedAttribute<number, any>;
                temperatureSetpoint: Attribute<number, any>;
            };
        };
        flags: {
            temperatureNumber: true;
        };
    }, {
        component: {
            attributes: {
                step: FixedAttribute<number, any>;
            };
        };
        flags: {
            temperatureStep: true;
        };
    }, {
        component: {
            attributes: {
                selectedTemperatureLevel: Attribute<number, any>;
                supportedTemperatureLevels: Attribute<string[], any>;
            };
        };
        flags: {
            temperatureLevel: true;
        };
    }, {
        component: false;
        flags: {
            temperatureNumber: false;
            temperatureStep: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: true;
            temperatureNumber: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: false;
            temperatureNumber: false;
        };
    }];
    features: {
        temperatureLevel: BitFlag;
        temperatureNumber: BitFlag;
        temperatureStep: BitFlag;
    };
    id: 86;
    name: "TemperatureControl";
    revision: 1;
}>

Base cluster state include all attribute values but may be extended by subclasses.

Type declaration

  • Readonlycommands: {
        setTemperature: Command<TypeFromFields<{
            targetTemperature: OptionalFieldType<number>;
            targetTemperatureLevel: OptionalFieldType<number>;
        }>, void, any>;
    }
  • Readonlyextensions: readonly [{
        component: {
            attributes: {
                maxTemperature: FixedAttribute<number, any>;
                minTemperature: FixedAttribute<number, any>;
                temperatureSetpoint: Attribute<number, any>;
            };
        };
        flags: {
            temperatureNumber: true;
        };
    }, {
        component: {
            attributes: {
                step: FixedAttribute<number, any>;
            };
        };
        flags: {
            temperatureStep: true;
        };
    }, {
        component: {
            attributes: {
                selectedTemperatureLevel: Attribute<number, any>;
                supportedTemperatureLevels: Attribute<string[], any>;
            };
        };
        flags: {
            temperatureLevel: true;
        };
    }, {
        component: false;
        flags: {
            temperatureNumber: false;
            temperatureStep: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: true;
            temperatureNumber: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: false;
            temperatureNumber: false;
        };
    }]

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

  • Readonlyfeatures: {
        temperatureLevel: BitFlag;
        temperatureNumber: BitFlag;
        temperatureStep: BitFlag;
    }
    • ReadonlytemperatureLevel: BitFlag

      TemperatureLevel

      For devices that use vendor-specific temperature levels for the temperature setpoint, such as some washers, the feature TL shall be used.

      MatterSpecification.v13.Cluster § 8.2.4.2

    • ReadonlytemperatureNumber: BitFlag

      TemperatureNumber

      For devices that use an actual temperature value for the temperature setpoint, such as some water heaters, the feature TN shall be used. Note that this cluster provides and supports temperatures in degrees Celsius via the temperature data type.

      MatterSpecification.v13.Cluster § 8.2.4.1

    • ReadonlytemperatureStep: BitFlag

      TemperatureStep

      For devices that support discrete temperature setpoints that are larger than the temperature resolution imposed via the temperature data type, the Step feature may be used.

      MatterSpecification.v13.Cluster § 8.2.4.3

  • Readonlyid: 86
  • Readonlyname: "TemperatureControl"
  • Readonlyrevision: 1
defaults: ClusterState.Type<Of<{
    commands: {
        setTemperature: Command<TypeFromFields<{
            targetTemperature: OptionalFieldType<number>;
            targetTemperatureLevel: OptionalFieldType<number>;
        }>, void, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                maxTemperature: FixedAttribute<number, any>;
                minTemperature: FixedAttribute<number, any>;
                temperatureSetpoint: Attribute<number, any>;
            };
        };
        flags: {
            temperatureNumber: true;
        };
    }, {
        component: {
            attributes: {
                step: FixedAttribute<number, any>;
            };
        };
        flags: {
            temperatureStep: true;
        };
    }, {
        component: {
            attributes: {
                selectedTemperatureLevel: Attribute<number, any>;
                supportedTemperatureLevels: Attribute<string[], any>;
            };
        };
        flags: {
            temperatureLevel: true;
        };
    }, {
        component: false;
        flags: {
            temperatureNumber: false;
            temperatureStep: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: true;
            temperatureNumber: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: false;
            temperatureNumber: false;
        };
    }];
    features: {
        temperatureLevel: BitFlag;
        temperatureNumber: BitFlag;
        temperatureStep: BitFlag;
    };
    id: 86;
    name: "TemperatureControl";
    revision: 1;
}>, Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior, TemperatureControlInterface>>
dependencies?: Iterable<Type, any, any>
early: boolean
Events: ClusterEvents.Type<Of<{
    commands: {
        setTemperature: Command<TypeFromFields<{
            targetTemperature: OptionalFieldType<number>;
            targetTemperatureLevel: OptionalFieldType<number>;
        }>, void, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                maxTemperature: FixedAttribute<number, any>;
                minTemperature: FixedAttribute<number, any>;
                temperatureSetpoint: Attribute<number, any>;
            };
        };
        flags: {
            temperatureNumber: true;
        };
    }, {
        component: {
            attributes: {
                step: FixedAttribute<number, any>;
            };
        };
        flags: {
            temperatureStep: true;
        };
    }, {
        component: {
            attributes: {
                selectedTemperatureLevel: Attribute<number, any>;
                supportedTemperatureLevels: Attribute<string[], any>;
            };
        };
        flags: {
            temperatureLevel: true;
        };
    }, {
        component: false;
        flags: {
            temperatureNumber: false;
            temperatureStep: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: true;
            temperatureNumber: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: false;
            temperatureNumber: false;
        };
    }];
    features: {
        temperatureLevel: BitFlag;
        temperatureNumber: BitFlag;
        temperatureStep: BitFlag;
    };
    id: 86;
    name: "TemperatureControl";
    revision: 1;
}>, Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior, TemperatureControlInterface>>
ExtensionInterface: {}
id

The behavior ID for ClusterBehaviors is the name of the cluster.

Internal: (new () => {})
name: string
schema?: Schema
State: (new () => ClusterState.Type<Of<{
    commands: {
        setTemperature: Command<TypeFromFields<{
            targetTemperature: OptionalFieldType<number>;
            targetTemperatureLevel: OptionalFieldType<number>;
        }>, void, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                maxTemperature: FixedAttribute<number, any>;
                minTemperature: FixedAttribute<number, any>;
                temperatureSetpoint: Attribute<number, any>;
            };
        };
        flags: {
            temperatureNumber: true;
        };
    }, {
        component: {
            attributes: {
                step: FixedAttribute<number, any>;
            };
        };
        flags: {
            temperatureStep: true;
        };
    }, {
        component: {
            attributes: {
                selectedTemperatureLevel: Attribute<number, any>;
                supportedTemperatureLevels: Attribute<string[], any>;
            };
        };
        flags: {
            temperatureLevel: true;
        };
    }, {
        component: false;
        flags: {
            temperatureNumber: false;
            temperatureStep: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: true;
            temperatureNumber: true;
        };
    }, {
        component: false;
        flags: {
            temperatureLevel: false;
            temperatureNumber: false;
        };
    }];
    features: {
        temperatureLevel: BitFlag;
        temperatureNumber: BitFlag;
        temperatureStep: BitFlag;
    };
    id: 86;
    name: "TemperatureControl";
    revision: 1;
}>, Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior, TemperatureControlInterface>>)
supervisor: RootSupervisor
supports: ((other: Type) => boolean)

Type declaration

    • (other): boolean
    • Does this behavior support functionality of a specific implementation?

      Parameters

      Returns boolean

Methods

  • Create a generic callback function that has the same properties as a Reactor.

    Like a reactor, the callback's "this" will be bound to an active Behavior instance. Because of this: The reactor MUST be a real JS function - arrow functions will not work!

    Type Parameters

    • A extends any[]
    • R

    Parameters

    Returns ((...args: A) => undefined | R)

      • (...args): undefined | R
      • Parameters

        • Rest...args: A

        Returns undefined | R