二十 Home Assistant 实体-灯

灯光实体

灯光实体用于控制光源的亮度、色调、饱和度、白色值、色温及效果等。从 homeassistant.components.light.LightEntity 派生平台实体。

属性
名称类型默认值描述
brightness整数或 NoneNone灯光亮度,取值范围在1到255之间。
color_modeColorModeNoneNone灯光颜色模式。除非灯光正在呈现效果,否则返回的颜色模式必须在 supported_color_modes 属性中存在。
color_temp_kelvin整数或 NoneNone以开尔文(K)为单位的色温颜色值。当灯光颜色模式设置为 ColorMode.COLOR_TEMP 时,此属性将复制到灯光的状态属性中,否则将被忽略。
effect字符串或 NoneNone当前效果。如果灯光支持效果且当前未呈现效果,则应为 EFFECT_OFF
effect_list字符串列表或 NoneNone支持的效果列表。
hs_color包含两个浮点数的元组或 NoneNone色调和饱和度颜色值(浮点数,浮点数)。当灯光颜色模式设置为 ColorMode.HS 时,此属性将复制到灯光的状态属性中,否则将被忽略。
is_on布尔值或 NoneNone灯光实体是否打开。
max_color_temp_kelvin整数或 NoneNone此灯光支持的最冷色温(开尔文)。
min_color_temp_kelvin整数或 NoneNone此灯光支持的最暖色温(开尔文)。
rgb_color包含三个整数的元组或 NoneNoneRGB颜色值(整数,整数,整数)。当灯光颜色模式设置为 ColorMode.RGB 时,此属性将复制到灯光的状态属性中,否则将被忽略。
rgbw_color包含四个整数的元组或 NoneNoneRGBW颜色值(整数,整数,整数,整数)。当灯光颜色模式设置为 ColorMode.RGBW 时,此属性将复制到灯光的状态属性中,否则将被忽略。
rgbww_color包含五个整数的元组或 NoneNoneRGBWW颜色值(整数,整数,整数,整数,整数)。当灯光颜色模式设置为 ColorMode.RGBWW 时,此属性将复制到灯光的状态属性中,否则将被忽略。
supported_color_modesColorMode 集合或 NoneNone标志支持的颜色模式。
xy_color包含两个浮点数的元组或 NoneNonexy颜色值(浮点数,浮点数)。当灯光颜色模式设置为 ColorMode.XY 时,此属性将复制到灯光的状态属性中,否则将被忽略。
颜色模式

新集成必须实现 color_modesupported_color_modes。如果一个集成升级以支持颜色模式,也应同时实现这两个属性。

支持的颜色模式通过使用 ColorMode 枚举中的值来定义。

如果灯光未实现 supported_color_modesLightEntity 将尝试根据 supported_features 属性中的已弃用标志来推断它:

  1. 从一个空集开始。
  2. 如果设置了 SUPPORT_COLOR_TEMP,添加 ColorMode.COLOR_TEMP
  3. 如果设置了 SUPPORT_COLOR,添加 ColorMode.HS
  4. 如果设置了 SUPPORT_WHITE_VALUE,添加 ColorMode.RGBW
  5. 如果设置了 SUPPORT_BRIGHTNESS 且尚未添加任何颜色模式,添加 ColorMode.BRIGHTNESS
  6. 如果尚未添加任何颜色模式,添加 ColorMode.ONOFF

如果灯光未实现 color_modeLightEntity 将尝试根据设置了哪些属性以及哪些属性为 None 来推断它:

  1. 如果 supported_color_modes 包括 ColorMode.RGBWwhite_valuehs_color 都不为 NoneColorMode.RGBW
  2. 否则,如果 supported_color_modes 包括 ColorMode.HShs_color 不为 NoneColorMode.HS
  3. 否则,如果 supported_color_modes 包括 ColorMode.COLOR_TEMPcolor_temp 不为 NoneColorMode.COLOR_TEMP
  4. 否则,如果 supported_color_modes 包括 ColorMode.BRIGHTNESSbrightness 不为 NoneColorMode.BRIGHTNESS
  5. 否则,如果 supported_color_modes 包括 ColorMode.ONOFFColorMode.ONOFF
  6. 否则:ColorMode.UNKNOWN
