DIY水族溫度計接入Home Assistant

最近看水母討論群組內在找為何水母會出問題時常常問到溫度,可見溫度對於水母的生長是十分重要的一個因素。如果在海洋內由於水體夠大,水溫一般來說不會出現太大的震盪,但養殖在魚缸內水溫就容易因為室溫的變化而跟著變動,水體越小越容易上升或下降。這時候有些人會選擇使用冷氣固定室溫,或是使用水冷機。不過我沒有水冷機,24小時開冷氣也不太經濟。於是就想說能不能接入我原本就有在用的Home Assistant做監控,必要時可以遠端開啟冷氣,之後如果購入水冷機也可以自動化控制水冷機的開關。不過上網尋找了一下,並沒有找到能夠放在魚缸內的智慧溫度計,大多是測量室溫的智慧溫度計。
看來只能靠自己了,先前有在智慧家庭的群組聽過ESPHome,據說可以將開發板接上各種感測器後加入HA的系統中。可玩性十分高並且ESP的開發板也不貴,於是這次就藉由這個機會來試試看。
事前準備

- ESP32 (NodeMCU-32S)
- DS18B20感測器(防水版)
- 4.7k電阻
- 麵包板 / 擴展板
- 跳線
接線
可以參考這個網站:ESP32 - Temperature Sensor _ ESP32 Tutorial
擴展板
後來發現要接在5V,測得的數據比較準,不然會低1度C左右,對照組是另一條2m的防水DS18B20、水族溫度計、液晶溫度計、食品溫度計,它們的數值是比較接近的。

麵包板

安裝ESPHome
在Home Assistant的附加元件商店
新增裝置
+ NEW DEVICE
初始化ESP32
設定名稱及網路

網路我因為設定過了,沒跳出來…
安裝
跳過這步

選擇ESP32

Install

將NodeMCU-32S用USB連接到安裝Home Assistant的機器上

安裝



等它跑完之後就可以按下STOP,之後通知就會自動找到新設備,不過可以稍後再設定

設定檔
接下來我們要把config檔寫入ESP內
點選EDIT

可以看到YAML格式的設定檔,需要做一些修改:
name、key及password的部分應該會自動生成
esp32 board類型改為
1
2esp32:
board: nodemcu-32s加入DS18B20的設定參數
我們的資料針腳接在GPIO21,所以這裡填入GPIO21。資料更新間隔沒寫的話預設是60秒,如果要手動設定可以像範例這樣寫。第一次使用的時候要先取得sensor的address,所以先不用sensor區域。
1
2
3
4
5
6# DS18B20 Temperature Sensor
dallas:
- pin: GPIO21
update_interval: 60s
# Note you don't have to add any sensors at this point完整config範例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38esphome:
name: jellyfish-ds18b20
esp32:
board: nodemcu-32s
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "XXXXXXXXXXXXXXXXXXX"
ota:
password: "XXXXXXXXXXXXXXXXX"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Jellyfish-Ds18B20"
password: "XXXXXXX"
captive_portal:
# DS18B20 Temperature Sensor
dallas:
- pin: GPIO21
update_interval: 60s
# address may different
#sensor:
# - platform: dallas
# address: 0x5e030497940af528
# name: "Jellyfish Temperature"
燒入ESP32
SAVE後按INSTALL,看是要用Wirelessly或是接線都可以
- 無線

- 有線

- 無線
等到安裝完成就可以找到sensor的address,把它記下來

補上 sensor address
回到YAML,把sensor資料補上(或是取消註解)。完成後同樣SAVE、INSTALL,再次燒到ESP32內。
1 | sensor: |
加入整合元件
從剛剛的通知裡進入設定頁面,輸入在YAML內顯示的金鑰。

複製"YOUR_KEY"那顯示的文字,貼到金鑰欄位。
1 | # Enable Home Assistant API |
完成後就會看到整合內有剛剛設定的ESP設備

完工
最後就可以加入主面板


參考
- Monitor Equipment Temps with the Dallas Temp Sensors, ESPHome, Home Assistant and Grafana - YouTube
- Day28 - Home Assistant + ESPHome - iT 邦幫忙__一起幫忙解決難題,拯救 IT 人的一天
- NodeMCU ESP32 - ESPHome
- Dallas Temperature Sensor - ESPHome
- Building a temperature sensors for Home Assistant - Wemos D1 Mini with DS18B20 build guide