颜色控制 Cluster(ColorControl)

Cluster ID: 0x0300  |  所在 Endpoint: 通常在 Endpoint 1(功能端点,与 OnOff / LevelControl 同端点)

ColorControl 是 Matter 灯具设备的颜色控制核心 Cluster,支持通过三种颜色模型控制灯光颜色: Hue/Saturation(色相/饱和度)、XY 色坐标(CIE 1931)、Color Temperature(色温,单位 Mireds)。 此外还支持 Enhanced Hue(16-bit 高精度色相)和 Color Loop(自动循环变色)等高级功能。

色温单位说明

Matter 使用 Mireds(微倒数度)作为色温单位,换算公式:Mireds = 1,000,000 / Kelvin。 例如 6500K 冷白 ≈ 153 Mireds,2700K 暖白 ≈ 370 Mireds。Mireds 值越小色温越高(偏冷白),值越大色温越低(偏暖黄)。

Feature 能力(Feature Map)

ColorControl 通过 Feature Map 声明设备支持哪些颜色控制能力。不同能力决定了可用的命令和属性集合。 读取 ColorCapabilities (0x400A) 可以获取设备支持的能力位图。

Bit 0
HS(Hue/Saturation) 支持色相/饱和度控制。MoveToHue、MoveToSaturation 等命令可用
Bit 1
EHUE(Enhanced Hue) 支持 16-bit 高精度色相控制。EnhancedMoveToHue 等命令可用
Bit 2
CL(Color Loop) 支持自动循环变色。ColorLoopSet 命令可用
Bit 3
XY 支持 CIE 1931 XY 色坐标控制。MoveToColor、MoveColor 等命令可用
Bit 4
CT(Color Temperature) 支持色温控制。MoveToColorTemperature 等命令可用
开发提示

大多数家用智能灯至少支持 CT(色温),全彩灯通常支持 HS + XY + CT。发送命令前务必先检查 ColorCapabilities,向不支持的能力发送命令会被设备拒绝。

命令(Commands)

ColorControl 定义了 19 个命令,按颜色模型分为五组:Hue/Saturation 控制、XY 色坐标控制、色温控制、Enhanced Hue 控制、Color Loop 控制。 点击下方表格中的命令 ID 可跳转到对应的详细说明。

所有命令都支持 OptionsMask 和 OptionsOverride 参数,用于临时覆盖 Options (0x000F) 属性中的 ExecuteIfOff 标志位。

ID 名称 说明 所需 Feature
0x00 MoveToHue 移动到指定色相值 HS
0x01 MoveHue 持续向指定方向移动色相 HS
0x02 StepHue 色相步进 HS
0x03 MoveToSaturation 移动到指定饱和度 HS
0x04 MoveSaturation 持续向指定方向移动饱和度 HS
0x05 StepSaturation 饱和度步进 HS
0x06 MoveToHueAndSaturation 同时设置色相和饱和度 HS
0x07 MoveToColor 移动到指定 XY 色坐标 XY
0x08 MoveColor 持续移动 XY 色坐标 XY
0x09 StepColor XY 色坐标步进 XY
0x0A MoveToColorTemperature 移动到指定色温 CT
0x4B MoveColorTemperature 持续向指定方向移动色温 CT
0x4C StepColorTemperature 色温步进 CT
0x40 EnhancedMoveToHue 移动到指定 Enhanced Hue(16-bit) EHUE
0x41 EnhancedMoveHue 持续移动 Enhanced Hue EHUE
0x42 EnhancedStepHue Enhanced Hue 步进 EHUE
0x43 EnhancedMoveToHueAndSaturation 同时设置 Enhanced Hue 和 Saturation EHUE
0x44 ColorLoopSet 配置并激活/关闭 Color Loop CL
0x47 StopMoveStep 停止当前的 Move 或 Step 过渡 HS XY CT

MoveToHue —— 移动到指定色相(0x00)

将灯光色相平滑过渡到目标值。Hue 取值 0~254,映射到 0°~360° 色环。Direction 参数控制色环上的过渡方向。

参数类型说明
Hueuint8目标色相值,0~254
DirectionDirectionEnum过渡方向:ShortestDistance / LongestDistance / Up / Down
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

