Home Assistant允许您控制支持MQTT的灯光设备。它支持设置亮度、色温、效果、闪烁、开/关、RGB颜色、过渡、XY颜色和白色值。
当MQTT设备不具备状态主题以发布状态变更时,MQTT灯将以一种"即时更新模式"工作。这意味着,Home Assistant将立即更改设备状态,假设每次命令都会立即成功执行,而不必等待设备状态的确认。但是,如果这些状态消息以RETAIN标志发布,MQTT灯将在订阅后接收到立即的状态更新,并以正确的状态开始。反之,如果没有状态主题可用,开关的初始状态将为false/off。
在MQTT设备拥有状态主题的情况下,MQTT灯可以选择"即时更新模式",即使状态主题可用。"即时更新模式"意味着每次命令后,设备状态都会立即生效,无需等待设备实际状态的反馈。
这种操作模式的选择取决于您的设备和需求。如果您遇到不正确的灯光操作,可以尝试启用"即时更新模式",以获得更快的状态反馈。
即使状态主题可用,也可以强制启用即时更新模式。如果遇到有问题的灯光操作,请尝试启用它。
# 示例 configuration.yaml 配置项
light:
- platform: mqtt
command_topic: "office/rgb1/light/switch"
配置变量说明:
command_topic
(必填):用于发布更改开关状态的MQTT主题。brightness_command_topic
(可选):用于发布更改灯光亮度的MQTT主题。brightness_scale
(可选):定义MQTT设备的最大亮度值(默认为255,即100%)。brightness_state_topic
(可选):订阅以接收亮度状态更新的MQTT主题。brightness_value_template
(可选):定义提取亮度值的模板。color_temp_command_topic
(可选):用于发布更改灯光色温状态的MQTT主题。色温命令滑块的范围为157到500 mireds(微逆度)。
color_temp_state_topic
(可选):订阅以接收色温状态更新的MQTT主题。color_temp_value_template
(可选):定义提取色温值的模板。effect_command_topic
(可选):用于发布更改灯光效果状态的MQTT主题。effect_state_topic
(可选):订阅以接收效果状态更新的MQTT主题。effect_value_template
(可选):定义提取效果值的模板。effect_list
(可选):灯光支持的效果列表。name
(可选):开关的名称,默认为“MQTT开关”。optimistic
(可选):定义开关是否以“即时更新模式”工作的标志。如果没有定义状态主题,默认为true,否则为false。payload_off
(可选):表示禁用状态的负载,默认为“OFF”。payload_on
(可选):表示启用状态的负载,默认为“ON”。qos
(可选):状态主题的最大QoS级别。默认为0,也将用于发布消息。retain
(可选):发布的消息是否应具有保留标志。
RGB
rgb_command_template
(可选):定义用于发送给RGB状态的消息的模板。可用变量:red、green和blue。rgb_command_topic
(可选):用于发布更改灯光RGB状态的MQTT主题。rgb_state_topic
(可选):订阅以接收RGB状态更新的MQTT主题。rgb_value_template
(可选):定义提取RGB值的模板。state_topic
(可选):订阅以接收状态更新的MQTT主题。state_value_template
(可选):定义提取状态值的模板。
白色(单色)
white_value_command_topic
(可选):用于发布更改灯光白色值的MQTT主题。white_value_state_topic
(可选):订阅以接收白色值更新的MQTT主题。white_value_value_template
(可选):定义提取白色值的模板。
XY
xy_command_topic
(可选):用于发布更改灯光XY状态的MQTT主题。xy_state_topic
(可选):订阅以接收XY状态更新的MQTT主题。xy_value_template
(可选):定义提取XY值的模板。
请确保您的主题精确匹配,而且是不同的主题。有些主题/some-topic/some-topic
XY和RGB不能同时使用。如果两者都提供了,XY将覆盖RGB。
MQTT灯光控制平台与其他灯光控制MQTT平台的比较:
示例:
启用支持亮度和RGB的灯光:
# 示例配置:启用支持亮度和RGB的灯光
light:
- platform: mqtt # 使用MQTT作为灯光控制平台
name: "办公室灯RGB" # 设备的名称,可以自定义
state_topic: "office/rgb1/light/status" # 订阅状态更新的MQTT主题
command_topic: "office/rgb1/light/switch" # 发布命令以更改开关状态的MQTT主题
brightness_state_topic: "office/rgb1/brightness/status" # 订阅亮度状态更新的MQTT主题
brightness_command_topic: "office/rgb1/brightness/set" # 发布命令以更改亮度的MQTT主题
rgb_state_topic: "office/rgb1/rgb/status" # 订阅RGB状态更新的MQTT主题
rgb_command_topic: "office/rgb1/rgb/set" # 发布命令以更改RGB颜色的MQTT主题
state_value_template: "{{ value_json.state }}" # 从消息中提取状态值的模板
brightness_value_template: "{{ value_json.brightness }}" # 从消息中提取亮度值的模板
rgb_value_template: "{{ value_json.rgb | join(',') }}" # 从消息中提取RGB颜色值的模板
qos: 0 # MQTT消息的质量服务等级
payload_on: "ON" # 表示开启状态的MQTT消息有效负载
payload_off: "OFF" # 表示关闭状态的MQTT消息有效负载
optimistic: false # 即时更新模式,即使有状态主题也强制开启,用于确保状态及时更新
启用仅亮度(无RGB支持)的灯光:
# 示例配置:启用仅亮度的灯光
light:
- platform: mqtt # 使用MQTT作为灯光控制平台
name: "办公室灯光" # 设备的名称,可以自定义
state_topic: "office/rgb1/light/status" # 订阅状态更新的MQTT主题
command_topic: "office/rgb1/light/switch" # 发布命令以更改开关状态的MQTT主题
brightness_state_topic: 'office/rgb1/light/brightness' # 订阅亮度状态更新的MQTT主题
brightness_command_topic: 'office/rgb1/light/brightness/set' # 发布命令以更改亮度的MQTT主题
qos: 0 # MQTT消息的质量服务等级
payload_on: "ON" # 表示开启状态的MQTT消息有效负载
payload_off: "OFF" # 表示关闭状态的MQTT消息有效负载
optimistic: false # 即时更新模式,即使有状态主题也强制开启,用于确保状态及时更新
实现示例:
- 使用NodeMCU板(ESP8266)的基本示例来控制其内置LED(开/关)。
- 另一个示例用于控制RGB LED(开/关、亮度和颜色)。
扩展阅读:
XY颜色
灯光的"XY状态"通常指的是灯光的颜色坐标。在某些灯光系统中,颜色可以使用XY坐标来表示,而不是传统的RGB颜色或色温(Kelvin)值。
这里的"XY状态"表示灯光当前的颜色坐标,其中X和Y分别表示颜色在色域中的位置。通过设置不同的XY坐标,您可以选择不同的颜色。这种方式可以提供更广泛的颜色选择,通常用于支持更复杂的灯光效果和场景。
mireds(微逆度)
"微逆度"是一种用于表示光源色温的单位,通常用符号"mireds"表示,缩写为"M". 它是色温的倒数,以开尔文(K)为单位。更高的微逆度值表示更凉的颜色,而较低的值表示较暖的颜色。这是一个用于度量光源色温的标准单位。