關於hass對接mqtt 請參考官網
https://www.hachina.io/docs/7083.html
1 登陸運行着hass的阿里雲服務器
2 修改hass配置文件,添加mqtt服務信息
把這個文件拷貝到自己的電腦上,修改后重新上傳服務器
添加以下內容
2.1hass連接Mqtt服務器
參考官網 https://www.hachina.io/docs/7211.html
你可以使用Mosquitto的公有雲MQTT服務器進行測試。如下配置:
# configuration.yaml配置樣例
mqtt:
# MQTT Broker的IP地址或者域名
broker: test.mosquitto.org
#如過是本地搭建的
#broker: 127.0.0.1
# MQTT Broker的端口號,缺省為1883
port: 1883
# 用戶名
#username: hachina
# 密碼
#password: hachina
# 配置自動發現
discovery: true
# 自動發現使用的主題位置前綴,缺省為homeassistant
discovery_prefix: homeassistant
2.2hass手動添加一個設備(燈)
參考官網 https://www.hachina.io/docs/7214.html
- 主題位置(topic)
主題位置表明雙方在哪里進行通訊。
比如,一盞燈的命令主題(command_topic),表示HomeAssistant會將開關命令發送到這兒,而燈會到這兒讀取命令進行開關操作;比如,一個溫度計的狀態主題(state_topic),表示溫度計會將溫度值發送到這兒,HomeAssistant會從這兒讀取溫度展現在前端。
一個設備可能包含多個主題位置。例如,溫濕度傳感器的溫度和濕度可以分在兩個主題位置,燈的狀態和控制命令一般也會分在不同的主題位置。 - 信息內容(payload)
信息內容表示雙方用什么信息代表什么含義。
比如,開關燈命令,可以是”ON/OFF”,也可以是”on/off”,”true/false”,”1/0″……
HomeAssistant配置項中payload_XXXX代表對信息內容的配置。
# 這是一個MQTT設備,名字是"MQTT Sensor 1",在MQTT中發布信息的位置在"home/bedroom/temperature"
# 此配置添加系統內實體sensor.mqtt_sensor_1
light:
#設備類型 MQTT
- platform: mqtt
# 設備名字
name: "LED light over MQTT"
# HASS標准格式 狀態話題 HASS接收來自設備的狀態信息
state_topic: "hachina/hardware/led01/state"
# HASS標准格式 命令話題 HASS發送控制設備的命令
command_topic: "hachina/hardware/led01/switch"
# 命令格式 on 和 off
payload_on: "on"
payload_off: "off"
被控端(燈)將狀態發布到主題“hachina/hardware/led01/state
”中,控制端(HomeAssistant)訂閱這個主題,用於當前狀態顯示;
控制端(Home Assistant)將控制命令發布到主題“hachina/hardware/led01/switch
”中,被控端(燈)訂閱這個主題,根據其內容進行實際的開關動作。
雙方以”on”代表開,以”off”代表關。
3重啟 hass
4 登陸控制台,發現多了個燈設備
5 點擊按鈕,在對應話題會收到" on "
在hass點擊一下開關,開關打開
手機調試軟件訂閱話題,模擬自己是個燈監聽
但是馬上hass界面端的按鈕又回到關閉狀態,為什么?
因為手機只是監聽,沒有往狀態話題發布消息--on, 這樣hass沒有得到燈的反饋,誤以為它沒開,而自動把開關展示狀態顯示為關。
需要在硬件esp8266中寫程序,每次收到 開燈命令,對應返回 開的狀態。