用户在 App 色环上选择一个颜色时调用。先将选中的角度换算为 0~254 的 Hue 值(hue = angle * 254 / 360),Direction 通常用 Shortest (0) 取最短路径。TransitionTime 设 10 表示 1 秒平滑过渡。

MoveHue —— 持续移动色相(0x01)

以恒定速率持续移动色相值,直到收到 StopMoveStep 或色相到达自然边界。

参数类型说明
MoveModeMoveModeEnum移动模式:Stop / Up / Down
Rateuint8每秒变化的色相步数
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

用户按住色相调节按钮时持续调节。松开按钮后发送 StopMoveStep (0x47) 停止。

StepHue —— 色相步进(0x02)

将色相增加或减少一个指定的步长值。

参数类型说明
StepModeStepModeEnum步进方向:Up / Down
StepSizeuint8每次步进的色相变化量
TransitionTimeuint8过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖

MoveToSaturation —— 移动到指定饱和度(0x03)

将灯光饱和度平滑过渡到目标值。Saturation 取值 0~254,0 为无色(白光),254 为最高饱和度。

参数类型说明
Saturationuint8目标饱和度,0~254
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

用户拖动饱和度滑条时调用。Saturation 值 0~254 对应 UI 上的 0%~100%。通常配合 MoveToHue 一起使用,也可以用 MoveToHueAndSaturation 一次设置两者。

MoveSaturation —— 持续移动饱和度(0x04)

以恒定速率持续移动饱和度值,直到收到 StopMoveStep。参数结构同 MoveHue。

StepSaturation —— 饱和度步进(0x05)

将饱和度增加或减少一个指定的步长值。参数结构同 StepHue。

MoveToHueAndSaturation —— 同时设置色相和饱和度(0x06)

一次命令同时设置色相和饱和度,比分开发送两个命令更高效,过渡更平滑。

参数类型说明
Hueuint8目标色相值,0~254
Saturationuint8目标饱和度,0~254
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

用户在色盘(Color Wheel)上直接选择一个颜色点时调用,一次命令完成色相 + 饱和度的设置。推荐优先使用此命令而非分别调用 MoveToHue + MoveToSaturation。

MoveToColor —— 移动到指定 XY 色坐标(0x07)

将灯光颜色过渡到指定的 CIE 1931 XY 色坐标。X 和 Y 取值 0~0xFEFF,映射到 0.0~1.0 的色度坐标。

参数类型说明
ColorXuint16CIE x 坐标,0~0xFEFF(实际值 = ColorX / 65536)
ColorYuint16CIE y 坐标,0~0xFEFF(实际值 = ColorY / 65536)
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

需要精确控制颜色(如匹配品牌色或灯光设计方案)时使用。XY 色坐标是设备无关的绝对颜色表示,不同厂商的灯在相同 XY 值下理论上会呈现相同颜色。

MoveColor —— 持续移动 XY 色坐标(0x08)

以恒定速率在 XY 色度平面上持续移动。

参数类型说明
RateXint16X 坐标每秒变化量(有符号)
RateYint16Y 坐标每秒变化量(有符号)
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖

StepColor —— XY 色坐标步进(0x09)

将 X 和 Y 坐标各增加/减少一个步长值。

参数类型说明
StepXint16X 坐标步进量(有符号)
StepYint16Y 坐标步进量(有符号)
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖

MoveToColorTemperature —— 移动到指定色温(0x0A)

将灯光色温平滑过渡到目标值。目标值会被裁剪到 [ColorTempPhysicalMinMireds, ColorTempPhysicalMaxMireds] 范围内。 这是色温灯最常用的命令。

参数类型说明
ColorTemperatureMiredsuint16目标色温值(Mireds)
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

用户拖动色温滑条时调用。UI 通常显示 Kelvin(2700K ~ 6500K),发送命令前需转换:mireds = 1000000 / kelvin。设备会自动将超出物理范围的值裁剪到 Min/Max Mireds。

MoveColorTemperature —— 持续移动色温(0x4B)

以恒定速率持续移动色温值,并可指定移动的上下限范围。

