(二 -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

字符串)(可選)表示不可用狀態的有效內容。

默認值:離線

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM