參考網站
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
如果沒有定義狀態主題,則為elsefalse
。 - payload_on
-
(字符串)(可選)表示啟用狀態的有效內容。
默認值:ON
- payload_off
-
(字符串)(可選)表示禁用狀態的有效內容。
默認值:OFF
- 服務質量
-
(整數)(可選)狀態主題的最大QoS級別。
默認值:0
- 保留
-
(布爾值)(可選)如果發布的消息應該具有保留標志。
默認值:false
- rgb_command_template
-
(字符串)(可選)定義用於撰寫將發送到的消息的模板
rgb_command_topic
。可用變量:red
,green
和blue
。 - rgb_command_topic
-
(字符串)(可選)用於發布命令以更改燈光RGB狀態的MQTT主題。
- rgb_state_topic
-
(字符串)(可選)訂閱MQTT主題以接收RGB狀態更新。例如,預期有效載荷是由逗號分隔的RGB值
255,0,127
。 - rgb_value_template
-
(字符串)(可選)定義用於提取RGB值的模板。
- state_topic
-
(字符串)(可選)訂閱MQTT主題以接收狀態更新。
- state_value_template
-
(字符串)(可選)定義用於提取狀態值的模板。模板應與有效負載
on
和off
值匹配,因此如果您的燈用於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
-
(字符串)(可選)表示不可用狀態的有效內容。
默認值:離線