参数类型说明
MoveModeMoveModeEnum移动模式:Stop / Up / Down
Rateuint16每秒变化的 Mireds 值
ColorTemperatureMinimumMiredsuint16移动下限
ColorTemperatureMaximumMiredsuint16移动上限
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖

StepColorTemperature —— 色温步进(0x4C)

将色温增加或减少一个指定的步长值,并可指定步进的上下限范围。

参数类型说明
StepModeStepModeEnum步进方向:Up / Down
StepSizeuint16每次步进的 Mireds 变化量
TransitionTimeuint16过渡时间,单位 1/10 秒
ColorTemperatureMinimumMiredsuint16步进下限
ColorTemperatureMaximumMiredsuint16步进上限
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖

EnhancedMoveToHue —— 移动到指定 Enhanced Hue(0x40)

与 MoveToHue 类似,但使用 16-bit Enhanced Hue(0~0xFFFF),精度是标准 Hue 的 256 倍。 适用于需要精细颜色控制的场景。

参数类型说明
EnhancedHueuint16目标 Enhanced Hue 值,0~0xFFFF
DirectionDirectionEnum过渡方向
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

当 8-bit Hue 的 254 级精度不够时使用(例如大型 LED 灯带需要极致平滑过渡)。Enhanced Hue = 标准 Hue * 256,但范围更大(0~65535)。发送前需检查设备是否支持 EHUE feature。

EnhancedMoveHue —— 持续移动 Enhanced Hue(0x41)

以恒定速率持续移动 Enhanced Hue 值。参数结构类似 MoveHue,但 Rate 为 uint16。

EnhancedStepHue —— Enhanced Hue 步进(0x42)

将 Enhanced Hue 增加或减少一个指定的步长值。参数结构类似 StepHue,但 StepSize 为 uint16。

EnhancedMoveToHueAndSaturation —— 同时设置 Enhanced Hue 和 Saturation(0x43)

一次命令同时设置 16-bit Enhanced Hue 和 8-bit Saturation。

参数类型说明
EnhancedHueuint16目标 Enhanced Hue 值
Saturationuint8目标饱和度,0~254
TransitionTimeuint16过渡时间,单位 1/10 秒
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖

ColorLoopSet —— 配置 Color Loop(0x44)

配置并激活/关闭 Color Loop(自动循环变色)。通过 UpdateFlags 位图控制本次命令要更新哪些参数。 激活后,灯光会按设定的时间周期在色环上自动循环。

参数类型说明
UpdateFlagsUpdateFlagsBitmap指定本次更新哪些字段(见下方位图)
ActionColorLoopActionEnum循环动作:关闭 / 从起始色开始 / 从当前色开始
DirectionColorLoopDirectionEnum循环方向:递减 / 递增
Timeuint16完成一圈循环的时间(秒)
StartHueuint16循环起始的 Enhanced Hue 值
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

氛围灯、派对模式等需要灯光自动变色的场景。UpdateFlags 设为 0x0F(全部更新),Action 设为 2(从当前色开始循环),Time 设为 30(30 秒一圈),Direction 设为 1(递增方向)。关闭时 Action 设为 0。

StopMoveStep —— 停止过渡(0x47)

立即停止当前正在进行的 Move 或 Step 颜色过渡。灯光保持在当前颜色状态。 适用于所有颜色模型(HS、XY、CT)。

参数类型说明
OptionsMaskbitmap8选项掩码
OptionsOverridebitmap8选项覆盖
使用场景与参数

用户松开持续调节按钮(如色温滑条的长按箭头)时发送,用于停止 MoveHue / MoveSaturation / MoveColor / MoveColorTemperature 等持续移动类命令。

属性详解

ColorControl Cluster 共有 52 个属性,按功能分为六组。点击下方汇总表中的属性 ID 可跳转到对应的详细说明。

