前期準備
- 樹莓派3B
- NodeMCU ESP8266 CH340
- 5v繼電器
- 溫度傳感器DS18b20
該教程是在繼電器已經接入ESP8266,且ESP8266的基本配置已經完成的基礎上的延伸。基本配置參考前期的文章《nodemcu+樹莓派控制繼電器實現智能插座》。
一.ESP8266接入溫度傳感器
1.硬件連接
繼電器的連接與上一教程一致,溫度傳感器的VCC接3.3V,GND接地,DQ端接ESP8266的D4腳。
2.ESP8266配置
這裏只寫溫度傳感器的配置,繼電器配置看上一教程。
在瀏覽器地址欄輸入ESP8266的ip,點擊Devices項,在新的空白一欄點擊Edit。
Device欄選擇DS18b20,Name自定義,Enabled勾選,1st GPIO就是硬件上DQ端與ESP8266連接的引腳,Delay延時自行設置調整,Value自定義,後面會用到。
配置完成後submit,close。
二.配置HASS
在configuration.yaml中添加如下代碼:
sensor:
- platform: mqtt
name: "temperature"
state_topic: "/ESP_Easy/temperature/Temperature"
qos: 1
unit_of_measurement: "℃"
保存重啓HASS,應該能在HASS界面中出現溫度了。
三.設置自動化
Home Assistant 中的自動化遵循觸發條件trigger —— 環境條件condition —— 執行動作 action 的三步邏輯。
觸發條件是我們傳統意義上的條件,即某個事件的發生啓動了自動化的進程;環境條件是附加條件,可爲空,即在觸發條件發生下,自動化還受某些環境因素所制約;動作則是自動化的目標和終點,即自動化最終要實現的操作。
在這裏,我設置了當溫度超過26℃,且低於30℃時,打開繼電器。在configuration.yaml中添加如下代碼:
automation:
- alias: 'Rule - temperature high'
# 定義該自動化規則的名字
trigger:
# 觸發條件
platform: numeric_state
# 數字狀態觸發器
entity_id: sensor.temperature
# 實體id是溫度傳感器
above: 26
below: 30
# 如果從低到高越過26,或者從高到低越過30,就觸發。換句話說,就是從[26,30]之外的範圍進入這個範圍。
action:
# 調用服務,打開繼電器
service: switch.turn_on
entity_id:
- switch.switch
保存,重啓HASS。能在HASS界面中看到該自動化規則,且測試當傳感器溫度高於26℃,低於30℃時,能控制繼電器打開。