描述
ColorMode.UNKNOWN灯光颜色模式未知。
ColorMode.ONOFF灯光可以打开或关闭。如果灯光支持此模式,此模式必须是唯一支持的模式。
ColorMode.BRIGHTNESS灯光可以调光。如果灯光支持此模式,此模式必须是唯一支持的模式。
ColorMode.COLOR_TEMP灯光可以调光且其色温在状态中存在。
ColorMode.HS灯光可以调光且其颜色可以调整。灯光亮度可以使用 brightness 参数设置并通过 brightness 属性读取。灯光颜色可以使用 hs_color 参数设置并通过 hs_color 属性读取。hs_color 是一个(色调,饱和度)元组(不含亮度)。
ColorMode.RGB灯光可以调光且其颜色可以调整。灯光亮度可以使用 brightness 参数设置并通过 brightness 属性读取。灯光颜色可以使用 rgb_color 参数设置并通过 rgb_color 属性读取。rgb_color 是一个(红,绿,蓝)元组(未针对亮度进行归一化)。
ColorMode.RGBW灯光可以调光且其颜色可以调整。灯光亮度可以使用 brightness 参数设置并通过 brightness 属性读取。灯光颜色可以使用 rgbw_color 参数设置并通过 rgbw_color 属性读取。rgbw_color 是一个(红,绿,蓝,白)元组(未针对亮度进行归一化)。
ColorMode.RGBWW灯光可以调光且其颜色可以调整。灯光亮度可以使用 brightness 参数设置并通过 brightness 属性读取。灯光颜色可以使用 rgbww_color 参数设置并通过 rgbww_color 属性读取。rgbww_color 是一个(红,绿,蓝,冷白,暖白)元组(未针对亮度进行归一化)。
ColorMode.WHITE灯光可以调光且其颜色可以调整。此外,灯光可以设置为白色模式。灯光亮度可以使用 brightness 参数设置并通过 brightness 属性读取。可以使用 white 参数并将所需亮度作为值将灯光设置为白色模式。请注意,没有 white 属性。如果在服务调用中同时存在 brightnesswhitewhite 参数将使用 brightness 的值进行更新。如果支持此模式,灯光还必须至少支持 ColorMode.HSColorMode.RGBColorMode.RGBWColorMode.RGBWWColorMode.XY 中的一种。
ColorMode.XY灯光可以调光且其颜色可以调整。灯光亮度可以使用 brightness 参数设置并通过 brightness 属性读取。灯光颜色可以使用 xy_color 参数设置并通过 xy_color 属性读取。xy_color 是一个(x,y)元组。

注意,在颜色模式 ColorMode.RGBColorMode.RGBWColorMode.RGBWW 中,灯光的亮度信息既存在于 brightness 属性中,也存在于颜色中。例如,如果灯光亮度为128,灯光颜色为(192,64,32),灯光的整体亮度为:128/255 * max(192, 64, 32)/255 = 38%。

如果灯光处于 ColorMode.HSColorMode.RGBColorMode.XY 模式,灯光的状态属性将包含以 hsrgbxy 颜色格式表示的灯光颜色。请注意,当灯光处于 ColorMode.RGB 模式时,hsxy 状态属性仅保存 rgb 颜色的色度,因为 hsxy 对不包含亮度信息。

如果灯光处于 ColorMode.RGBWColorMode.RGBWW 模式,灯光的状态属性将包含以 hsrgbxy 颜色格式表示的灯光颜色。颜色转换是通过将白色通道添加到颜色中来近似完成的。

呈现效果时的颜色模式

当呈现效果时,color_mode 应根据效果支持的调整来设置。如果效果不支持任何调整,color_mode 应设置为 ColorMode.ONOFF。如果效果允许调整亮度,color_mode 应设置为 ColorMode.BRIGHTNESS

当呈现效果时,允许将 color_mode 设置为比 supported_color_mode 属性指示的颜色模式更受限的模式:

  • 支持颜色的灯光在由效果控制时,允许将 color_mode 设置为 ColorMode.ONOFFColorMode.BRIGHTNESS
  • 支持亮度的灯光在由效果控制时,允许将 color_mode 设置为 ColorMode.ONOFF
支持的功能

支持的功能通过使用 LightEntityFeature 枚举中的值来定义,并使用按位或(|)运算符组合。

描述
EFFECT控制光源显示的效果。
FLASH控制光源闪烁的持续时间。
TRANSITION控制颜色和效果之间转换的持续时间。
方法
打开灯光设备
class MyLightEntity(LightEntity):
    def turn_on(self, **kwargs):
        """打开设备。"""
    async def async_turn_on(self, **kwargs):
        """打开设备。"""

注意,async_turn_on 方法没有传递 color_mode,而是只允许一个单一的颜色属性。可以保证集成在 turn_on 调用中只会收到一个单一的颜色属性,并且根据灯光的 supported_color_modes 属性,该颜色属性是灯光支持的。为确保这一点,如果灯光不支持相应的颜色模式,在调用实体的 async_turn_on 方法之前,服务调用中的颜色将被转换:

颜色类型转换规则
color_temp如果不支持,将从服务调用中删除;如果支持,将转换为 hs_colorrgb_colorrgbw_colorrgbww_colorxy_color
hs_color如果不支持,将从服务调用中删除;如果支持,将转换为 rgb_colorrgbw_colorrgbww_colorxy_color
rgb_color如果不支持,将从服务调用中删除;如果支持,将转换为 rgbw_colorrgbww_colorhs_colorxy_color
rgbw_color如果不支持,将从服务调用中删除。
rgbww_color如果不支持,将从服务调用中删除。
xy_color如果不支持,将从服务调用中删除;如果支持,将转换为 hs_colorrgb_colorrgbw_colorrgbww_color
关闭灯光设备
class MyLightEntity(LightEntity):
    def turn_off(self, **kwargs):
        """关闭设备。"""
    async def async_turn_off(self, **kwargs):
        """关闭设备。"""

总结

文档主要介绍了Home Assistant中的灯光实体相关内容。包括灯光实体的功能(控制光源多方面属性)及派生方式,详细阐述了其众多属性(如亮度、颜色模式等各类属性的定义、默认值、作用及相互关系),深入解释了颜色模式(包括其实现要求、支持模式的定义与推断规则、不同模式下的特点及呈现效果时的模式设置),说明了支持的功能(通过特定枚举值及运算符定义),并提供了打开和关闭灯光设备的方法以及在方法调用中颜色属性转换的相关规则,为开发者在实现灯光控制相关功能时提供了全面、细致且系统的指导,有助于开发者准确地创建和操作灯光实体,使其能与Home Assistant系统良好集成,满足用户对灯光控制多样化的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值