|
|
這篇從「什麼都還沒買」開始,做到一台 ESP32 上面掛五種感測器,全部出現在 Home Assistant 裡。
每一步都會告訴你「做完應該看到什麼」。看不到就不要往下走,因為下一步的錯誤訊息會指向錯的地方。

做完這篇你會有什麼
- 一台插電的 ESP32,在 Home Assistant 裡有溫度、濕度、氣壓、照度、土壤濕度、CO2、PM2.5、PM10、Wi-Fi 訊號、運轉時間
- 一份可以直接複製燒錄的完整設定檔(不是片段)
- 一套「新增第二台只要改三行」的共用設定
- 每顆感測器的校正方法與正常讀值範圍,你自己判斷得出來讀值是對還是壞
先講一件會讓你白花兩個小時的事
網路上大部分 ESPHome 教學(包括這篇的舊版)都會示範這樣的設定:
這一行不會過。 ESPHome 官方文件對 name 的規定是「只能包含小寫字母、數字與連字號」,預設長度上限 24 個字元。中文字、底線、大寫字母都會在驗證階段就被擋下來。
同樣的規則也適用在 substitutions 的鍵名 —— `裝置名稱: xxx` 不合法。
中文要放在 friendly_name 裡,那一個才是給 Home Assistant 看的顯示名稱。這篇所有設定檔都照這個寫法,你可以整份複製。
---
步驟 1:買零件
一台全配(五顆感測器都上)大約 2,000 元。如果你只想先做溫濕度 + 照度,大約 400 元就夠了。
括號裡是台灣賣場(蝦皮、露天、台北光華商場的電子零件攤)常見的搜尋關鍵字。
必買(不管你要做哪幾顆)
- ESP32 開發板 ×1(搜「ESP32 DevKit V1」或「ESP32-WROOM-32 開發板 38pin」,約 150~250 元)
- 麵包板 830 孔 ×1(搜「麵包板 830 孔」,約 50 元)
- 杜邦線 公對母 ×1 排(搜「杜邦線 公對母 40pin 20cm」,約 40 元)
- 杜邦線 公對公 ×1 排(搜「杜邦線 公對公 40pin」,約 40 元)
- USB 傳輸線(看板子是 Micro-USB 還是 USB-C,買錯是最常見的第一天卡關)
- USB 充電器 5V 至少 1A(掛兩顆以上感測器建議 2A,理由在步驟 11)
感測器(按你要做的挑)
- BME280(搜「BME280 三合一 溫濕度 氣壓 模組」,約 120~180 元)—— 溫度、濕度、氣壓三合一
- BH1750(搜「BH1750 數位光照度模組 GY-302」,約 50~80 元)—— 照度
- 電容式土壤濕度感測器(搜「電容式土壤濕度感測器 v1.2」,約 50~80 元)—— 一定要「電容式」
- SCD41(搜「SCD41 二氧化碳感測器模組」,約 900~1,300 元)—— 真正的 CO2
- PMS5003(搜「PMS5003 攀藤 粉塵感測器」,約 500~700 元,要含轉接板與專用排線)—— PM2.5 / PM10
為什麼選 ESP32-WROOM-32 而不是 ESP32-C3 或 ESP8266
- ESP8266 不要考慮了:腳位少、只有一個類比輸入、而且 ESPHome 的新元件愈來愈多只在 ESP32 上有。價差不到一百元
- C3 是單核心,做單純的感測器完全夠用,但你之後如果想在同一片板子上再開藍牙代理,雙核心的 WROOM-32 穩定很多
- WROOM-32 的腳位最多,這篇要同時用到 I2C(2 腳)、ADC(1 腳)、UART(2 腳),38pin 的板子插得下且還有餘裕
為什麼 BME280 不選 DHT22
很多舊教學會說「DHT22 比較不準」。精度差距其實沒那麼大(DHT22 溫度 ±0.5°C、BME280 ±1.0°C,濕度 DHT22 ±2~5%RH、BME280 ±3%RH)。真正的理由是介面:
- BME280 走 I2C,兩條訊號線就好,而且市售模組板上已經內建上拉電阻與穩壓,直接插就能用
- DHT22 走的是自訂單線協定,裸片必須自己在 DATA 腳與 3.3V 之間加一顆 10kΩ 上拉電阻。忘了加不會燒壞,只會一直在日誌裡印 `Invalid readings`,而新手九成會去懷疑接線或程式
- DHT22 兩秒才能讀一次,BME280 沒有這個限制
- BME280 多送你一個氣壓,那個值拿來當 SCD41 的氣壓補償剛好(步驟 9 會用到)
⚠ 買 BME280 要注意:市面上有一批標「BME280」但實際是 BMP280 的便宜模組(少了濕度)。分辨方法是看晶片上的絲印:BME280 的絲印通常是 U 開頭,BMP280 是 K 或 J 開頭。買到 BMP280 的話設定檔要改用 `bmp280_i2c` 平台,而且不會有濕度。步驟 6 的掃描結果也分辨得出來。
---
步驟 2:在電腦上裝 ESPHome
有三種裝法,這篇用第一種。
- Home Assistant 的 ESPHome Device Builder 應用程式 —— 最簡單,而且燒錄、看日誌、改設定都在同一個網頁裡。本篇用這個
- web.esphome.io —— 不用裝東西,但只能燒第一次,之後還是要回 HA
- pip install esphome —— 命令列版,適合不跑 HA 的人
操作(Home Assistant 2026.2 起「附加元件 Add-ons」已改名為「應用程式 Apps」,選單路徑跟舊教學不一樣):
- 設定 → 應用程式 → 應用程式商店
- 搜尋 ESPHome Device Builder
- 安裝 → 啟動 → 把「在側邊欄顯示」打開
你會看到什麼:側邊欄多出一個 ESPHome 的項目,點進去是一片空白的裝置清單,右下角有一個「+ NEW DEVICE」按鈕。
看不到側邊欄的項目代表「在側邊欄顯示」那個開關沒打開,回應用程式頁面再開一次。
商店裡搜不到代表你不是 HA OS 或 Supervised 安裝(Container 版沒有應用程式系統),要改用 `pip install esphome`。
---
步驟 3:把 Wi-Fi 密碼放進 secrets
ESPHome 的設定檔你之後一定會貼到網路上求救,密碼不要寫在裡面。
在 ESPHome 頁面右上角點三個點 → Secrets Editor,貼進去:
- wifi_ssid: "你家的WiFi名稱"
- wifi_password: "你家的WiFi密碼"
- ap_password: "至少八個字的備援密碼"
複製代碼
⚠ 三件事:
- ESP32 只連得上 2.4GHz。如果你的路由器把 2.4G 和 5G 設成同一個名稱,先暫時分開,或者在路由器把這台裝置綁在 2.4G
- SSID 有中文的話會很麻煩,ESPHome 支援但常出怪問題,能改英文就改
- ap_password 至少八個字元,少於八個 wifi 元件會驗證失敗
你會看到什麼:按 SAVE 之後沒有任何錯誤訊息,回到裝置清單。這個檔案是全域的,之後所有裝置共用。
---
步驟 4:建立第一份設定檔並燒錄(還沒有任何感測器)
這一步刻意不接任何感測器。 目的是先確認板子、Wi-Fi、燒錄這三件事都通了,不然之後感測器沒反應你會分不出是哪裡的問題。
點「+ NEW DEVICE」,名稱填 sensor-study(小寫英文與連字號),板子選 ESP32 → ESP32 Dev Module。它會自動產生一份設定並且把 api 加密金鑰寫進去。
產生之後點 EDIT,把整份內容換成下面這一份:
- esphome:
- name: sensor-study
- friendly_name: 書房感測器
- esp32:
- board: esp32dev
- framework:
- type: esp-idf
- logger:
- api:
- encryption:
- key: "這一行不要動,用它自己產生的那一串"
- ota:
- - platform: esphome
- encryption:
- wifi:
- ssid: !secret wifi_ssid
- password: !secret wifi_password
- ap:
- ssid: "sensor-study-fallback"
- password: !secret ap_password
- captive_portal:
- # 讓你知道這台是活的還是掛了
- binary_sensor:
- - platform: status
- name: 狀態
- sensor:
- - platform: wifi_signal
- name: WiFi訊號
- update_interval: 300s
- - platform: uptime
- name: 運轉時間
- update_interval: 300s
- button:
- - platform: restart
- name: 重新開機
複製代碼
|
|