ID 名称 类型 分组 说明
0x0000 CurrentHue uint8 当前颜色状态 当前色相值(0~254)
0x0001 CurrentSaturation uint8 当前颜色状态 当前饱和度(0~254)
0x0002 RemainingTime uint16 当前颜色状态 当前过渡的剩余时间(1/10 秒)
0x0003 CurrentX uint16 当前颜色状态 当前 CIE x 坐标
0x0004 CurrentY uint16 当前颜色状态 当前 CIE y 坐标
0x0007 ColorTemperatureMireds uint16 当前颜色状态 当前色温(Mireds)
0x0008 ColorMode enum8 颜色模式 当前颜色模式
0x000F Options bitmap8 颜色模式 ExecuteIfOff 选项
0x4001 EnhancedColorMode enum8 颜色模式 增强颜色模式(含 Enhanced Hue)
0x4000 EnhancedCurrentHue uint16 Enhanced Hue 与 Color Loop 当前 Enhanced Hue 值(16-bit)
0x4002 ColorLoopActive uint8 Enhanced Hue 与 Color Loop Color Loop 是否激活
0x4003 ColorLoopDirection uint8 Enhanced Hue 与 Color Loop Color Loop 循环方向
0x4004 ColorLoopTime uint16 Enhanced Hue 与 Color Loop 循环一圈的时间(秒)
0x4005 ColorLoopStartEnhancedHue uint16 Enhanced Hue 与 Color Loop 循环起始 Enhanced Hue
0x4006 ColorLoopStoredEnhancedHue uint16 Enhanced Hue 与 Color Loop 循环关闭时恢复的 Enhanced Hue
0x400A ColorCapabilities bitmap16 能力与色温范围 设备支持的颜色能力
0x400B ColorTempPhysicalMinMireds uint16 能力与色温范围 物理最小色温(Mireds)
0x400C ColorTempPhysicalMaxMireds uint16 能力与色温范围 物理最大色温(Mireds)
0x400D CoupleColorTempToLevelMinMireds uint16 能力与色温范围 色温联动亮度的最小 Mireds
0x4010 StartUpColorTemperatureMireds uint16 / null 能力与色温范围 开机默认色温
0x0005 DriftCompensation enum8 漂移补偿与灯具信息 颜色漂移补偿类型
0x0006 CompensationText string 漂移补偿与灯具信息 补偿机制描述文本
0x0010 NumberOfPrimaries uint8 / null 漂移补偿与灯具信息 灯具原色(Primary)数量
0x0011~0x002A Primary1~6 (X/Y/Intensity) uint16 / uint8 原色坐标 6 组原色的 CIE XY 坐标与强度
0x0030~0x003C WhitePoint / ColorPoint R/G/B uint16 / uint8 白点与色点 白点坐标、RGB 色点坐标与强度

当前颜色状态

反映灯光当前的颜色参数,是 App UI 展示和状态同步的核心数据源。

ID名称类型说明
0x0000 CurrentHue
当前色相
uint8 当前色相值,0~254 映射到 0°~360° 色环。需 HS feature
0x0001 CurrentSaturation
当前饱和度
uint8 当前饱和度,0~254。0 = 白光,254 = 最高饱和度。需 HS feature
0x0002 RemainingTime
剩余过渡时间
uint16 当前颜色过渡的剩余时间,单位 1/10 秒。0 表示无过渡进行中
0x0003 CurrentX
当前 X 坐标
uint16 当前 CIE 1931 x 色坐标,0~0xFEFF。实际值 = CurrentX / 65536。需 XY feature
0x0004 CurrentY
当前 Y 坐标
uint16 当前 CIE 1931 y 色坐标,0~0xFEFF。实际值 = CurrentY / 65536。需 XY feature
0x0007 ColorTemperatureMireds
当前色温
uint16 当前色温值,单位 Mireds。范围由物理限制属性决定。需 CT feature
Hue 值映射注意

Matter 的 Hue 取值范围是 0~254(不是 0~255 或 0~360)。换算公式:角度 = Hue * 360 / 254,Hue = 角度 * 254 / 360。 同理 Saturation 也是 0~254。UI 上通常显示百分比:百分比 = Saturation * 100 / 254。

颜色模式与选项

标识设备当前使用的颜色控制模型以及命令执行选项。

ID名称类型说明
0x0008 ColorMode
颜色模式
enum8 当前颜色模式,只读。发送不同颜色命令后设备自动切换
0x000F Options
选项
bitmap8 Bit 0 = ExecuteIfOff:灯关着时是否仍然执行颜色命令。可写
0x4001 EnhancedColorMode
增强颜色模式
enum8 比 ColorMode 多一个状态:Enhanced Hue and Saturation。只读

