使用 Arduino 通過 MQTT 協議連接 HomeAssistant -- 樹莓派端

前言

使用 HomeAssistant All-In-One 安裝完成之後,樹莓派端已經安裝了支持 MQTT 協議的 mosquito 。如果安裝日誌中出現了

「下列軟體包有為滿足的依賴關係:mosquitto:依賴:libssl1.0.0(>=1.0.1)但無法安裝它,mosquitto:依賴:libwebsocket3(>=1.2)但無法安裝它。mosquitto-clients:依賴:libmosquitto1(-1.4.14-0mosquitto1~jessie2)但是它將不會被安裝。E:無法修正錯誤,因為您要求某些軟體包保持現狀,就是它們破壞了軟體包間的依賴關係。」

請參考鏈接 github.com/eclipse/mosquitto/issues/529 。或執行如下兩條指令:

wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb
sudo dpkg -i libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb

然後重新安裝 mosquitto 即可(也可以再次執行 HomeAssistant All-In-One 安裝指令,已配置好的設備不會被重置)。

如果你按照 HomeAssistant All-In-One 安裝界面的引導進行了如下配置。

那麼執行 第二條命令,也就是 sudo mosquitto_passwd /etc/mosquitto/pwfile pi 的時候表示創建了一個 mosquitto 用戶,用戶名為 pi 。密碼就是執行完這條命令之後輸入的密碼。請牢記。

以下操作默認已經安裝完成 mosquitto 。


1. 測試mosquitto 的可用性

① 添加 MQTT 協議的支持

configure.yaml 文件中添加如下代碼(建議在每一個configure 文件中每一個 冒號後都添加一個英文的空格,防止出現意外的錯誤):

mqtt:
broker: 127.0.0.1
port: 1883
username: pi #將 pi 換成你的用戶名
password: mima #將 mima 換成你的 mosquitto 密碼

② 添加測試機構

如果在你的 configure.yaml 文件中已經存在 sensor:標籤,請務必忽略第一行,然後將剩餘的兩行代碼添加到 sensor: 標籤下。

sersor:
- platform: mqtt
state_topic: "home-assistant/arduino/test"
name: HelloArduino

保存之後執行如下指令,重啟 HomeAssistant ,重啟之後 HomeAssistant 首頁上應該會出現一個名為 HelloArduino 的圓形徽章。

sudo systemctl restart home-assistant.service

② 測試添加的機構是否可用

之後打開終端,輸入如下指令:

mosquitto_pub -h 127.0.0.1 -u pi -P mima -t home-assistant/arduino/test -m "Hello" #將 pi 換成你的用戶名,將 mima 換成你的密碼

然後打開 HomeAssistant 頁面,這個時候首頁上 HelloArduino 圓形徽章中間應該出現 Hello 。

2. 添加 Arduino 感測器配置

這個時候可以將之前sensor中添加的測試機構可以刪除,注意,如果你的 sensor: 標籤下僅有測試機構,請不要刪除sensor:這一行

以下是我的配置文件,僅供參考:

sensor:
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Temp_1
unit_of_measurement: °C
value_template: {{ value_json.Temp1 }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Temp_2
unit_of_measurement: °C
value_template: {{ value_json.Temp2 }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Humi
unit_of_measurement: %
value_template: {{ value_json.Humidity }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Humi
unit_of_measurement: %
value_template: {{ value_json.Humidity }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Brightness
unit_of_measurement: mV
value_template: {{ value_json.Brightness }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Preasure
unit_of_measurement: mb
value_template: {{ value_json.Preasure }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_Atmosphere
unit_of_measurement: atm
value_template: {{ value_json.Atmosphere }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_FireSensor
unit_of_measurement: mV
value_template: {{ value_json.Fire }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_FireState
unit_of_measurement: mV
value_template: {{ value_json.Fire }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_FireState
value_template: {{ value_json.FireState }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_BodyState
value_template: {{ value_json.BodyState }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_ObjectDistance
unit_of_measurement: mm
value_template: {{ value_json.ObjectDistance }}
- platform: mqtt
state_topic: "home-assistant/arduino/arduino1"
name: Arduino_ShockState
value_template: {{ value_json.ShockState }}

將這些配置文件添加完成後,再次執行以下指令,重啟 HomeAssistant 服務即可。

sudo systemctl restart home-assistant.service

至此,樹莓派端設置完成。在這裡我使用的 Arduino 設備都是感測器,不包含開關等控制設備。

至於燈或者開關燈控制設備,請參考下一篇文章。

推薦閱讀:

TAG:Arduino | 開源硬體 | 單片機 |