上次我們在安裝HomeAssistant的時候(打卡智能家居學(xué)習(xí)之旅(1):了解HomeAssistant),順便把MQTT 集成安裝好了。
為什么要裝MQTT 集成呢?Wi-Fi 設(shè)備(Ai-WB2 或者Ai-M6x等模組)接入服務(wù)器必定要使用網(wǎng)絡(luò)協(xié)議,而MQTT 是這些網(wǎng)絡(luò)協(xié)議中最常用的。例如:阿里云的物聯(lián)網(wǎng)平臺,例如米家、鴻蒙等都有基于MQTT協(xié)議的接入方式,而HomeAssistant 對MQTT的適配也十分友好。
HomeAssistant的MQTT(MQTT的基本知識自行學(xué)習(xí),這節(jié)不講MQTT協(xié)議):HomeAssistant的MQTT集成,可以理解為一個MQTT的客戶端,通過固定的數(shù)據(jù)格式,能夠自己訂閱Topic,并且接收數(shù)據(jù)和下發(fā)數(shù)據(jù)。
所以在使用HomeAssistant 的MQTT 的時候,需要先配置遠(yuǎn)程MQTT服務(wù)器。設(shè)備接入HomeAssistant 的方式請看下圖:
MQTT 服務(wù)器負(fù)責(zé)轉(zhuǎn)接了HomeAssistant和其他Wi-Fi 設(shè)備的數(shù)據(jù),HomeAssistant 只不過是訂閱了每一個接入到HomeAssistant 上的設(shè)備的Topic,和獲取到了每個設(shè)備下發(fā)的Topic。
MQTT 服務(wù)器的搭建
MQTT 服務(wù)器我建議使用遠(yuǎn)程服務(wù)器來搭建,當(dāng)然局域網(wǎng)中也可以,使用遠(yuǎn)程服務(wù)器主要還是為了避免家里有多個局域網(wǎng)(多個路由器)的情況,防止任意能夠訪問網(wǎng)絡(luò)的Wi-Fi 設(shè)備都能接入。本地服務(wù)器的搭建方式可以參考搭建MQTT服務(wù)器的帖子:在pi上面部署開源的MQTT服務(wù)器(EMQX)。
遠(yuǎn)程服務(wù)器的搭建也差不多,只是系統(tǒng)不一樣而已。首先登錄到遠(yuǎn)程服務(wù)器上:
后面的步驟就參考上述帖子,貼上相關(guān)指令:
下載 MQTTx Ubuntu 版
wget https://www.emqx.com/zh/downloads/broker/5.6.1/emqx-5.6.1-ubuntu20.04-amd64.deb
安裝:
sudo apt install ./emqx-5.6.1-ubuntu20.04-amd64.deb
運(yùn)行:
sudo systemctl start emqx
安裝完成之后,遠(yuǎn)程服務(wù)器還需要開放兩個端口:18083和1883.(18083 是MQTT后臺管理端口,1883 是客戶端連接端口,如果需要加密連接(SSL/TSL)的話,可能還需要開放8883)
最后驗(yàn)證一下,打開瀏覽器輸入:ip:18083,訪問成功:首次登錄賬號:admin,密碼:public
HomeAssistant 連接服務(wù)器
分別點(diǎn)擊 “配置”——>"設(shè)備與服務(wù)"——>"添加集成"——>輸入框搜“MQTT”,填入MQTT服務(wù)器的IP地址:
連接成功會提示。
另外建議打開HomeAssistant 的高級功能,用來配置MQTT發(fā)現(xiàn)前綴等內(nèi)容。
可以開啟高級選項(xiàng),能夠配置客戶端ID及其他功能。
接入HomeAssistant 的前提條件
首先需要了解HomeAssistant 的MQTT 自動發(fā)現(xiàn)機(jī)制:HomeAssistant 官方規(guī)定其他MQTT設(shè)備想要在HomeAssistant中顯示,就需要在連接MQTT服務(wù)器的時候,以實(shí)體的方式進(jìn)行登錄。HomeAssistant 平臺才能識別到,并顯示在MQTT集成里面。如下圖所示:
HomeAssistant 官方也給出了關(guān)于實(shí)體登錄的文檔:https://www.home-assistant.io/integrations/mqtt
對接例子如下:
上面的意思是:連接服務(wù)器之后,給某個Topic 發(fā)送固定的示例上的json 數(shù)據(jù)。
Topic:
homeassistant/binary_sensor/garden/config
Json:
{ "name":null, "device_class":"motion", "state_topic":"homeassistant/binary_sensor/garden/state", "unique_id":"motion01ad", "device":{ "identifiers":[ "01ad" ], "name":"Garden" } }
使用MQTTx 客戶端測試一下:
按照上述內(nèi)容發(fā)送之后,HomeAssistant 的MQTT 集成就能顯示東西了。所以說,每個實(shí)體只要根據(jù)說明發(fā)送相應(yīng)的數(shù)據(jù)就能登錄上去了~
審核編輯 黃宇
-
智能家居
+關(guān)注
關(guān)注
1928文章
9553瀏覽量
184926
發(fā)布評論請先 登錄
相關(guān)推薦
評論