ColorMode 枚举值

0
CurrentHueAndCurrentSaturation 色相/饱和度模式
1
CurrentXAndCurrentY CIE XY 色坐标模式
2
ColorTemperatureMireds 色温模式

EnhancedColorMode 枚举值

0
CurrentHueAndCurrentSaturation 色相/饱和度模式
1
CurrentXAndCurrentY CIE XY 色坐标模式
2
ColorTemperatureMireds 色温模式
3
EnhancedCurrentHueAndCurrentSaturation Enhanced Hue + 饱和度模式(16-bit 高精度)
ColorMode vs EnhancedColorMode

ColorMode 只有 3 种值(0/1/2),是旧版兼容属性。EnhancedColorMode 多了第 4 种值(3 = Enhanced Hue),是实际判断设备当前颜色模式时应该优先读取的属性。 发送 MoveToHue 命令后 ColorMode 变为 0,发送 EnhancedMoveToHue 后 EnhancedColorMode 变为 3。

Enhanced Hue 与 Color Loop

高精度色相控制和自动循环变色的状态属性。

ID名称类型说明
0x4000 EnhancedCurrentHue
增强色相
uint16 当前 16-bit Enhanced Hue 值,0~0xFFFF。精度是标准 Hue 的 256 倍
0x4002 ColorLoopActive
循环激活
uint8 0 = 未激活,1 = 已激活。需 CL feature
0x4003 ColorLoopDirection
循环方向
uint8 0 = Decrement(递减),1 = Increment(递增)
0x4004 ColorLoopTime
循环时间
uint16 完成一圈色相循环的时间,单位秒
0x4005 ColorLoopStartEnhancedHue
循环起始色
uint16 Color Loop 开始时的 Enhanced Hue 值
0x4006 ColorLoopStoredEnhancedHue
循环存储色
uint16 Color Loop 关闭时恢复到的 Enhanced Hue 值

能力与色温范围

描述设备支持的颜色控制能力和色温物理范围。开发时必须先读取这些属性来确定可用的控制方式。

ID名称类型说明
0x400A ColorCapabilities
颜色能力
bitmap16 设备支持的颜色控制能力位图(见下方 Feature Map 定义)
0x400B ColorTempPhysicalMinMireds
最小色温
uint16 设备支持的最低色温值(Mireds),即最高 Kelvin。范围 1~65279
0x400C ColorTempPhysicalMaxMireds
最大色温
uint16 设备支持的最高色温值(Mireds),即最低 Kelvin。范围 1~65279
0x400D CoupleColorTempToLevelMinMireds
色温联动亮度最小值
uint16 当色温联动亮度功能启用时,允许的最小 Mireds 值
0x4010 StartUpColorTemperatureMireds
开机色温
uint16 / null 设备上电后的初始色温。null 表示恢复上次断电前的色温。可写

ColorCapabilities 位图

Bit 0
HueSaturation(0x01) 支持 Hue/Saturation 控制
Bit 1
EnhancedHue(0x02) 支持 16-bit Enhanced Hue
Bit 2
ColorLoop(0x04) 支持自动循环变色
Bit 3
XY(0x08) 支持 CIE XY 色坐标控制
Bit 4
ColorTemperature(0x10) 支持色温控制
色温范围举例

一个典型的色温灯泡:MinMireds = 153(≈ 6536K 冷白)、MaxMireds = 500(= 2000K 暖黄)。 UI 上色温滑条的两端应该取这两个值。发送 MoveToColorTemperature 时目标值超出此范围,设备会自动裁剪。

漂移补偿与灯具信息

描述灯具的颜色漂移补偿机制和原色(Primary)数量。大多数 App 开发无需关注这些属性。

ID名称类型说明
0x0005 DriftCompensation
漂移补偿
enum8 灯具使用的颜色漂移补偿类型
0x0006 CompensationText
补偿描述
string 对漂移补偿机制的文字描述
0x0010 NumberOfPrimaries
原色数量
uint8 / null 灯具中独立颜色原色(LED 通道)的数量,最大 6。null 表示未知

