• (二 -3) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列


    参考网站

    1该mqtt光平台可以让您控制您的MQTT启用灯。它支持设置亮度,色温,效果,闪烁,开/关,RGB颜色,过渡,XY颜色和白色值。

     https://www.home-assistant.io/components/light.mqtt/

    2 如何自动发现MQTT设备-hass外文教程(全面)

    https://www.home-assistant.io/docs/mqtt/discovery/

    3 如何自动发现MQTT设备-hass中文教程(简洁)

    https://www.hachina.io/docs/7230.html

    1 开启自动发现MQTT设备功能----------修改HASS配置文件

    HomeAssistant支持自动发现,需要在配置文件中增加:

    mqtt:
      # 此处为mqtt原有的一些配置
      # ……
      # 配置自动发现
      discovery: true
      # 自动发现使用的主题位置前缀,缺省为homeassistant
      discovery_prefix: homeassistant
    

    2hass自动发现配置话题格式

    设备将自己的配置信息发布在主题位置:

    例如:一个编号ID为 “led1091289” 的开关(switch)需要把自己的配置信息发送到如下位置,hass才能自动识别它是一个开关类型设备

    homeassistant/switch/led1091289/config
    

      

    除了开关还有支持自动发现的设备包括:

    • 开关型传感器(binary_sensor)
    • 摄像头(camera)
    • 窗帘(cover)
    • 电扇(fan)
    • 灯(light)
    • 传感器(sensor)
    • 开关(switch)

     警告:   如果是一个灯,一定要选择好设备类型

    例如一个 七彩可调亮度和颜色的灯

    正确话题;

    homeassistant/light/led1091289/config
    

    在此话题下,hass判定这是一个灯,可以正确使用开关,颜色,亮度修改API 

    错误话题:

    homeassistant/switch/led1091289/config
    

    在此话题下,hass判定这是一个开关(例如插座),只能使用开关API,其余颜色和亮度API无法使用

    3设备自身配置变量

     例如,一个mqtt设备在配置文件中,一个只具备开关功能的灯配置信息。

    switch:
      - platform: mqtt
        name: "garden"
        command_topic: "hachina/switch/irrigation/set"
        state_topic: "hachina/switch/irrigation/state"
    

    hachina /   设备类型 /设备编号/   set  

    hachina /   设备类型 /设备编号/   state    

    为了给hass能够识别,需要把这些信息打包成json格式;

    {"name": "garden", "command_topic": "hachina/switch/irrigation/set", "state_topic": "hachina/switch/irrigation/state"}

     然后发送给配置话题

    homeassistant/light/led1091289/config
    

      

    4 示例使用

    4.1仅支持开和关的一般灯

     配置话题

    homeassistant/light/led1/config
    

    发送您内容

    {"name": "garden", "command_topic": "hachina/switch/irrigation/set", "state_topic": "hachina/switch/irrigation/state"}
    

    当HomeAssistant读取此信息,相当于配置文件中存在以下内容:

    switch:
      - platform: mqtt
        name: "garden"
        command_topic: "hachina/switch/irrigation/set"
        state_topic: "hachina/switch/irrigation/state"
    

      

    4.2支持亮度和RGB

    ------设备(例如ESP8266)上电后检查和MQTT连接状态,每次断连后重新往配置话题发送自己的配置信息。

    配置话题

    homeassistant/light/rgb_led1/config
    

      

    发送内容:

    {"name": "RGBlight", "command_topic": "hachina/rgb1/light/switch", "state_topic": "hachina/rgb1/light/status","brightness_command_topic": "hachina/rgb1/brightness/set", "brightness_state_topic": "hachina/rgb1/brightness/status","rgb_command_topic": "hachina/rgb1/rgb/set","rgb_state_topic": "hachina/rgb1/rgb/status","state_value_template": "{{ value_json.state }}","brightness_value_template": "{{ value_json.brightness }}","rgb_value_template": "{{ value_json.rgb | join(',') }}","optimistic": false}
    

    当HomeAssistant读取此信息,相当于配置文件中存在以下内容:

    platform: mqtt
        name: "Office Light RGB"
        state_topic: "hachina/rgb1/light/status"
        command_topic: "hachina/rgb1/light/switch"
        brightness_state_topic: "hachina/rgb1/brightness/status"
        brightness_command_topic: "hachina/rgb1/brightness/set"
        rgb_state_topic: "hachina/rgb1/rgb/status"
        rgb_command_topic: "hachina/rgb1/rgb/set"
        state_value_template: "{{ value_json.state }}"
        brightness_value_template: "{{ value_json.brightness }}"
        rgb_value_template: "{{ value_json.rgb | join(',') }}"
        qos: 0
        payload_on: "ON"
        payload_off: "OFF"
        optimistic: false
    	
    

      

     5 硬件实现

    官网给的基本例程,还没有加入自动发现,是在手动添加配置文件前提下,控制灯的ESP8266代码。

    可参考用:https://www.home-assistant.io/components/light.mqtt/

     注意修改 esp8266  mqtt库允许发送最大的 数据长度

    除了这四个基本参数,还有更多其他参数。

    名称

    字符串)(可选)灯的名称。

    默认值:MQTT Light

    command_topic

    字符串)(必需)MQTT主题,用于发布更改开关状态的命令。

    brightness_command_topic

    字符串)(可选)用于发布命令以更改灯光亮度的MQTT主题。

    brightness_scale

    整数)(可选)定义MQTT设备的最大亮度值(即100%)。

    默认值:255

    brightness_state_topic

    字符串)(可选)订阅的MQTT主题接收亮度状态更新。

    brightness_value_template

    字符串)(可选)定义用于提取亮度值的模板

    color_temp_command_topic

    字符串)(可选)要发布命令以更改灯的色温状态的MQTT主题。色温命令滑块的范围为153到500 mired(微倒数)。

    color_temp_state_topic

    字符串)(可选)订阅的MQTT主题接收色温状态更新。

    color_temp_value_template

    字符串)(可选)定义模板以提取色温值。

    effect_command_topic

    字符串)(可选)要发布命令以更改灯光效果状态的MQTT主题。

    effect_state_topic

    字符串)(可选)订阅的MQTT主题接收效果状态更新。

    effect_value_template

    字符串)(可选)定义模板以提取效果值。

    effect_list

    字符串列表)(可选)灯光支持的效果列表。

    on_command_type

    字符串)(可选)定义何时发送payload_on。使用last(默认)将首先发送任何样式(亮度,颜色等)主题,然后payload_on发送到command_topic。使用first将发送payload_on然后发送任何样式主题。使用brightness只会发送亮度命令而不是payload_on打开灯。

    乐观

    boolean)(可选)用于定义switch是否在乐观模式下工作的标志。

    默认值:true如果没有定义状态主题,则为else false

    payload_on

    字符串)(可选)表示启用状态的有效内容。

    默认值:ON

    payload_off

    字符串)(可选)表示禁用状态的有效内容。

    默认值:OFF

    服务质量

    整数)(可选)状态主题的最大QoS级别。

    默认值:0

    保留

    布尔值)(可选)如果发布的消息应该具有保留标志。

    默认值:false

    rgb_command_template

    字符串)(可选)定义用于撰写将发送到的消息的模板rgb_command_topic。可用变量:redgreenblue

    rgb_command_topic

    字符串)(可选)用于发布命令以更改灯光RGB状态的MQTT主题。

    rgb_state_topic

    字符串)(可选)订阅MQTT主题以接收RGB状态更新。例如,预期有效载荷是由逗号分隔的RGB值255,0,127

    rgb_value_template

    字符串)(可选)定义用于提取RGB值的模板

    state_topic

    字符串)(可选)订阅MQTT主题以接收状态更新。

    state_value_template

    字符串)(可选)定义用于提取状态值的模板。模板应与有效负载onoff值匹配,因此如果您的灯用于power on打开,则在开关打开state_value_template时应返回字符串power on。例如,如果消息是公正的on,那么您state_value_template应该是power 

    white_value_command_topic

    字符串)(可选)要发布命令以更改灯的白色值的MQTT主题。

    white_value_state_topic

    字符串)(可选)订阅的MQTT主题接收白值更新。

    white_value_template

    字符串)(可选)定义模板以提取白色值。

    xy_command_topic

    字符串)(可选)用于发布命令以更改灯的XY状态的MQTT主题。

    xy_state_topic

    字符串)(可选)订阅的MQTT主题接收XY状态更新。

    xy_value_template

    字符串)(可选)定义用于提取XY值的模板

    availability_topic

    字符串)(可选)订阅MQTT主题以接收可用性(在线/离线)更新。

    payload_available

    字符串)(可选)表示可用状态的有效内容。

    默认值:在线

    payload_not_available

    字符串)(可选)表示不可用状态的有效内容。

    默认值:离线

     
  • 相关阅读:
    MVC框架简介
    模型-视图-控制器模式
    高德地图基本开发
    质量属性的六个常见属性场景分析
    架构漫谈读后感
    第十周
    第九周总结
    第八周总结
    springboot基于mybatis的pegehelper分页插件
    webmagic之爬取数据存储为TXT
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9483163.html
Copyright © 2020-2023  润新知