Hierarchy

  • ClusterBehavior<this> & Omit<ColorControlServerLogic,
        | "events"
        | "cluster"
        | "state"
        | "initialize"
        | typeof asyncDispose
        | "colorLoopSet"
        | "stopMoveStep"
        | (keyof HueSaturation)
        | (keyof Xy)
        | (keyof ColorTemperature)
        | (keyof EnhancedHue)
        | "moveToHueLogic"
        | "moveHueLogic"
        | "stopHueAndSaturationMovement"
        | "stepHueLogic"
        | "moveToSaturationLogic"
        | "moveSaturationLogic"
        | "stepSaturationLogic"
        | "moveToHueAndSaturationLogic"
        | "moveToColorLogic"
        | "stopAllColorMovement"
        | "moveColorLogic"
        | "stepColorLogic"
        | "moveToColorTemperatureLogic"
        | "moveToEnhancedHueAndSaturationLogic"
        | "stopColorLoopLogic"
        | "startColorLoopLogic"
        | "stopMoveStepLogic"
        | "moveColorTemperatureLogic"
        | "stepColorTemperatureLogic"
        | "switchColorMode"
        | "setColorMode"
        | "setEnhancedColorMode"
        | "syncColorTemperatureWithLevelLogic"> & Omit<{} & {}, never> & {
        moveColorLogic(rateX: number, rateY: number): MaybePromise;
        moveColorTemperatureLogic(moveMode: ColorControl.MoveMode, rate: number, colorTemperatureMinimumMireds: number, colorTemperatureMaximumMireds: number): MaybePromise;
        moveHueLogic(moveMode: ColorControl.MoveMode, rate: number, isEnhancedHue: boolean): MaybePromise;
        moveSaturationLogic(moveMode: ColorControl.MoveMode, rate: number): MaybePromise;
        moveToColorLogic(targetX: number, targetY: number, transitionTime: number): MaybePromise;
        moveToColorTemperatureLogic(targetMireds: number, transitionTime: number): MaybePromise;
        moveToEnhancedHueAndSaturationLogic(targetEnhancedHue: number, targetSaturation: number, transitionTime: number): MaybePromise;
        moveToHueAndSaturationLogic(targetHue: number, targetSaturation: number, transitionTime: number): MaybePromise;
        moveToHueLogic(targetHue: number, direction: ColorControl.Direction, transitionTime: number, isEnhancedHue: boolean): MaybePromise;
        moveToSaturationLogic(targetSaturation: number, transitionTime: number): MaybePromise;
        setColorMode(mode: ColorControl.ColorMode): MaybePromise;
        setEnhancedColorMode(mode: ColorControl.EnhancedColorMode): MaybePromise;
        startColorLoopLogic(startHue: number): MaybePromise;
        stepColorLogic(stepX: number, stepY: number, transitionTime: number): MaybePromise;
        stepColorTemperatureLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number, colorTemperatureMinimumMireds: number, colorTemperatureMaximumMireds: number): MaybePromise;
        stepHueLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number, isEnhancedHue: boolean): MaybePromise;
        stepSaturationLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number): MaybePromise;
        stopAllColorMovement(): MaybePromise;
        stopColorLoopLogic(): MaybePromise;
        stopHueAndSaturationMovement(): MaybePromise;
        stopMoveStepLogic(): MaybePromise;
        switchColorMode(oldMode: ColorControl.ColorMode, newMode: ColorControl.ColorMode): MaybePromise;
        syncColorTemperatureWithLevelLogic(level: number): MaybePromise;
    } & {
        cluster: Of<{
            attributes: {
                colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                    colorLoop: BitFlag;
                    colorTemperature: BitFlag;
                    enhancedHue: BitFlag;
                    hueSaturation: BitFlag;
                    xy: BitFlag;
                }>, any>;
                colorMode: Attribute<ColorControl.ColorMode, any>;
                colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointBx: OptionalWritableAttribute<number, any>;
                colorPointBy: OptionalWritableAttribute<number, any>;
                colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointGx: OptionalWritableAttribute<number, any>;
                colorPointGy: OptionalWritableAttribute<number, any>;
                colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointRx: OptionalWritableAttribute<number, any>;
                colorPointRy: OptionalWritableAttribute<number, any>;
                compensationText: OptionalAttribute<string, any>;
                driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
                enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
                numberOfPrimaries: FixedAttribute<null | number, any>;
                options: WritableAttribute<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>, any>;
                primary1Intensity: OptionalFixedAttribute<null | number, any>;
                primary1X: OptionalFixedAttribute<number, any>;
                primary1Y: OptionalFixedAttribute<number, any>;
                primary2Intensity: OptionalFixedAttribute<null | number, any>;
                primary2X: OptionalFixedAttribute<number, any>;
                primary2Y: OptionalFixedAttribute<number, any>;
                primary3Intensity: OptionalFixedAttribute<null | number, any>;
                primary3X: OptionalFixedAttribute<number, any>;
                primary3Y: OptionalFixedAttribute<number, any>;
                primary4Intensity: OptionalFixedAttribute<null | number, any>;
                primary4X: OptionalFixedAttribute<number, any>;
                primary4Y: OptionalFixedAttribute<number, any>;
                primary5Intensity: OptionalFixedAttribute<null | number, any>;
                primary5X: OptionalFixedAttribute<number, any>;
                primary5Y: OptionalFixedAttribute<number, any>;
                primary6Intensity: OptionalFixedAttribute<null | number, any>;
                primary6X: OptionalFixedAttribute<number, any>;
                primary6Y: OptionalFixedAttribute<number, any>;
                remainingTime: OptionalAttribute<number, any>;
                whitePointX: OptionalWritableAttribute<number, any>;
                whitePointY: OptionalWritableAttribute<number, any>;
            };
            extensions: readonly [{
                component: {
                    attributes: {
                        currentHue: Attribute<number, any>;
                        currentSaturation: Attribute<number, any>;
                    };
                    commands: {
                        moveHue: Command<TypeFromFields<(...)>, void, any>;
                        moveSaturation: Command<TypeFromFields<(...)>, void, any>;
                        moveToHue: Command<TypeFromFields<(...)>, void, any>;
                        moveToHueAndSaturation: Command<TypeFromFields<(...)>, void, any>;
                        moveToSaturation: Command<TypeFromFields<(...)>, void, any>;
                        stepHue: Command<TypeFromFields<(...)>, void, any>;
                        stepSaturation: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    hueSaturation: true;
                };
            }, {
                component: {
                    attributes: {
                        currentX: Attribute<number, any>;
                        currentY: Attribute<number, any>;
                    };
                    commands: {
                        moveColor: Command<TypeFromFields<(...)>, void, any>;
                        moveToColor: Command<TypeFromFields<(...)>, void, any>;
                        stepColor: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    xy: true;
                };
            }, {
                component: {
                    attributes: {
                        colorTemperatureMireds: Attribute<number, any>;
                        colorTempPhysicalMaxMireds: Attribute<number, any>;
                        colorTempPhysicalMinMireds: Attribute<number, any>;
                        coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                        startUpColorTemperatureMireds: OptionalWritableAttribute<(...) | (...), any>;
                    };
                    commands: {
                        moveColorTemperature: Command<TypeFromFields<(...)>, void, any>;
                        moveToColorTemperature: Command<TypeFromFields<(...)>, void, any>;
                        stepColorTemperature: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    colorTemperature: true;
                };
            }, {
                component: {
                    attributes: {
                        enhancedCurrentHue: Attribute<number, any>;
                    };
                    commands: {
                        enhancedMoveHue: Command<TypeFromFields<(...)>, void, any>;
                        enhancedMoveToHue: Command<TypeFromFields<(...)>, void, any>;
                        enhancedMoveToHueAndSaturation: Command<TypeFromFields<(...)>, void, any>;
                        enhancedStepHue: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    enhancedHue: true;
                };
            }, {
                component: {
                    attributes: {
                        colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                        colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                        colorLoopStartEnhancedHue: Attribute<number, any>;
                        colorLoopStoredEnhancedHue: Attribute<number, any>;
                        colorLoopTime: Attribute<number, any>;
                    };
                    commands: {
                        colorLoopSet: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    colorLoop: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    hueSaturation: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    xy: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<TypeFromFields<(...)>, void, any>;
                    };
                };
                flags: {
                    colorTemperature: true;
                };
            }];
            features: {
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            };
            id: 768;
            name: "ColorControl";
            revision: 6;
        }>;
        events: ClusterEvents<Of<{
            attributes: {
                colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                    colorLoop: BitFlag;
                    colorTemperature: BitFlag;
                    enhancedHue: BitFlag;
                    hueSaturation: BitFlag;
                    xy: BitFlag;
                }>, any>;
                colorMode: Attribute<ColorControl.ColorMode, any>;
                colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointBx: OptionalWritableAttribute<number, any>;
                colorPointBy: OptionalWritableAttribute<number, any>;
                colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointGx: OptionalWritableAttribute<number, any>;
                colorPointGy: OptionalWritableAttribute<number, any>;
                colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointRx: OptionalWritableAttribute<number, any>;
                colorPointRy: OptionalWritableAttribute<number, any>;
                compensationText: OptionalAttribute<string, any>;
                driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
                enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
                numberOfPrimaries: FixedAttribute<null | number, any>;
                options: WritableAttribute<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>, any>;
                primary1Intensity: OptionalFixedAttribute<null | number, any>;
                primary1X: OptionalFixedAttribute<number, any>;
                primary1Y: OptionalFixedAttribute<number, any>;
                primary2Intensity: OptionalFixedAttribute<null | number, any>;
                primary2X: OptionalFixedAttribute<number, any>;
                primary2Y: OptionalFixedAttribute<number, any>;
                primary3Intensity: OptionalFixedAttribute<null | number, any>;
                primary3X: OptionalFixedAttribute<number, any>;
                primary3Y: OptionalFixedAttribute<number, any>;
                primary4Intensity: OptionalFixedAttribute<null | number, any>;
                primary4X: OptionalFixedAttribute<number, any>;
                primary4Y: OptionalFixedAttribute<number, any>;
                primary5Intensity: OptionalFixedAttribute<null | number, any>;
                primary5X: OptionalFixedAttribute<number, any>;
                primary5Y: OptionalFixedAttribute<number, any>;
                primary6Intensity: OptionalFixedAttribute<null | number, any>;
                primary6X: OptionalFixedAttribute<number, any>;
                primary6Y: OptionalFixedAttribute<number, any>;
                remainingTime: OptionalAttribute<number, any>;
                whitePointX: OptionalWritableAttribute<number, any>;
                whitePointY: OptionalWritableAttribute<number, any>;
            };
            extensions: readonly [{
                component: {
                    attributes: {
                        currentHue: Attribute<(...), (...)>;
                        currentSaturation: Attribute<(...), (...)>;
                    };
                    commands: {
                        moveHue: Command<(...), (...), (...)>;
                        moveSaturation: Command<(...), (...), (...)>;
                        moveToHue: Command<(...), (...), (...)>;
                        moveToHueAndSaturation: Command<(...), (...), (...)>;
                        moveToSaturation: Command<(...), (...), (...)>;
                        stepHue: Command<(...), (...), (...)>;
                        stepSaturation: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    hueSaturation: true;
                };
            }, {
                component: {
                    attributes: {
                        currentX: Attribute<(...), (...)>;
                        currentY: Attribute<(...), (...)>;
                    };
                    commands: {
                        moveColor: Command<(...), (...), (...)>;
                        moveToColor: Command<(...), (...), (...)>;
                        stepColor: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    xy: true;
                };
            }, {
                component: {
                    attributes: {
                        colorTemperatureMireds: Attribute<(...), (...)>;
                        colorTempPhysicalMaxMireds: Attribute<(...), (...)>;
                        colorTempPhysicalMinMireds: Attribute<(...), (...)>;
                        coupleColorTempToLevelMinMireds: OptionalAttribute<(...), (...)>;
                        startUpColorTemperatureMireds: OptionalWritableAttribute<(...), (...)>;
                    };
                    commands: {
                        moveColorTemperature: Command<(...), (...), (...)>;
                        moveToColorTemperature: Command<(...), (...), (...)>;
                        stepColorTemperature: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    colorTemperature: true;
                };
            }, {
                component: {
                    attributes: {
                        enhancedCurrentHue: Attribute<(...), (...)>;
                    };
                    commands: {
                        enhancedMoveHue: Command<(...), (...), (...)>;
                        enhancedMoveToHue: Command<(...), (...), (...)>;
                        enhancedMoveToHueAndSaturation: Command<(...), (...), (...)>;
                        enhancedStepHue: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    enhancedHue: true;
                };
            }, {
                component: {
                    attributes: {
                        colorLoopActive: Attribute<(...), (...)>;
                        colorLoopDirection: Attribute<(...), (...)>;
                        colorLoopStartEnhancedHue: Attribute<(...), (...)>;
                        colorLoopStoredEnhancedHue: Attribute<(...), (...)>;
                        colorLoopTime: Attribute<(...), (...)>;
                    };
                    commands: {
                        colorLoopSet: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    colorLoop: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    hueSaturation: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    xy: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    colorTemperature: true;
                };
            }];
            features: {
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            };
            id: 768;
            name: "ColorControl";
            revision: 6;
        }>, typeof ColorControlServerLogic>;
        features: TypeFromBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>;
        state: ClusterState<Of<{
            attributes: {
                colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                    colorLoop: BitFlag;
                    colorTemperature: BitFlag;
                    enhancedHue: BitFlag;
                    hueSaturation: BitFlag;
                    xy: BitFlag;
                }>, any>;
                colorMode: Attribute<ColorControl.ColorMode, any>;
                colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointBx: OptionalWritableAttribute<number, any>;
                colorPointBy: OptionalWritableAttribute<number, any>;
                colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointGx: OptionalWritableAttribute<number, any>;
                colorPointGy: OptionalWritableAttribute<number, any>;
                colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
                colorPointRx: OptionalWritableAttribute<number, any>;
                colorPointRy: OptionalWritableAttribute<number, any>;
                compensationText: OptionalAttribute<string, any>;
                driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
                enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
                numberOfPrimaries: FixedAttribute<null | number, any>;
                options: WritableAttribute<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>, any>;
                primary1Intensity: OptionalFixedAttribute<null | number, any>;
                primary1X: OptionalFixedAttribute<number, any>;
                primary1Y: OptionalFixedAttribute<number, any>;
                primary2Intensity: OptionalFixedAttribute<null | number, any>;
                primary2X: OptionalFixedAttribute<number, any>;
                primary2Y: OptionalFixedAttribute<number, any>;
                primary3Intensity: OptionalFixedAttribute<null | number, any>;
                primary3X: OptionalFixedAttribute<number, any>;
                primary3Y: OptionalFixedAttribute<number, any>;
                primary4Intensity: OptionalFixedAttribute<null | number, any>;
                primary4X: OptionalFixedAttribute<number, any>;
                primary4Y: OptionalFixedAttribute<number, any>;
                primary5Intensity: OptionalFixedAttribute<null | number, any>;
                primary5X: OptionalFixedAttribute<number, any>;
                primary5Y: OptionalFixedAttribute<number, any>;
                primary6Intensity: OptionalFixedAttribute<null | number, any>;
                primary6X: OptionalFixedAttribute<number, any>;
                primary6Y: OptionalFixedAttribute<number, any>;
                remainingTime: OptionalAttribute<number, any>;
                whitePointX: OptionalWritableAttribute<number, any>;
                whitePointY: OptionalWritableAttribute<number, any>;
            };
            extensions: readonly [{
                component: {
                    attributes: {
                        currentHue: Attribute<(...), (...)>;
                        currentSaturation: Attribute<(...), (...)>;
                    };
                    commands: {
                        moveHue: Command<(...), (...), (...)>;
                        moveSaturation: Command<(...), (...), (...)>;
                        moveToHue: Command<(...), (...), (...)>;
                        moveToHueAndSaturation: Command<(...), (...), (...)>;
                        moveToSaturation: Command<(...), (...), (...)>;
                        stepHue: Command<(...), (...), (...)>;
                        stepSaturation: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    hueSaturation: true;
                };
            }, {
                component: {
                    attributes: {
                        currentX: Attribute<(...), (...)>;
                        currentY: Attribute<(...), (...)>;
                    };
                    commands: {
                        moveColor: Command<(...), (...), (...)>;
                        moveToColor: Command<(...), (...), (...)>;
                        stepColor: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    xy: true;
                };
            }, {
                component: {
                    attributes: {
                        colorTemperatureMireds: Attribute<(...), (...)>;
                        colorTempPhysicalMaxMireds: Attribute<(...), (...)>;
                        colorTempPhysicalMinMireds: Attribute<(...), (...)>;
                        coupleColorTempToLevelMinMireds: OptionalAttribute<(...), (...)>;
                        startUpColorTemperatureMireds: OptionalWritableAttribute<(...), (...)>;
                    };
                    commands: {
                        moveColorTemperature: Command<(...), (...), (...)>;
                        moveToColorTemperature: Command<(...), (...), (...)>;
                        stepColorTemperature: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    colorTemperature: true;
                };
            }, {
                component: {
                    attributes: {
                        enhancedCurrentHue: Attribute<(...), (...)>;
                    };
                    commands: {
                        enhancedMoveHue: Command<(...), (...), (...)>;
                        enhancedMoveToHue: Command<(...), (...), (...)>;
                        enhancedMoveToHueAndSaturation: Command<(...), (...), (...)>;
                        enhancedStepHue: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    enhancedHue: true;
                };
            }, {
                component: {
                    attributes: {
                        colorLoopActive: Attribute<(...), (...)>;
                        colorLoopDirection: Attribute<(...), (...)>;
                        colorLoopStartEnhancedHue: Attribute<(...), (...)>;
                        colorLoopStoredEnhancedHue: Attribute<(...), (...)>;
                        colorLoopTime: Attribute<(...), (...)>;
                    };
                    commands: {
                        colorLoopSet: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    colorLoop: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    hueSaturation: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    xy: true;
                };
            }, {
                component: {
                    commands: {
                        stopMoveStep: Command<(...), (...), (...)>;
                    };
                };
                flags: {
                    colorTemperature: true;
                };
            }];
            features: {
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            };
            id: 768;
            name: "ColorControl";
            revision: 6;
        }>, typeof ColorControlServerLogic>;
        [asyncDispose](): MaybePromise<void>;
    }
    • ColorControlServer

Constructors

Properties

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

The implemented cluster.

colorPointBx: undefined | number
colorPointGx: undefined | number
colorPointGy: undefined | number
colorPointRx: undefined | number
colorPointRy: undefined | number
context: ActionContext
endpoint: Endpoint<Empty>
enhancedHue: number
events: EventEmitter & Omit<ClusterEvents<WithFeatures<ColorControl.Cluster, readonly [HueSaturation, EnhancedHue, ColorLoop, Xy, ColorTemperature]>, Type<ColorControl.Cluster, Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior, ColorControlInterface>, ColorControlInterface>>,
    | "options$Changing"
    | "options$Changed"
    | "colorMode$Changing"
    | "numberOfPrimaries$Changing"
    | "enhancedColorMode$Changing"
    | "colorCapabilities$Changing"
    | "remainingTime$Changing"
    | "driftCompensation$Changing"
    | "compensationText$Changing"
    | "primary1X$Changing"
    | "primary1Y$Changing"
    | "primary1Intensity$Changing"
    | "primary2X$Changing"
    | "primary2Y$Changing"
    | "primary2Intensity$Changing"
    | "primary3X$Changing"
    | "primary3Y$Changing"
    | "primary3Intensity$Changing"
    | "primary4X$Changing"
    | "primary4Y$Changing"
    | "primary4Intensity$Changing"
    | "primary5X$Changing"
    | "primary5Y$Changing"
    | "primary5Intensity$Changing"
    | "primary6X$Changing"
    | "primary6Y$Changing"
    | "primary6Intensity$Changing"
    | "whitePointX$Changing"
    | "whitePointY$Changing"
    | "colorPointRx$Changing"
    | "colorPointRy$Changing"
    | "colorPointRIntensity$Changing"
    | "colorPointGx$Changing"
    | "colorPointGy$Changing"
    | "colorPointGIntensity$Changing"
    | "colorPointBx$Changing"
    | "colorPointBy$Changing"
    | "colorPointBIntensity$Changing"
    | "colorMode$Changed"
    | "numberOfPrimaries$Changed"
    | "enhancedColorMode$Changed"
    | "colorCapabilities$Changed"
    | "remainingTime$Changed"
    | "driftCompensation$Changed"
    | "compensationText$Changed"
    | "primary1X$Changed"
    | "primary1Y$Changed"
    | "primary1Intensity$Changed"
    | "primary2X$Changed"
    | "primary2Y$Changed"
    | "primary2Intensity$Changed"
    | "primary3X$Changed"
    | "primary3Y$Changed"
    | "primary3Intensity$Changed"
    | "primary4X$Changed"
    | "primary4Y$Changed"
    | "primary4Intensity$Changed"
    | "primary5X$Changed"
    | "primary5Y$Changed"
    | "primary5Intensity$Changed"
    | "primary6X$Changed"
    | "primary6Y$Changed"
    | "primary6Intensity$Changed"
    | "whitePointX$Changed"
    | "whitePointY$Changed"
    | "colorPointRx$Changed"
    | "colorPointRy$Changed"
    | "colorPointRIntensity$Changed"
    | "colorPointGx$Changed"
    | "colorPointGy$Changed"
    | "colorPointGIntensity$Changed"
    | "colorPointBx$Changed"
    | "colorPointBy$Changed"
    | "colorPointBIntensity$Changed"
    | "currentHue$Changing"
    | "currentSaturation$Changing"
    | "currentX$Changing"
    | "currentY$Changing"
    | "colorTemperatureMireds$Changing"
    | "colorTempPhysicalMinMireds$Changing"
    | "colorTempPhysicalMaxMireds$Changing"
    | "enhancedCurrentHue$Changing"
    | "colorLoopActive$Changing"
    | "colorLoopDirection$Changing"
    | "colorLoopTime$Changing"
    | "colorLoopStartEnhancedHue$Changing"
    | "colorLoopStoredEnhancedHue$Changing"
    | "coupleColorTempToLevelMinMireds$Changing"
    | "startUpColorTemperatureMireds$Changing"
    | "currentHue$Changed"
    | "currentSaturation$Changed"
    | "currentX$Changed"
    | "currentY$Changed"
    | "colorTemperatureMireds$Changed"
    | "colorTempPhysicalMinMireds$Changed"
    | "colorTempPhysicalMaxMireds$Changed"
    | "enhancedCurrentHue$Changed"
    | "colorLoopActive$Changed"
    | "colorLoopDirection$Changed"
    | "colorLoopTime$Changed"
    | "colorLoopStartEnhancedHue$Changed"
    | "colorLoopStoredEnhancedHue$Changed"
    | "coupleColorTempToLevelMinMireds$Changed"
    | "startUpColorTemperatureMireds$Changed"> & {
    colorCapabilities$Changing: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>, any>>;
    colorMode$Changing: ClusterEvents.AttributeObservable<Attribute<ColorControl.ColorMode, any>>;
    enhancedColorMode$Changing: ClusterEvents.AttributeObservable<Attribute<ColorControl.EnhancedColorMode, any>>;
    numberOfPrimaries$Changing: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
    options$Changing: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>, any>>;
} & {
    colorPointBIntensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointBx$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointBy$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGIntensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointGx$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGy$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRIntensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointRx$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRy$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    compensationText$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<string, any>>;
    driftCompensation$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<ColorControl.DriftCompensation, any>>;
    primary1Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary1X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary1Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary2X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary3X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary4X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary5X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary6X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    remainingTime$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<number, any>>;
    whitePointX$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    whitePointY$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
} & {
    colorCapabilities$Changed: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>, any>>;
    colorMode$Changed: ClusterEvents.AttributeObservable<Attribute<ColorControl.ColorMode, any>>;
    enhancedColorMode$Changed: ClusterEvents.AttributeObservable<Attribute<ColorControl.EnhancedColorMode, any>>;
    numberOfPrimaries$Changed: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
    options$Changed: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>, any>>;
} & {
    colorPointBIntensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointBx$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointBy$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGIntensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointGx$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGy$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRIntensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointRx$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRy$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    compensationText$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<string, any>>;
    driftCompensation$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<ColorControl.DriftCompensation, any>>;
    primary1Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary1X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary1Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary2X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary3X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary4X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary5X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary6X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    remainingTime$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<number, any>>;
    whitePointX$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    whitePointY$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
} & {} & {}

Access the behavior's events.

features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
    colorLoop: BitFlag;
    colorTemperature: BitFlag;
    enhancedHue: BitFlag;
    hueSaturation: BitFlag;
    xy: BitFlag;
}> & TypeFromBitSchema<{
    colorLoop: BitFlag;
    colorTemperature: BitFlag;
    enhancedHue: BitFlag;
    hueSaturation: BitFlag;
    xy: BitFlag;
}>

Supported features as a flag object.

hue: number
kelvin: number
maximumColorTemperatureMireds: number
minimumColorTemperatureMireds: number
mireds: number
saturation: number
session: SecureSession
state: Omit<State,
    | "remainingTime"
    | "options"
    | "currentHue"
    | "currentSaturation"
    | "currentX"
    | "currentY"
    | "colorTemperatureMireds"
    | "colorTempPhysicalMinMireds"
    | "colorTempPhysicalMaxMireds"
    | "coupleColorTempToLevelMinMireds"
    | "startUpColorTemperatureMireds"
    | "enhancedCurrentHue"
    | "colorLoopActive"
    | "colorLoopDirection"
    | "colorLoopTime"
    | "colorLoopStartEnhancedHue"
    | "colorLoopStoredEnhancedHue"
    | "driftCompensation"
    | "compensationText"
    | "colorMode"
    | "numberOfPrimaries"
    | "primary1X"
    | "primary1Y"
    | "primary1Intensity"
    | "primary2X"
    | "primary2Y"
    | "primary2Intensity"
    | "primary3X"
    | "primary3Y"
    | "primary3Intensity"
    | "primary4X"
    | "primary4Y"
    | "primary4Intensity"
    | "primary5X"
    | "primary5Y"
    | "primary5Intensity"
    | "primary6X"
    | "primary6Y"
    | "primary6Intensity"
    | "whitePointX"
    | "whitePointY"
    | "colorPointRx"
    | "colorPointRy"
    | "colorPointRIntensity"
    | "colorPointGx"
    | "colorPointGy"
    | "colorPointGIntensity"
    | "colorPointBx"
    | "colorPointBy"
    | "colorPointBIntensity"
    | "enhancedColorMode"
    | "colorCapabilities"> & {
    colorCapabilities: TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>;
    colorMode: ColorControl.ColorMode;
    enhancedColorMode: ColorControl.EnhancedColorMode;
    options: TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>;
} & {
    colorPointBIntensity?: null | number;
    colorPointBx?: number;
    colorPointBy?: number;
    colorPointGIntensity?: null | number;
    colorPointGx?: number;
    colorPointGy?: number;
    colorPointRIntensity?: null | number;
    colorPointRx?: number;
    colorPointRy?: number;
    compensationText?: string;
    driftCompensation?: ColorControl.DriftCompensation;
    remainingTime?: number;
    whitePointX?: number;
    whitePointY?: number;
} & {
    numberOfPrimaries: null | number;
} & {
    primary1Intensity?: null | number;
    primary1X?: number;
    primary1Y?: number;
    primary2Intensity?: null | number;
    primary2X?: number;
    primary2Y?: number;
    primary3Intensity?: null | number;
    primary3X?: number;
    primary3Y?: number;
    primary4Intensity?: null | number;
    primary4X?: number;
    primary4Y?: number;
    primary5Intensity?: null | number;
    primary5X?: number;
    primary5Y?: number;
    primary6Intensity?: null | number;
    primary6X?: number;
    primary6Y?: number;
}

Access the behavior's state.

Type declaration

  • ReadonlycolorCapabilities: TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>

    Bits 0-4 of the ColorCapabilities attribute shall have the same values as the corresponding bits of the FeatureMap attribute. All other bits in ColorCapabilities shall be 0.

    MatterSpecification.v13.Cluster § 3.2.7.19

  • ReadonlycolorMode: ColorControl.ColorMode

    The ColorMode attribute indicates which attributes are currently determining the color of the device.

    The value of the ColorMode attribute cannot be written directly - it is set upon reception of any command in section Commands to the appropriate mode for that command.

    Table 9. Values of the ColorMode Attribute

    MatterSpecification.v13.Cluster § 3.2.7.10

  • ReadonlyenhancedColorMode: ColorControl.EnhancedColorMode

    The EnhancedColorMode attribute specifies which attributes are currently determining the color of the device, as detailed in Values of the EnhancedColorMode Attribute.

    To provide compatibility with standard ZCL, the original ColorMode attribute shall indicate ‘CurrentHue and CurrentSaturation’ when the light uses the EnhancedCurrentHue attribute. If the ColorMode attribute is changed, e.g., due to one of the standard Color Control cluster commands defined in the ZCL, its new value shall be copied to the EnhancedColorMode attribute.

    MatterSpecification.v13.Cluster § 3.2.7.13

  • Readonlyoptions: TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>

    The Options attribute is meant to be changed only during commissioning. The Options attribute is a bitmap that determines the default behavior of some cluster commands. Each command that is dependent on the Options attribute shall first construct a temporary Options bitmap that is in effect during the command processing. The temporary Options bitmap has the same format and meaning as the Options attribute, but includes any bits that may be overridden by command fields.

    Below is the format and description of the Options attribute and temporary Options bitmap and the effect on dependent commands.

    Table 10. Options Attribute

    ExecuteIfOff Options bit: Command execution shall NOT continue beyond the Options processing if all of these criteria are true:

    • The On/Off cluster exists on the same endpoint as this cluster.

    • The OnOff attribute of the On/Off cluster, on this endpoint, is FALSE.

    • The value of the ExecuteIfOff bit is 0.

    MatterSpecification.v13.Cluster § 3.2.7.11

Type declaration

  • Optional ReadonlycolorPointBIntensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.10

  • Optional ReadonlycolorPointBx?: number

    MatterSpecification.v13.Cluster § 3.2.10

  • Optional ReadonlycolorPointBy?: number

    MatterSpecification.v13.Cluster § 3.2.10

  • Optional ReadonlycolorPointGIntensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.10

  • Optional ReadonlycolorPointGx?: number

    MatterSpecification.v13.Cluster § 3.2.10

  • Optional ReadonlycolorPointGy?: number

    MatterSpecification.v13.Cluster § 3.2.10

  • Optional ReadonlycolorPointRIntensity?: null | number

    The ColorPointRIntensity attribute contains a representation of the relative intensity of the red color point as defined in the Dimming Light Curve in the Ballast Configuration cluster (see Ballast Configuration Cluster), normalized such that the color point with the highest relative intensity contains the value 0xFE.

    A value of null shall indicate an invalid value.

    MatterSpecification.v13.Cluster § 3.2.10.5

  • Optional ReadonlycolorPointRx?: number

    The ColorPointRX attribute contains the normalized chromaticity value x, as defined in the CIE xyY Color Space, of the red color point of the device.

    The value of x shall be related to the ColorPointRX attribute by the relationship x = ColorPointRX / 65536 (ColorPointRX in the range 0 to 65279 inclusive)

    MatterSpecification.v13.Cluster § 3.2.10.3

  • Optional ReadonlycolorPointRy?: number

    The ColorPointRY attribute contains the normalized chromaticity value y, as defined in the CIE xyY Color Space, of the red color point of the device.

    The value of y shall be related to the ColorPointRY attribute by the relationship y = ColorPointRY / 65536 (ColorPointRY in the range 0 to 65279 inclusive)

    MatterSpecification.v13.Cluster § 3.2.10.4

  • Optional ReadonlycompensationText?: string

    The CompensationText attribute holds a textual indication of what mechanism, if any, is in use to compensate for color/intensity drift over time.

    MatterSpecification.v13.Cluster § 3.2.7.8

  • Optional ReadonlydriftCompensation?: ColorControl.DriftCompensation

    The DriftCompensation attribute indicates what mechanism, if any, is in use for compensation for color/intensity drift over time. It shall be one of the non-reserved values in Values of the DriftCompensation Attribute.

    MatterSpecification.v13.Cluster § 3.2.7.7

  • Optional ReadonlyremainingTime?: number

    The RemainingTime attribute holds the time remaining, in 1/10ths of a second, until the currently active command will be complete.

    MatterSpecification.v13.Cluster § 3.2.7.4

  • Optional ReadonlywhitePointX?: number

    The WhitePointX attribute contains the normalized chromaticity value x, as defined in the CIE xyY Color Space, of the current white point of the device.

    The value of x shall be related to the WhitePointX attribute by the relationship x = WhitePointX / 65536 (WhitePointX in the range 0 to 65279 inclusive)

    MatterSpecification.v13.Cluster § 3.2.10.1

  • Optional ReadonlywhitePointY?: number

    The WhitePointY attribute contains the normalized chromaticity value y, as defined in the CIE xyY

    Color Space, of the current white point of the device.

    The value of y shall be related to the WhitePointY attribute by the relationship y = WhitePointY / 65536 (WhitePointY in the range 0 to 65279 inclusive)

    MatterSpecification.v13.Cluster § 3.2.10.2

Type declaration

  • ReadonlynumberOfPrimaries: null | number

    The NumberOfPrimaries attribute contains the number of color primaries implemented on this device. A value of null shall indicate that the number of primaries is unknown.

    Where this attribute is implemented, the attributes below for indicating the “x” and “y” color values of the primaries shall also be implemented for each of the primaries from 1 to NumberOfPrimaries, without leaving gaps. Implementation of the Primary1Intensity attribute and subsequent intensity attributes is optional.

    MatterSpecification.v13.Cluster § 3.2.8.1

Type declaration

  • Optional Readonlyprimary1Intensity?: null | number

    The Primary1intensity attribute contains a representation of the maximum intensity of this primary as defined in the Dimming Light Curve in the Ballast Configuration cluster (see Ballast Configuration Cluster), normalized such that the primary with the highest maximum intensity contains the value 0xFE.

    A value of null shall indicate that this primary is not available.

    MatterSpecification.v13.Cluster § 3.2.8.4

  • Optional Readonlyprimary1X?: number

    The Primary1X attribute contains the normalized chromaticity value x for this primary, as defined in the CIE xyY Color Space.

    The value of x shall be related to the Primary1X attribute by the relationship x = Primary1X / 65536 (Primary1X in the range 0 to 65279 inclusive)

    MatterSpecification.v13.Cluster § 3.2.8.2

  • Optional Readonlyprimary1Y?: number

    The Primary1Y attribute contains the normalized chromaticity value y for this primary, as defined in the CIE xyY Color Space.

    The value of y shall be related to the Primary1Y attribute by the relationship y = Primary1Y / 65536 (Primary1Y in the range 0 to 65279 inclusive)

    MatterSpecification.v13.Cluster § 3.2.8.3

  • Optional Readonlyprimary2Intensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.8

  • Optional Readonlyprimary2X?: number

    MatterSpecification.v13.Cluster § 3.2.8

  • Optional Readonlyprimary2Y?: number

    MatterSpecification.v13.Cluster § 3.2.8

  • Optional Readonlyprimary3Intensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.8

  • Optional Readonlyprimary3X?: number

    MatterSpecification.v13.Cluster § 3.2.8

  • Optional Readonlyprimary3Y?: number

    MatterSpecification.v13.Cluster § 3.2.8

  • Optional Readonlyprimary4Intensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary4X?: number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary4Y?: number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary5Intensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary5X?: number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary5Y?: number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary6Intensity?: null | number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary6X?: number

    MatterSpecification.v13.Cluster § 3.2.9

  • Optional Readonlyprimary6Y?: number

    MatterSpecification.v13.Cluster § 3.2.9

whitePointX: undefined | number
whitePointY: undefined | number
x: number
y: number
cluster: Of<{
    attributes: {
        colorCapabilities: Attribute<TypeFromPartialBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>, any>;
        colorMode: Attribute<ColorControl.ColorMode, any>;
        colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointBx: OptionalWritableAttribute<number, any>;
        colorPointBy: OptionalWritableAttribute<number, any>;
        colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointGx: OptionalWritableAttribute<number, any>;
        colorPointGy: OptionalWritableAttribute<number, any>;
        colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointRx: OptionalWritableAttribute<number, any>;
        colorPointRy: OptionalWritableAttribute<number, any>;
        compensationText: OptionalAttribute<string, any>;
        driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
        enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
        numberOfPrimaries: FixedAttribute<null | number, any>;
        options: WritableAttribute<TypeFromPartialBitSchema<{
            executeIfOff: BitFlag;
        }>, any>;
        primary1Intensity: OptionalFixedAttribute<null | number, any>;
        primary1X: OptionalFixedAttribute<number, any>;
        primary1Y: OptionalFixedAttribute<number, any>;
        primary2Intensity: OptionalFixedAttribute<null | number, any>;
        primary2X: OptionalFixedAttribute<number, any>;
        primary2Y: OptionalFixedAttribute<number, any>;
        primary3Intensity: OptionalFixedAttribute<null | number, any>;
        primary3X: OptionalFixedAttribute<number, any>;
        primary3Y: OptionalFixedAttribute<number, any>;
        primary4Intensity: OptionalFixedAttribute<null | number, any>;
        primary4X: OptionalFixedAttribute<number, any>;
        primary4Y: OptionalFixedAttribute<number, any>;
        primary5Intensity: OptionalFixedAttribute<null | number, any>;
        primary5X: OptionalFixedAttribute<number, any>;
        primary5Y: OptionalFixedAttribute<number, any>;
        primary6Intensity: OptionalFixedAttribute<null | number, any>;
        primary6X: OptionalFixedAttribute<number, any>;
        primary6Y: OptionalFixedAttribute<number, any>;
        remainingTime: OptionalAttribute<number, any>;
        whitePointX: OptionalWritableAttribute<number, any>;
        whitePointY: OptionalWritableAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                currentHue: Attribute<number, any>;
                currentSaturation: Attribute<number, any>;
            };
            commands: {
                moveHue: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rateX: FieldType<number>;
                    rateY: FieldType<number>;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: FieldType<number>;
                    colorY: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepX: FieldType<number>;
                    stepY: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            attributes: {
                colorTemperatureMireds: Attribute<number, any>;
                colorTempPhysicalMaxMireds: Attribute<number, any>;
                colorTempPhysicalMinMireds: Attribute<number, any>;
                coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
            };
            commands: {
                moveColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            enhancedHue: true;
        };
    }, {
        component: {
            attributes: {
                colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                colorLoopStartEnhancedHue: Attribute<number, any>;
                colorLoopStoredEnhancedHue: Attribute<number, any>;
                colorLoopTime: Attribute<number, any>;
            };
            commands: {
                colorLoopSet: Command<TypeFromFields<{
                    action: FieldType<ColorControl.Action>;
                    direction: FieldType<ColorControl.ColorLoopSetDirection>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    startHue: FieldType<number>;
                    time: FieldType<number>;
                    updateFlags: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: 768;
    name: "ColorControl";
    revision: 6;
}>

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

Type declaration

  • Readonlyattributes: {
        colorCapabilities: Attribute<TypeFromPartialBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>, any>;
        colorMode: Attribute<ColorControl.ColorMode, any>;
        colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointBx: OptionalWritableAttribute<number, any>;
        colorPointBy: OptionalWritableAttribute<number, any>;
        colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointGx: OptionalWritableAttribute<number, any>;
        colorPointGy: OptionalWritableAttribute<number, any>;
        colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointRx: OptionalWritableAttribute<number, any>;
        colorPointRy: OptionalWritableAttribute<number, any>;
        compensationText: OptionalAttribute<string, any>;
        driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
        enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
        numberOfPrimaries: FixedAttribute<null | number, any>;
        options: WritableAttribute<TypeFromPartialBitSchema<{
            executeIfOff: BitFlag;
        }>, any>;
        primary1Intensity: OptionalFixedAttribute<null | number, any>;
        primary1X: OptionalFixedAttribute<number, any>;
        primary1Y: OptionalFixedAttribute<number, any>;
        primary2Intensity: OptionalFixedAttribute<null | number, any>;
        primary2X: OptionalFixedAttribute<number, any>;
        primary2Y: OptionalFixedAttribute<number, any>;
        primary3Intensity: OptionalFixedAttribute<null | number, any>;
        primary3X: OptionalFixedAttribute<number, any>;
        primary3Y: OptionalFixedAttribute<number, any>;
        primary4Intensity: OptionalFixedAttribute<null | number, any>;
        primary4X: OptionalFixedAttribute<number, any>;
        primary4Y: OptionalFixedAttribute<number, any>;
        primary5Intensity: OptionalFixedAttribute<null | number, any>;
        primary5X: OptionalFixedAttribute<number, any>;
        primary5Y: OptionalFixedAttribute<number, any>;
        primary6Intensity: OptionalFixedAttribute<null | number, any>;
        primary6X: OptionalFixedAttribute<number, any>;
        primary6Y: OptionalFixedAttribute<number, any>;
        remainingTime: OptionalAttribute<number, any>;
        whitePointX: OptionalWritableAttribute<number, any>;
        whitePointY: OptionalWritableAttribute<number, any>;
    }
    • ReadonlycolorCapabilities: Attribute<TypeFromPartialBitSchema<{
          colorLoop: BitFlag;
          colorTemperature: BitFlag;
          enhancedHue: BitFlag;
          hueSaturation: BitFlag;
          xy: BitFlag;
      }>, any>

      Bits 0-4 of the ColorCapabilities attribute shall have the same values as the corresponding bits of the FeatureMap attribute. All other bits in ColorCapabilities shall be 0.

      MatterSpecification.v13.Cluster § 3.2.7.19

    • ReadonlycolorMode: Attribute<ColorControl.ColorMode, any>

      The ColorMode attribute indicates which attributes are currently determining the color of the device.

      The value of the ColorMode attribute cannot be written directly - it is set upon reception of any command in section Commands to the appropriate mode for that command.

      Table 9. Values of the ColorMode Attribute

      MatterSpecification.v13.Cluster § 3.2.7.10

    • ReadonlycolorPointBIntensity: OptionalWritableAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.10

    • ReadonlycolorPointBx: OptionalWritableAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.10

    • ReadonlycolorPointBy: OptionalWritableAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.10

    • ReadonlycolorPointGIntensity: OptionalWritableAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.10

    • ReadonlycolorPointGx: OptionalWritableAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.10

    • ReadonlycolorPointGy: OptionalWritableAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.10

    • ReadonlycolorPointRIntensity: OptionalWritableAttribute<null | number, any>

      The ColorPointRIntensity attribute contains a representation of the relative intensity of the red color point as defined in the Dimming Light Curve in the Ballast Configuration cluster (see Ballast Configuration Cluster), normalized such that the color point with the highest relative intensity contains the value 0xFE.

      A value of null shall indicate an invalid value.

      MatterSpecification.v13.Cluster § 3.2.10.5

    • ReadonlycolorPointRx: OptionalWritableAttribute<number, any>

      The ColorPointRX attribute contains the normalized chromaticity value x, as defined in the CIE xyY Color Space, of the red color point of the device.

      The value of x shall be related to the ColorPointRX attribute by the relationship x = ColorPointRX / 65536 (ColorPointRX in the range 0 to 65279 inclusive)

      MatterSpecification.v13.Cluster § 3.2.10.3

    • ReadonlycolorPointRy: OptionalWritableAttribute<number, any>

      The ColorPointRY attribute contains the normalized chromaticity value y, as defined in the CIE xyY Color Space, of the red color point of the device.

      The value of y shall be related to the ColorPointRY attribute by the relationship y = ColorPointRY / 65536 (ColorPointRY in the range 0 to 65279 inclusive)

      MatterSpecification.v13.Cluster § 3.2.10.4

    • ReadonlycompensationText: OptionalAttribute<string, any>

      The CompensationText attribute holds a textual indication of what mechanism, if any, is in use to compensate for color/intensity drift over time.

      MatterSpecification.v13.Cluster § 3.2.7.8

    • ReadonlydriftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>

      The DriftCompensation attribute indicates what mechanism, if any, is in use for compensation for color/intensity drift over time. It shall be one of the non-reserved values in Values of the DriftCompensation Attribute.

      MatterSpecification.v13.Cluster § 3.2.7.7

    • ReadonlyenhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>

      The EnhancedColorMode attribute specifies which attributes are currently determining the color of the device, as detailed in Values of the EnhancedColorMode Attribute.

      To provide compatibility with standard ZCL, the original ColorMode attribute shall indicate ‘CurrentHue and CurrentSaturation’ when the light uses the EnhancedCurrentHue attribute. If the ColorMode attribute is changed, e.g., due to one of the standard Color Control cluster commands defined in the ZCL, its new value shall be copied to the EnhancedColorMode attribute.

      MatterSpecification.v13.Cluster § 3.2.7.13

    • ReadonlynumberOfPrimaries: FixedAttribute<null | number, any>

      The NumberOfPrimaries attribute contains the number of color primaries implemented on this device. A value of null shall indicate that the number of primaries is unknown.

      Where this attribute is implemented, the attributes below for indicating the “x” and “y” color values of the primaries shall also be implemented for each of the primaries from 1 to NumberOfPrimaries, without leaving gaps. Implementation of the Primary1Intensity attribute and subsequent intensity attributes is optional.

      MatterSpecification.v13.Cluster § 3.2.8.1

    • Readonlyoptions: WritableAttribute<TypeFromPartialBitSchema<{
          executeIfOff: BitFlag;
      }>, any>

      The Options attribute is meant to be changed only during commissioning. The Options attribute is a bitmap that determines the default behavior of some cluster commands. Each command that is dependent on the Options attribute shall first construct a temporary Options bitmap that is in effect during the command processing. The temporary Options bitmap has the same format and meaning as the Options attribute, but includes any bits that may be overridden by command fields.

      Below is the format and description of the Options attribute and temporary Options bitmap and the effect on dependent commands.

      Table 10. Options Attribute

      ExecuteIfOff Options bit: Command execution shall NOT continue beyond the Options processing if all of these criteria are true:

      • The On/Off cluster exists on the same endpoint as this cluster.

      • The OnOff attribute of the On/Off cluster, on this endpoint, is FALSE.

      • The value of the ExecuteIfOff bit is 0.

      MatterSpecification.v13.Cluster § 3.2.7.11

    • Readonlyprimary1Intensity: OptionalFixedAttribute<null | number, any>

      The Primary1intensity attribute contains a representation of the maximum intensity of this primary as defined in the Dimming Light Curve in the Ballast Configuration cluster (see Ballast Configuration Cluster), normalized such that the primary with the highest maximum intensity contains the value 0xFE.

      A value of null shall indicate that this primary is not available.

      MatterSpecification.v13.Cluster § 3.2.8.4

    • Readonlyprimary1X: OptionalFixedAttribute<number, any>

      The Primary1X attribute contains the normalized chromaticity value x for this primary, as defined in the CIE xyY Color Space.

      The value of x shall be related to the Primary1X attribute by the relationship x = Primary1X / 65536 (Primary1X in the range 0 to 65279 inclusive)

      MatterSpecification.v13.Cluster § 3.2.8.2

    • Readonlyprimary1Y: OptionalFixedAttribute<number, any>

      The Primary1Y attribute contains the normalized chromaticity value y for this primary, as defined in the CIE xyY Color Space.

      The value of y shall be related to the Primary1Y attribute by the relationship y = Primary1Y / 65536 (Primary1Y in the range 0 to 65279 inclusive)

      MatterSpecification.v13.Cluster § 3.2.8.3

    • Readonlyprimary2Intensity: OptionalFixedAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.8

    • Readonlyprimary2X: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.8

    • Readonlyprimary2Y: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.8

    • Readonlyprimary3Intensity: OptionalFixedAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.8

    • Readonlyprimary3X: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.8

    • Readonlyprimary3Y: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.8

    • Readonlyprimary4Intensity: OptionalFixedAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary4X: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary4Y: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary5Intensity: OptionalFixedAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary5X: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary5Y: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary6Intensity: OptionalFixedAttribute<null | number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary6X: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • Readonlyprimary6Y: OptionalFixedAttribute<number, any>

      MatterSpecification.v13.Cluster § 3.2.9

    • ReadonlyremainingTime: OptionalAttribute<number, any>

      The RemainingTime attribute holds the time remaining, in 1/10ths of a second, until the currently active command will be complete.

      MatterSpecification.v13.Cluster § 3.2.7.4

    • ReadonlywhitePointX: OptionalWritableAttribute<number, any>

      The WhitePointX attribute contains the normalized chromaticity value x, as defined in the CIE xyY Color Space, of the current white point of the device.

      The value of x shall be related to the WhitePointX attribute by the relationship x = WhitePointX / 65536 (WhitePointX in the range 0 to 65279 inclusive)

      MatterSpecification.v13.Cluster § 3.2.10.1

    • ReadonlywhitePointY: OptionalWritableAttribute<number, any>

      The WhitePointY attribute contains the normalized chromaticity value y, as defined in the CIE xyY

      Color Space, of the current white point of the device.

      The value of y shall be related to the WhitePointY attribute by the relationship y = WhitePointY / 65536 (WhitePointY in the range 0 to 65279 inclusive)

      MatterSpecification.v13.Cluster § 3.2.10.2

  • Readonlyextensions: readonly [{
        component: {
            attributes: {
                currentHue: Attribute<number, any>;
                currentSaturation: Attribute<number, any>;
            };
            commands: {
                moveHue: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rateX: FieldType<number>;
                    rateY: FieldType<number>;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: FieldType<number>;
                    colorY: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepX: FieldType<number>;
                    stepY: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            attributes: {
                colorTemperatureMireds: Attribute<number, any>;
                colorTempPhysicalMaxMireds: Attribute<number, any>;
                colorTempPhysicalMinMireds: Attribute<number, any>;
                coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
            };
            commands: {
                moveColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            enhancedHue: true;
        };
    }, {
        component: {
            attributes: {
                colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                colorLoopStartEnhancedHue: Attribute<number, any>;
                colorLoopStoredEnhancedHue: Attribute<number, any>;
                colorLoopTime: Attribute<number, any>;
            };
            commands: {
                colorLoopSet: Command<TypeFromFields<{
                    action: FieldType<ColorControl.Action>;
                    direction: FieldType<ColorControl.ColorLoopSetDirection>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    startHue: FieldType<number>;
                    time: FieldType<number>;
                    updateFlags: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }]

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

  • Readonlyfeatures: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }
    • ReadonlycolorLoop: BitFlag

      ColorLoop

      Color loop is supported.

    • ReadonlycolorTemperature: BitFlag

      ColorTemperature

      Supports specification of color temperature.

    • ReadonlyenhancedHue: BitFlag

      EnhancedHue

      Enhanced hue is supported.

    • ReadonlyhueSaturation: BitFlag

      HueSaturation

      Supports color specification via hue/saturation.

    • Readonlyxy: BitFlag

      Xy

      Supports color specification via XY.

  • Readonlyid: 768
  • Readonlyname: "ColorControl"
  • Readonlyrevision: 6
defaults: ClusterState.Type<Of<{
    attributes: {
        colorCapabilities: Attribute<TypeFromPartialBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>, any>;
        colorMode: Attribute<ColorControl.ColorMode, any>;
        colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointBx: OptionalWritableAttribute<number, any>;
        colorPointBy: OptionalWritableAttribute<number, any>;
        colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointGx: OptionalWritableAttribute<number, any>;
        colorPointGy: OptionalWritableAttribute<number, any>;
        colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointRx: OptionalWritableAttribute<number, any>;
        colorPointRy: OptionalWritableAttribute<number, any>;
        compensationText: OptionalAttribute<string, any>;
        driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
        enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
        numberOfPrimaries: FixedAttribute<null | number, any>;
        options: WritableAttribute<TypeFromPartialBitSchema<{
            executeIfOff: BitFlag;
        }>, any>;
        primary1Intensity: OptionalFixedAttribute<null | number, any>;
        primary1X: OptionalFixedAttribute<number, any>;
        primary1Y: OptionalFixedAttribute<number, any>;
        primary2Intensity: OptionalFixedAttribute<null | number, any>;
        primary2X: OptionalFixedAttribute<number, any>;
        primary2Y: OptionalFixedAttribute<number, any>;
        primary3Intensity: OptionalFixedAttribute<null | number, any>;
        primary3X: OptionalFixedAttribute<number, any>;
        primary3Y: OptionalFixedAttribute<number, any>;
        primary4Intensity: OptionalFixedAttribute<null | number, any>;
        primary4X: OptionalFixedAttribute<number, any>;
        primary4Y: OptionalFixedAttribute<number, any>;
        primary5Intensity: OptionalFixedAttribute<null | number, any>;
        primary5X: OptionalFixedAttribute<number, any>;
        primary5Y: OptionalFixedAttribute<number, any>;
        primary6Intensity: OptionalFixedAttribute<null | number, any>;
        primary6X: OptionalFixedAttribute<number, any>;
        primary6Y: OptionalFixedAttribute<number, any>;
        remainingTime: OptionalAttribute<number, any>;
        whitePointX: OptionalWritableAttribute<number, any>;
        whitePointY: OptionalWritableAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                currentHue: Attribute<number, any>;
                currentSaturation: Attribute<number, any>;
            };
            commands: {
                moveHue: Command<TypeFromFields<{
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: FieldType<(...)>;
                    hue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    saturation: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    saturation: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rateX: FieldType<(...)>;
                    rateY: FieldType<(...)>;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: FieldType<(...)>;
                    colorY: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepX: FieldType<(...)>;
                    stepY: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            attributes: {
                colorTemperatureMireds: Attribute<number, any>;
                colorTempPhysicalMaxMireds: Attribute<number, any>;
                colorTempPhysicalMinMireds: Attribute<number, any>;
                coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
            };
            commands: {
                moveColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<(...)>;
                    colorTemperatureMinimumMireds: FieldType<(...)>;
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<(...)>;
                    colorTemperatureMinimumMireds: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: FieldType<(...)>;
                    enhancedHue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    saturation: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            enhancedHue: true;
        };
    }, {
        component: {
            attributes: {
                colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                colorLoopStartEnhancedHue: Attribute<number, any>;
                colorLoopStoredEnhancedHue: Attribute<number, any>;
                colorLoopTime: Attribute<number, any>;
            };
            commands: {
                colorLoopSet: Command<TypeFromFields<{
                    action: FieldType<(...)>;
                    direction: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    startHue: FieldType<(...)>;
                    time: FieldType<(...)>;
                    updateFlags: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: 768;
    name: "ColorControl";
    revision: 6;
}>, typeof ColorControlServerLogic>
dependencies?: Iterable<Type, any, any>
early: boolean
Events: ClusterEvents.Type<Of<{
    attributes: {
        colorCapabilities: Attribute<TypeFromPartialBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>, any>;
        colorMode: Attribute<ColorControl.ColorMode, any>;
        colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointBx: OptionalWritableAttribute<number, any>;
        colorPointBy: OptionalWritableAttribute<number, any>;
        colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointGx: OptionalWritableAttribute<number, any>;
        colorPointGy: OptionalWritableAttribute<number, any>;
        colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointRx: OptionalWritableAttribute<number, any>;
        colorPointRy: OptionalWritableAttribute<number, any>;
        compensationText: OptionalAttribute<string, any>;
        driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
        enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
        numberOfPrimaries: FixedAttribute<null | number, any>;
        options: WritableAttribute<TypeFromPartialBitSchema<{
            executeIfOff: BitFlag;
        }>, any>;
        primary1Intensity: OptionalFixedAttribute<null | number, any>;
        primary1X: OptionalFixedAttribute<number, any>;
        primary1Y: OptionalFixedAttribute<number, any>;
        primary2Intensity: OptionalFixedAttribute<null | number, any>;
        primary2X: OptionalFixedAttribute<number, any>;
        primary2Y: OptionalFixedAttribute<number, any>;
        primary3Intensity: OptionalFixedAttribute<null | number, any>;
        primary3X: OptionalFixedAttribute<number, any>;
        primary3Y: OptionalFixedAttribute<number, any>;
        primary4Intensity: OptionalFixedAttribute<null | number, any>;
        primary4X: OptionalFixedAttribute<number, any>;
        primary4Y: OptionalFixedAttribute<number, any>;
        primary5Intensity: OptionalFixedAttribute<null | number, any>;
        primary5X: OptionalFixedAttribute<number, any>;
        primary5Y: OptionalFixedAttribute<number, any>;
        primary6Intensity: OptionalFixedAttribute<null | number, any>;
        primary6X: OptionalFixedAttribute<number, any>;
        primary6Y: OptionalFixedAttribute<number, any>;
        remainingTime: OptionalAttribute<number, any>;
        whitePointX: OptionalWritableAttribute<number, any>;
        whitePointY: OptionalWritableAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                currentHue: Attribute<number, any>;
                currentSaturation: Attribute<number, any>;
            };
            commands: {
                moveHue: Command<TypeFromFields<{
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: FieldType<(...)>;
                    hue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    saturation: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    saturation: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rateX: FieldType<(...)>;
                    rateY: FieldType<(...)>;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: FieldType<(...)>;
                    colorY: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepX: FieldType<(...)>;
                    stepY: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            attributes: {
                colorTemperatureMireds: Attribute<number, any>;
                colorTempPhysicalMaxMireds: Attribute<number, any>;
                colorTempPhysicalMinMireds: Attribute<number, any>;
                coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
            };
            commands: {
                moveColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<(...)>;
                    colorTemperatureMinimumMireds: FieldType<(...)>;
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<(...)>;
                    colorTemperatureMinimumMireds: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    rate: FieldType<(...)>;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: FieldType<(...)>;
                    enhancedHue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    saturation: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    stepMode: FieldType<(...)>;
                    stepSize: FieldType<(...)>;
                    transitionTime: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            enhancedHue: true;
        };
    }, {
        component: {
            attributes: {
                colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                colorLoopStartEnhancedHue: Attribute<number, any>;
                colorLoopStoredEnhancedHue: Attribute<number, any>;
                colorLoopTime: Attribute<number, any>;
            };
            commands: {
                colorLoopSet: Command<TypeFromFields<{
                    action: FieldType<(...)>;
                    direction: FieldType<(...)>;
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                    startHue: FieldType<(...)>;
                    time: FieldType<(...)>;
                    updateFlags: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<(...)>;
                    optionsOverride: FieldType<(...)>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: 768;
    name: "ColorControl";
    revision: 6;
}>, typeof ColorControlServerLogic>
ExtensionInterface: {
    moveColorLogic(rateX: number, rateY: number): MaybePromise;
    moveColorTemperatureLogic(moveMode: ColorControl.MoveMode, rate: number, colorTemperatureMinimumMireds: number, colorTemperatureMaximumMireds: number): MaybePromise;
    moveHueLogic(moveMode: ColorControl.MoveMode, rate: number, isEnhancedHue: boolean): MaybePromise;
    moveSaturationLogic(moveMode: ColorControl.MoveMode, rate: number): MaybePromise;
    moveToColorLogic(targetX: number, targetY: number, transitionTime: number): MaybePromise;
    moveToColorTemperatureLogic(targetMireds: number, transitionTime: number): MaybePromise;
    moveToEnhancedHueAndSaturationLogic(targetEnhancedHue: number, targetSaturation: number, transitionTime: number): MaybePromise;
    moveToHueAndSaturationLogic(targetHue: number, targetSaturation: number, transitionTime: number): MaybePromise;
    moveToHueLogic(targetHue: number, direction: ColorControl.Direction, transitionTime: number, isEnhancedHue: boolean): MaybePromise;
    moveToSaturationLogic(targetSaturation: number, transitionTime: number): MaybePromise;
    setColorMode(mode: ColorControl.ColorMode): MaybePromise;
    setEnhancedColorMode(mode: ColorControl.EnhancedColorMode): MaybePromise;
    startColorLoopLogic(startHue: number): MaybePromise;
    stepColorLogic(stepX: number, stepY: number, transitionTime: number): MaybePromise;
    stepColorTemperatureLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number, colorTemperatureMinimumMireds: number, colorTemperatureMaximumMireds: number): MaybePromise;
    stepHueLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number, isEnhancedHue: boolean): MaybePromise;
    stepSaturationLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number): MaybePromise;
    stopAllColorMovement(): MaybePromise;
    stopColorLoopLogic(): MaybePromise;
    stopHueAndSaturationMovement(): MaybePromise;
    stopMoveStepLogic(): MaybePromise;
    switchColorMode(oldMode: ColorControl.ColorMode, newMode: ColorControl.ColorMode): MaybePromise;
    syncColorTemperatureWithLevelLogic(level: number): MaybePromise;
}
id

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

Internal: typeof Internal
name: string
schema?: Schema
State: (new () => ClusterState.Type<Of<{
    attributes: {
        colorCapabilities: Attribute<TypeFromPartialBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>, any>;
        colorMode: Attribute<ColorControl.ColorMode, any>;
        colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointBx: OptionalWritableAttribute<number, any>;
        colorPointBy: OptionalWritableAttribute<number, any>;
        colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointGx: OptionalWritableAttribute<number, any>;
        colorPointGy: OptionalWritableAttribute<number, any>;
        colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointRx: OptionalWritableAttribute<number, any>;
        colorPointRy: OptionalWritableAttribute<number, any>;
        compensationText: OptionalAttribute<string, any>;
        driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
        enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
        numberOfPrimaries: FixedAttribute<null | number, any>;
        options: WritableAttribute<TypeFromPartialBitSchema<{
            executeIfOff: BitFlag;
        }>, any>;
        primary1Intensity: OptionalFixedAttribute<null | number, any>;
        primary1X: OptionalFixedAttribute<number, any>;
        primary1Y: OptionalFixedAttribute<number, any>;
        primary2Intensity: OptionalFixedAttribute<null | number, any>;
        primary2X: OptionalFixedAttribute<number, any>;
        primary2Y: OptionalFixedAttribute<number, any>;
        primary3Intensity: OptionalFixedAttribute<null | number, any>;
        primary3X: OptionalFixedAttribute<number, any>;
        primary3Y: OptionalFixedAttribute<number, any>;
        primary4Intensity: OptionalFixedAttribute<null | number, any>;
        primary4X: OptionalFixedAttribute<number, any>;
        primary4Y: OptionalFixedAttribute<number, any>;
        primary5Intensity: OptionalFixedAttribute<null | number, any>;
        primary5X: OptionalFixedAttribute<number, any>;
        primary5Y: OptionalFixedAttribute<number, any>;
        primary6Intensity: OptionalFixedAttribute<null | number, any>;
        primary6X: OptionalFixedAttribute<number, any>;
        primary6Y: OptionalFixedAttribute<number, any>;
        remainingTime: OptionalAttribute<number, any>;
        whitePointX: OptionalWritableAttribute<number, any>;
        whitePointY: OptionalWritableAttribute<number, any>;
    };
    extensions: readonly [{
        component: {
            attributes: {
                currentHue: Attribute<number, any>;
                currentSaturation: Attribute<number, any>;
            };
            commands: {
                moveHue: Command<TypeFromFields<{
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: ...;
                    hue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    saturation: ...;
                    transitionTime: ...;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    saturation: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    rateX: ...;
                    rateY: ...;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: ...;
                    colorY: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepX: ...;
                    stepY: ...;
                    transitionTime: ...;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            attributes: {
                colorTemperatureMireds: Attribute<number, any>;
                colorTempPhysicalMaxMireds: Attribute<number, any>;
                colorTempPhysicalMinMireds: Attribute<number, any>;
                coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
            };
            commands: {
                moveColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: ...;
                    colorTemperatureMinimumMireds: ...;
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: ...;
                    colorTemperatureMinimumMireds: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: ...;
                    enhancedHue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    saturation: ...;
                    transitionTime: ...;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
            };
        };
        flags: {
            enhancedHue: true;
        };
    }, {
        component: {
            attributes: {
                colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                colorLoopStartEnhancedHue: Attribute<number, any>;
                colorLoopStoredEnhancedHue: Attribute<number, any>;
                colorLoopTime: Attribute<number, any>;
            };
            commands: {
                colorLoopSet: Command<TypeFromFields<{
                    action: ...;
                    direction: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    startHue: ...;
                    time: ...;
                    updateFlags: ...;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: 768;
    name: "ColorControl";
    revision: 6;
}>, typeof ColorControlServerLogic>)
supervisor: RootSupervisor
supports: ((other: Type) => boolean)

Type declaration

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

      Parameters

      Returns boolean

Methods

  • Parameters

    • fn: (() => void)

      the elevated logic

        • (): void
        • Returns void

    Returns void

  • 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

  • Behaviors are ephemeral and should not perform initialization in their constructor. They can override this method instead.

    This method may be synchronous or asyncronous. If asynchronous, the behavior will not be available for external use until initialization completes.

    Parameters

    • Optional_options: {}

      Returns MaybePromise

    • Install a Reactor.

      Important: The reactor MUST be a real JS function - arrow functions will not work!

      Type Parameters

      Parameters

      Returns void