DriftCompensation 枚举值

0
None 无漂移补偿
1
OtherOrUnknown 其他或未知补偿方式
2
TemperatureMonitoring 温度监测补偿
3
OpticalLuminanceMonitoringAndFeedback 光学亮度监测与反馈
4
OpticalColorMonitoringAndFeedback 光学颜色监测与反馈

原色坐标(Primary 1~6)

灯具最多可以声明 6 组原色(Primary),每组包含 CIE XY 坐标和强度值。这些属性描述灯具 LED 的物理色域, 通常由固件设置,App 开发一般不需要读取。

Primary 1~6 属性列表(点击展开)
组X 坐标 IDY 坐标 ID强度 ID
Primary 10x00110x00120x0013
Primary 20x00150x00160x0017
Primary 30x00190x001A0x001B
Primary 40x00200x00210x0022
Primary 50x00240x00250x0026
Primary 60x00280x00290x002A

所有 X / Y 坐标为 uint16 类型,范围 0~0xFEFF;Intensity 为 uint8 / nullable 类型。

白点与色点

描述灯具的白点坐标和 RGB 三色点坐标,用于色彩校准。这些属性可写,通常由高级校准工具使用, App 开发一般不需要关注。

白点与色点属性列表(点击展开)
ID名称类型说明
0x0030WhitePointXuint16白点 CIE x 坐标
0x0031WhitePointYuint16白点 CIE y 坐标
0x0032ColorPointRXuint16红色点 CIE x 坐标
0x0033ColorPointRYuint16红色点 CIE y 坐标
0x0034ColorPointRIntensityuint8 / null红色点强度
0x0036ColorPointGXuint16绿色点 CIE x 坐标
0x0037ColorPointGYuint16绿色点 CIE y 坐标
0x0038ColorPointGIntensityuint8 / null绿色点强度
0x003AColorPointBXuint16蓝色点 CIE x 坐标
0x003BColorPointBYuint16蓝色点 CIE y 坐标
0x003CColorPointBIntensityuint8 / null蓝色点强度

命令参数枚举值速查

以下枚举类型在多个命令的参数中复用。

DirectionEnum(色相过渡方向)

0
Shortest 最短路径(在色环上取近路)
1
Longest 最长路径(在色环上绕远路)
2
Up 数值递增方向
3
Down 数值递减方向

MoveModeEnum(持续移动模式)

0
Stop 停止移动
1
Up 向上(数值递增)
3
Down 向下(数值递减)

StepModeEnum(步进方向)

1
Up 步进增加
3
Down 步进减少
注意 MoveMode / StepMode 的值间隔

MoveModeEnum 的值是 0、1、3(没有 2),StepModeEnum 的值是 1、3(没有 0 和 2)。 这是沿用自 ZCL(ZigBee Cluster Library)的历史设计。传错值(比如 2)设备会返回错误。

ColorLoopActionEnum(循环动作)

0
Deactivate 关闭 Color Loop
1
ActivateFromColorLoopStartEnhancedHue 从 ColorLoopStartEnhancedHue 开始循环
2
ActivateFromEnhancedCurrentHue 从当前 Enhanced Hue 开始循环

ColorLoopDirectionEnum(循环方向)

0
Decrement 色相递减方向循环
1
Increment 色相递增方向循环

UpdateFlags 位图(ColorLoopSet 命令参数)

Bit 0
UpdateAction(0x01) 更新 Action 字段
Bit 1
UpdateDirection(0x02) 更新 Direction 字段
Bit 2
UpdateTime(0x04) 更新 Time 字段
Bit 3
UpdateStartHue(0x08) 更新 StartHue 字段

标准示例

以下是一个支持全能力(HS + XY + CT + EHUE + CL)的全彩灯的典型属性数据示例:

