找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 3|回覆: 0

    ESPHome 從零:做出你第一個自己的溫濕度感測器

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005752
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    買一個 Zigbee 溫濕度計大概三百多。
    自己做一個大概兩百多。

    但自己做的價值不在省錢,在於「想要什麼就加什麼」。



    ESPHome 是什麼

    一句話:用 YAML 描述你要的功能,它幫你編譯成韌體燒進晶片。

    你不用寫 C++(雖然需要的時候可以寫),
    只要描述「這個腳位接了什麼感測器」,剩下它處理。

    而且編譯出來的韌體直接跟 HA 用原生協定溝通 ——
    不經過 MQTT、不經過雲端、延遲極低。

    要準備什麼


    • 一片 ESP32 開發板 —— 約 150-250 元
    • 一個 AHT20 或 SHT30 溫濕度感測器 —— 約 80-150 元
    • 四條杜邦線
    • 一條 USB 傳輸線(要是能傳資料的,不是只能充電的)


    為什麼推薦 ESP32 而不是 ESP8266


    • 記憶體多很多(做藍牙代理必須 ESP32)
    • 有藍牙
    • 價差只有幾十塊


    第一步:安裝 ESPHome

    最簡單的方法:裝附加元件


    • 設定 → 附加元件 → 附加元件商店
    • 搜尋 ESPHome Device Builder
    • 安裝 → 啟動 → 在側邊欄顯示打開


    這樣 ESPHome 就在 HA 的側邊欄了。

    (沒有附加元件功能的話 —— 例如 Docker 版 HA ——
    可以另外跑一個 ESPHome 容器,或者用 pip 裝在電腦上。)



    第二步:建立第一個裝置


    • 打開 ESPHome → + NEW DEVICE
    • 取名字(例如 bedroom-sensor)—— 用英文小寫和減號
    • 選晶片類型:ESP32
    • 它會自動產生一個基本設定並問你要不要安裝
    • 先選「Skip」,我們要先改設定


    第三步:看懂預設的設定檔

    點你的裝置 → EDIT,會看到:
    1. esphome:
    2.   name: bedroom-sensor
    3.   friendly_name: 臥室感測器
    4. esp32:
    5.   board: esp32dev
    6.   framework:
    7.     type: esp-idf
    8. # 日誌
    9. logger:
    10. # 跟 HA 的連線(一定要加密)
    11. api:
    12.   encryption:
    13.     key: "一長串自動產生的金鑰"
    14. # 無線更新
    15. ota:
    16.   - platform: esphome
    17.     password: "一串密碼"
    18. wifi:
    19.   ssid: !secret wifi_ssid
    20.   password: !secret wifi_password
    21.   # 連不上 Wi-Fi 時會開一個熱點讓你重設
    22.   ap:
    23.     ssid: "Bedroom-Sensor Fallback"
    24.     password: "一串密碼"
    25. captive_portal:
    複製代碼

    幾個重點

    framework: esp-idf

    建議用這個,不要用 arduino ——
    esp-idf 省記憶體很多,而且現在 ESPHome 的支援已經很完整。

    (舊教學很多還在用 arduino,那是幾年前的建議。)

    api.encryption.key

    這是 HA 和裝置之間的加密金鑰,一定要有。

    而且 2026.9 之後,OTA 更新也會用這把金鑰加密 ——
    所以它不只保護資料,也保護韌體更新。

    !secret

    指向 secrets.yaml 裡的值。

    ESPHome 有自己的 secrets.yaml(在 ESPHome 的檔案清單裡),
    裡面放 Wi-Fi 帳密:
    1. wifi_ssid: "你的WiFi名稱"
    2. wifi_password: "你的WiFi密碼"
    複製代碼

    這樣所有裝置共用同一組,換 Wi-Fi 密碼只要改一個地方。



    第四步:接線

    AHT20 / SHT30 都是 I2C 介面,只要四條線
    1. 感測器        ESP32
    2. ------        -----
    3. VCC     →     3.3V     (注意不是 5V)
    4. GND     →     GND
    5. SDA     →     GPIO21
    6. SCL     →     GPIO22
    複製代碼

    GPIO21 和 22 是 ESP32 的預設 I2C 腳位
    用別的也可以,但要在設定裡指定。

    第五步:加上感測器設定

    在設定檔最後加:
    1. i2c:
    2.   sda: GPIO21
    3.   scl: GPIO22
    4.   scan: true          # 開機時掃描有哪些裝置,除錯很有用
    5. sensor:
    6.   - platform: aht10          # AHT20 也是用這個平台
    7.     variant: AHT20
    8.     temperature:
    9.       name: "溫度"
    10.       filters:
    11.         - median:
    12.             window_size: 5
    13.             send_every: 5
    14.     humidity:
    15.       name: "濕度"
    16.       filters:
    17.         - median:
    18.             window_size: 5
    19.             send_every: 5
    20.     update_interval: 30s
    21.   # 順便加一個 Wi-Fi 訊號(除錯用)
    22.   - platform: wifi_signal
    23.     name: "Wi-Fi 訊號"
    24.     update_interval: 300s
    複製代碼

    用 SHT30 的話
    1. sensor:
    2.   - platform: sht3xd
    3.     address: 0x44
    4.     temperature:
    5.       name: "溫度"
    6.     humidity:
    7.       name: "濕度"
    8.     update_interval: 30s
    複製代碼

    第六步:第一次燒錄(一定要用 USB 線)

    第一次不能用無線更新,因為裝置上還沒有韌體。


    • 把 ESP32 用 USB 線接到你的電腦
    • 在 ESPHome 裡點那個裝置的 INSTALL
    • Plug into this computer
    • 會下載一個 .bin 檔案,然後開啟 ESPHome Web
    • CONNECT,選你的序列埠
    • 等它燒完


    用 Chrome 或 Edge —— Firefox 和 Safari 不支援網頁序列埠。

    第一次編譯會很久(五到十五分鐘),因為要下載工具鏈。

    好消息:2026.9 之後 ESPHome 會平行下載並設定建置工具
    比以前快不少。而且 ESP-IDF 的工具鏈安裝大小也減半了。



    第七步:HA 會自動發現

    燒錄完成、裝置連上 Wi-Fi 之後:


    • HA 的設定 → 裝置與服務會跳出「發現新裝置」
    • 設定
    • 輸入那個 encryption key(從 ESPHome 的設定檔複製)
    • 完成


    你的溫濕度就出現在 HA 裡了。

    之後改設定就用無線更新


    • 改 YAML → 按 INSTALL → 選 Wirelessly
    • 不用再插線


    這是 ESPHome 最舒服的地方 ——
    裝好之後可以塞在天花板裡,之後都無線更新。

    常見的第一次問題

    問題一:編譯失敗


    • 看錯誤訊息的最後幾行,通常會指出哪一行 YAML 有問題
    • 縮排錯誤最常見
    • 感測器平台名稱打錯


    問題二:燒錄時找不到序列埠


    • USB 線只能充電,不能傳資料 —— 換一條
    • 缺驅動程式 —— 查你的板子用的是 CP2102 還是 CH340,裝對應的驅動
    • 沒用 Chrome / Edge


    問題三:燒完連不上 Wi-Fi


    • ESP32 只支援 2.4GHz,不支援 5GHz
    • Wi-Fi 密碼打錯(在 secrets.yaml 裡檢查)
    • SSID 有特殊字元或中文 —— 建議改成純英數
    • 接上 USB 線看序列埠日誌,會顯示連線失敗的原因


    問題四:I2C 找不到感測器

    開了 scan: true 的話,開機日誌會顯示:
    1. [I][i2c.idf:075]: Results from i2c bus scan:
    2. [I][i2c.idf:081]: Found i2c device at address 0x38
    複製代碼


    • 什麼都沒掃到 → 接線錯了,或者 VCC 接到 5V 燒掉了
    • 位址跟設定不一樣 → 在設定裡指定正確的 address


    為什麼值得自己做

    除了省錢之外:


    • 回報間隔你說了算(商用的常常鎖死)
    • 可以一片板子接好幾個感測器
    • 可以加自己要的功能(螢幕、按鈕、繼電器)
    • 完全本地,沒有雲端
    • 壞了自己修


    但也要誠實說


    • 要插電 —— 電池方案很麻煩(深度睡眠 + 喚醒)
    • 外殼要自己想辦法
    • 不如成品美觀


    所以我的建議一般的溫濕度買現成的
    ESPHome 拿來做買不到的東西

    ---

    下一篇:substitutions 和 packages ——
    做到第三個裝置的時候你就會需要它們。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-24 12:21 , Processed in 0.078811 second(s), 24 queries .

    快速回覆 返回頂部 返回列表