使用Home Assistant的MQTT灯光控制说明

使用Home Assistant的MQTT灯光控制说明缩略图

Home Assistant允许您控制支持MQTT的灯光设备。它支持设置亮度、色温、效果、闪烁、开/关、RGB颜色、过渡、XY颜色和白色值。

使用Home Assistant的MQTT灯光控制说明概述

当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

command_topic(必

  • 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平台的比较:

color_temp_comm

功能mqttmqtt_jsonmqtt_template
亮度
色温
效果
闪烁
RGB颜色
过渡
XY颜色
白色值

示例:

启用支持亮度和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(开/关、亮度和颜色)。

扩展阅读:

effect_value_te

XY颜色

灯光的"XY状态"通常指的是灯光的颜色坐标。在某些灯光系统中,颜色可以使用XY坐标来表示,而不是传统的RGB颜色或色温(Kelvin)值。

这里的"XY状态"表示灯光当前的颜色坐标,其中X和Y分别表示颜色在色域中的位置。通过设置不同的XY坐标,您可以选择不同的颜色。这种方式可以提供更广泛的颜色选择,通常用于支持更复杂的灯光效果和场景。

mireds(微逆度)

"微逆度"是一种用于表示光源色温的单位,通常用符号"mireds"表示,缩写为"M". 它是色温的倒数,以开尔文(K)为单位。更高的微逆度值表示更凉的颜色,而较低的值表示较暖的颜色。这是一个用于度量光源色温的标准单位。

payload_on(可选):

技术术语(共 5 个)—— 点击展开
MQTT轻量级物联网消息传输协议,基于发布/订阅模式,适合低带宽不稳定网络
QoS服务质量等级,0 最多一次 / 1 至少一次 / 2 恰好一次
TopicMQTT 主题,消息路由的层级字符串,支持通配符 + 与 #
订阅客户端向 Broker 注册感兴趣的主题以接收消息
发布客户端向指定主题发送消息
来源/工具信息 —— 点击展开
来源 MQTT中文网(mqtt.cn) —— 国内领先的MQTT通信协议技术社区 分类 Home Assistant 字数 3612 字 · 阅读约 10 分钟 更新 2023-09-11 永久链接 https://www.mqtt.cn/589.html
推荐工具:MQTT调试助手 微信小程序
MQTT中文网官方推出的MQTT调试工具,支持 MQTT 3.1.1/5.0 实时连接调试、主题订阅、消息收发监控与报文分析。 无需安装,微信搜索「MQTT调试助手」即可使用。 电脑端入口:https://www.mqtt.cn/mqtttool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 mqtt.cn
相关标签
📝 作者声明
本文由 MQTT中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口