{
  // --- 当前颜色状态 ---
  "0x0000": 127,         // CurrentHue = 127(约 180°,青色附近)
  "0x0001": 200,         // CurrentSaturation = 200(高饱和度)
  "0x0003": 24939,       // CurrentX = 24939(CIE x ≈ 0.3805)
  "0x0004": 24701,       // CurrentY = 24701(CIE y ≈ 0.3769)
  "0x0007": 370,         // ColorTemperatureMireds = 370(≈ 2703K 暖白)
  "0x0002": 0,           // RemainingTime = 0(无过渡进行中)

  // --- 颜色模式 ---
  "0x0008": 2,           // ColorMode = ColorTemperature(当前用色温控制)
  "0x4001": 2,           // EnhancedColorMode = ColorTemperature
  "0x000F": 0,           // Options = 0(不启用 ExecuteIfOff)

  // --- Enhanced Hue & Color Loop ---
  "0x4000": 0,           // EnhancedCurrentHue = 0
  "0x4002": 0,           // ColorLoopActive = 0(未激活循环)
  "0x4003": 0,           // ColorLoopDirection = Decrement
  "0x4004": 25,          // ColorLoopTime = 25 秒
  "0x4005": 0,           // ColorLoopStartEnhancedHue = 0
  "0x4006": 0,           // ColorLoopStoredEnhancedHue = 0

  // --- 能力与色温范围 ---
  "0x400A": 31,          // ColorCapabilities = 0x1F(支持全部五种能力)
  "0x400B": 153,         // ColorTempPhysicalMinMireds = 153(≈ 6536K)
  "0x400C": 500,         // ColorTempPhysicalMaxMireds = 500(≈ 2000K)
  "0x400D": 153,         // CoupleColorTempToLevelMinMireds = 153
  "0x4010": 370          // StartUpColorTemperatureMireds = 370(开机暖白)
}
开发提示

实际从设备读取数据时,Attribute ID 是十六进制字符串作为 key。"0x0007" 是 ColorTemperatureMireds,"0x400A" 是 ColorCapabilities。 位图值 31 = 0x1F = 二进制 11111,表示五种能力全部支持。

常见场景

场景 1:色温滑条调节

  1. 读取 ColorCapabilities (0x400A),确认 Bit 4(CT)为 1
  2. 读取 ColorTempPhysicalMinMireds (0x400B) 和 ColorTempPhysicalMaxMireds (0x400C) 确定滑条范围
  3. 用户拖动滑条时,将 Kelvin 转换为 Mireds:mireds = 1000000 / kelvin
  4. 发送 MoveToColorTemperature (0x0A),TransitionTime 设为 5(0.5 秒过渡)
  5. 订阅 ColorTemperatureMireds (0x0007) 确认设备已到达目标色温

场景 2:色盘选色(Hue/Saturation)

  1. 读取 ColorCapabilities (0x400A),确认 Bit 0(HS)为 1
  2. 用户在色盘上选择一个点,获取角度和半径
  3. 角度 → Hue:hue = angle * 254 / 360
  4. 半径 → Saturation:saturation = radius * 254 / maxRadius
  5. 发送 MoveToHueAndSaturation (0x06) 一次设置两个值
  6. 订阅 CurrentHue (0x0000) 和 CurrentSaturation (0x0001) 确认结果

场景 3:灯光控制页面初始化

  1. 读取 ColorCapabilities (0x400A) —— 决定 UI 上展示哪些控制组件(色盘、色温滑条等)
  2. 读取 EnhancedColorMode (0x4001) —— 确定当前是哪种颜色模式,高亮对应的 UI Tab
  3. 根据模式读取对应属性:色温模式读 ColorTemperatureMireds,HS 模式读 CurrentHue + CurrentSaturation
  4. 如支持 CT,读取 ColorTempPhysicalMinMireds / MaxMireds 设置滑条范围
  5. 订阅所有相关属性的变化,保持 UI 与设备状态同步

场景 4:氛围灯 / 派对模式(Color Loop)

  1. 读取 ColorCapabilities (0x400A),确认 Bit 2(CL)为 1
  2. 发送 ColorLoopSet (0x44):UpdateFlags = 0x0F,Action = 2(从当前色开始),Direction = 1(递增),Time = 30(30 秒一圈)
  3. 读取 ColorLoopActive (0x4002) 确认循环已激活
  4. 关闭时再次发送 ColorLoopSet,Action = 0(Deactivate)