ESP32-S3-BOX-3 部署 Home Assistant 本地化語音助理、3 種個性化方式教學 – Home Assistant 手把手教學 EP 10

透過語音控制智慧家庭大家應該再熟悉不過了,甚至在手機上大家也很常用 Hey Siri 或是 OK Google…等方式呼叫語音助理,延續上一篇:

我們將 Home Assistant 的語音助理更換成 Google Gemini 或是 ChatGPT,讓 Home Assistant 語音助理的回應不會像 Siri 這麼生硬也更聰明,甚至可以依照自己的喜好賦予人設,但不過當時還只能打字互動。

今天帶大家使用 ESP32-S3-BOX-3 來建置 Home Assistant 自家語音助理,這比起透過 HomeKit Bridge 或 Google Home 整合將裝置同步到 HomeKit 或 Google Home,再使用 Siri 或是 Google Assistant 語音控制來得更直接,也更可以依照自己的喜好打造更適合的語音助理 👍

先讓大家看看最終的效果:

很棒吧!這麼簡單就可以體驗古代皇帝的生活 🤣

不囉唆,我們開始吧!


ESP32-S3-BOX-3 開箱

ESP32-S3-BOX-3 開箱圖

內容物:

  1. ESP32-S3-BOX-3 本人:這就是主機,不管其他配件插上電也可以直接使用。
  2. DOCK:底座,上面有接口可以再串接其他的裝置。
  3. SENSOR:和 DOCK 差不多作用,但多了溫濕度傳感器、紅外線發射器\接收器、雷達傳感器、充電電池插槽、MicroSD 插槽,雖然今天都用不到,但因為比較帥所以我用這個 🤣
  4. BRACKET:轉接用配件,可以用這個把主機安裝在其他裝置上。
  5. BREAD:轉接用配件,用來和麵包板 (Breadboard) 連接。
  6. 傳輸線
  7. RGD 模組、杜邦線

以今天我們要做的事,其實可以買「ESP32-S3-BOX-3B」就好,包含主機和 DOCK,其他的都不會用到,你要買的時候考慮一下。


Step 1. 安裝並啟動 ESPHome 附加元件

Step 1-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 1-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 1-2. 安裝「ESPHome」

  1. 右下角點選「附加元件商店」
右下角點選「附加元件商店」
  1. 找到「ESPHome」並點擊
找到「ESPHome」並點擊
  1. 安裝「ESPHome」
安裝「ESPHome」
  1. 開啟 Watchdog、自動更新、於側邊欄顯示
  2. 點擊「啟動」
開啟 Watchdog、自動更新、於側邊欄顯示、點擊「啟動」
  1. 「ESPHome」啟動完成!
「ESPHome」啟動完成!

Step 2. 安裝 openWakeWord 附加元件

Step 2-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 2-1. Home Assistant 左側「設定」 ➜ 「附加元件」

Step 2-2. 安裝「openWakeWord」

  1. 右下角點選「附加元件商店」
右下角點選「附加元件商店」
  1. 找到「openWakeWord」並點擊
找到「openWakeWord」並點擊
  1. 安裝「openWakeWord」
安裝「openWakeWord」
  1. 開啟 Watchdog、自動更新
  2. 點擊「啟動」
開啟 Watchdog、自動更新、點擊「啟動」
  1. 「openWakeWord」啟動完成!
「openWakeWord」啟動完成!

Step 3. 新增「openWakeWord」整合

Step 3-1. Home Assistant 左側「設定」 ➜ 「裝置與服務」

Step 3-1. Home Assistant 左側「設定」 ➜ 「裝置與服務」

Step 3-2. 設定「openWakeWord」整合

  1. 這時候會在「已掃描」區塊出現「openWakeWord」,點擊「設定」
  2. 系統會詢問是否使用 Wyoming Protocal,點擊「傳送」
  3. 在成功訊息視窗點擊「完成」
這時候會在「已掃描」區塊出現「openWakeWord」,點擊「設定」
系統會詢問是否使用 Wyoming Protocal,點擊「傳送」
在成功訊息視窗點擊「完成」

Step 4. 設定語音助理喚醒詞

Step 4-1. Home Assistant 左側「設定」 ➜ 「語音助理」

Step 4-1. Home Assistant 左側「設定」 ➜ 「語音助理」

Step 4-2. 選擇語音助理

Step 4-2. 選擇語音助理

Step 4-3. 設定喚醒詞

  1. 喚醒詞引擎選擇「openwakeword」
  2. 喚醒詞選一個你自己喜歡的,這裡示範選擇「ok nabu」
喚醒詞引擎選擇「openwakeword」
喚醒詞選一個你自己喜歡的,這裡示範選擇「ok nabu」

到這裡就把喚醒詞設定好啦~接下來進行 ESP32-S3-BOX-3 的安裝和設置!


Step 5. 安裝、設置 ESP32-S3-BOX-3

⚠️ 注意!如果過去有安裝過 S3 BOX,務必先到「設定 > 裝置與服務 > ESPHome」找到 S3 BOX 並刪除 ⚠️

Step 5-1. 刷 ESP32-S3-BOX-3 韌體

  1. 前往 ESPHome 專案網站:https://esphome.io/projects/index.html
  2. 選擇「Voice assistant」
  3. 選擇「ESP32-S3-BOX-3」
  4. 點擊「Connect」
前往 ESPHome 專案網站:https://esphome.io/projects/index.html選擇「Voice assistant」選擇「ESP32-S3-BOX-3」點擊「Connect」
  1. 將 ESP32-S3-BOX-3 透過傳輸線連接到你的電腦
  2. 選擇 ESP32-S3-BOX-3 裝置
  3. 點擊「連線」
將 ESP32-S3-BOX-3 透過傳輸線連接到你的電腦選擇 ESP32-S3-BOX-3 裝置點擊「連線」
  1. 選擇「Install ESP32 S3 Box 3」
  2. 點擊「Install」
  3. 點擊「Next」
選擇「Install ESP32 S3 Box 3」點擊「Install」點擊「Next」

Step 5-2. 設定 WiFi 連線

輸入家中的 WiFi 連線資訊並點擊「Connect」

輸入家中的 WiFi 連線資訊並點擊「Connect」

Step 5-3. 將裝置加入 Home Assistant

  1. 點擊「Add to Home Assistant」
點擊「Add to Home Assistant」
  1. 確認 Home Assistant 實體位址
    預設是 “http://homeassistant.local:8123″,如果你在安裝 Home Assistant 時有自己變更,記得這裡要換成可以連接到 Home Assistant 的 URL!
  2. 點擊「Open Link」
確認 Home Assistant 實體位址
預設是 "http://homeassistant.local:8123",如果你在安裝 Home Assistant 時有自己變更,記得這裡要換成可以連接到 Home Assistant 的 URL!點擊「Open Link」
  1. 這時候你會自動被帶到 Home Assistant 整合列表中,在彈跳視窗中選擇「好」
  2. 在新增所發現的裝置選單中選擇「ESP32 S3 Box 3」
  3. 彈跳視窗中選擇「傳送」
這時候你會自動被帶到 Home Assistant 整合列表中,在彈跳視窗中選擇「好」在新增所發現的裝置選單中選擇「ESP32 S3 Box 3」彈跳視窗中選擇「傳送」

Step 6. 檢查 ESP32-S3-BOX-3 整合是否成功

  1. Home Assistant 左側欄「設定」>「裝置與服務」
  2. 找到 ESPHome 點擊裝置數
Home Assistant 左側欄「設定」>「裝置與服務」找到 ESPHome 點擊裝置數

這時候有看到 ESP32-S3-BOX-3 相關裝置資訊,並可以進行靜音、螢幕開關那你就整合成功啦!

這時候有看到 ESP32-S3-BOX-3 相關裝置資訊,並可以進行靜音、螢幕開關那你就整合成功啦!

試著和語音助理對話吧!

同場加映 – 個性化你的語音助理

只是換成有腦的語音助理肯定還是太無聊對吧?!試試看更改人設、自訂顯示圖片和自訂喚醒詞吧!

更改人設

  1. 點擊對話助理選單右側 ⚙️
  2. 在指示中新增你想要它扮演的角色
  3. 點擊「傳送」
點擊對話助理選單右側 ⚙️在指示中新增你想要它扮演的角色點擊「傳送」

這樣就可以更換成各式各樣你喜歡的人設啦!跟我分享你喜歡換成什麼人設?🤣

自訂語音助理顯示圖片

坦白說預設的顯示圖片真的太無聊了對吧!那就換張圖試試吧!你甚至可以換成你自己的照片 (如果你夠自戀 🤣),就好像有另外一個自己在幫你處理大小事,帥吧~

在開始之前,先看下圖了解 Home Assistant 語音助理的 6 種狀態:

Home Assistant 語音助理的 6 種狀態
Image credit: Home Assistant

① 進入 ESPHome web UI

通常會在側邊欄,如果沒有就到「設定 > 附加元件」找找

進入 ESPHome web UI

② 將 ESP32-S3-BOX-3 納入管理 (ADOPT)

這會讓你可以調整各種設定,完成後你會看到右上角的狀態從 DISCOVERED 變為 ONLINE

ESP32-S3-BOX-3 納入管理 (ADOPT)
Image credit: Home Assistant
ESP32-S3-BOX-3 納入管理 (ADOPT)

③ 選擇圖片素材或製作圖片素材

在 Home Assistant 的 Github repository 裡有分享給大家取用的素材,如果你像我一樣沒什麼美術天份,可以直接從裡面找一個你喜歡的。

當然你也可以自己畫,或是讓 AI 幫你畫,並參考格式和規範產出相關圖片素材檔案:

  1. 尺寸:320×240,如果提供的素材不是 4:3 比例,那剩下的區域會用背景色 (background color) 填滿。
  2. 圖片格式:PNG, JPEG, SVG。
  3. 在圖片裡,你可以使用兩種背景色,用以大致區分語音助理處於活躍或非活躍狀態:
    • loading、idle 狀態:深色背景。
    • listening、thinking、replyig 狀態:淺色背景。
    • error 狀態:深色或淺色背景都行。
  4. 如果你的圖片背景留透明,後面步驟可以在 configuration 中設定背景色 (background color)。
  5. 將 6 張圖做好放到一個資料夾裡
  6. 將包含 6 張圖的資料夾放到 config/ESPHome 的資料夾中

④ 編輯 ESP32-S3-BOX-3 設定檔

在 ESPHome web UI 中找到 ESP32-S3-BOX-3 並點擊「EDIT」

編輯 ESP32-S3-BOX-3 設定檔

這時候你會看到 yaml 編輯器,像這樣:

編輯 ESP32-S3-BOX-3 設定檔

如果你是選用 Home Assistant Github repository 素材庫,將下列代碼放到 substitutions 區塊中:
※ 記得把路徑換成你想要的素材路徑

YAML
substitutions:
  loading_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/loading.png
  idle_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/idle.png
  listening_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/listening.png
  thinking_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/thinking.png
  replying_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/replying.png
  error_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/jarvis_female/illustrations/error.png

如果你是自製素材,將下列代碼放到 substitutions 區塊中,並設定各狀態的背景顏色 (如果圖片是透明背景):
※ 將範例中的 voice_assistant_gfx 更換為你的素材資料夾名稱
※ 記得更換各狀態的背景顏色 (下面範例中 line 8~13)

YAML
substitutions:
  loading_illustration_file: voice_assistant_gfx/loading.png
  idle_illustration_file: voice_assistant_gfx/idle.png
  listening_illustration_file: voice_assistant_gfx/listening.png
  thinking_illustration_file: voice_assistant_gfx/thinking.png
  replying_illustration_file: voice_assistant_gfx/replying.png
  error_illustration_file: voice_assistant_gfx/error.png
  loading_illustration_background_color: '000000'
  idle_illustration_background_color: '000000'
  listening_illustration_background_color: 'FFFFFF'
  thinking_illustration_background_color: 'FFFFFF'
  replying_illustration_background_color: 'FFFFFF'
  error_illustration_background_color: '000000'

⑤ 儲存並安裝

這個步驟會依據你使用的硬體環境而安裝時間會有所不同,耐心等待一下吧!完成後就可以在螢幕上看到新的顯示圖片啦!~

※ 我使用樹莓派 4 + 8G RAM (Raspberry Pi 4 Model B/8G) 大概跑了 30 分鐘

儲存並安裝

意外發現這樣蠻適合我的桌面搭配的 🤣

ESP32-S3-BOX-3 桌面搭配

ESP32-S3-BOX-3 還有很多可以玩的,也有國外大神自製韌體讓 BOX 的觸控螢幕有更多功能,未來也會找時間來試試。

希望今天這篇可以對已經加入 Home Assistant 的你在建置本地化語音助理有幫助,也歡迎在下方留言和我互動囉!👋

8 COMMENTS

  1. Hi Neil,
    我follow 完設定後跟ESP32 講話都沒有喚醒他,ESP32一直都是待機的畫面,請問是不是要註冊跟付費HA Cloud 才能使用這樣的語音功能?

  2. hi Neil您好,請問printf輸出中文是黑方塊能怎麼解決呢,換了幾個字體都還是一樣?

    • 自己試出來:D
      本來以為glyphs不加就是全字集都有
      結果一定要加才有
      不好意思打擾了

      – file: “https://github.com/notofonts/noto-cjk/raw/refs/heads/main/google-fonts/NotoSerifTC%5Bwght%5D.ttf”
      id: font_response
      size: 15
      glyphs: ‘${allowed_characters}’

  3. 請問搭配sensor並按您文章內容完成設定及韌體燒錄後,HA中會有溫濕度,紅外線傳送接收的實體出現嗎?

LEAVE A REPLY

Please enter your comment!
Please enter your name here

你可能會喜歡
最近的討論
  • Jerry 2025/04/14非常感謝Neil無私的分享,您提供的這些網站對我幫助很大。我先收藏好,再來慢慢消化^^ 也期待之後Neil的產業新訊與教學文章Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Neil 2025/04/13Hi Jerry, 我通常從這些地方取得關於 HA 的資訊: 網站: – Home Assistant 官方 Release note – Automata – 家庭自動化社群 – 惟家居家智能 FB 社團: – Taiwan Home Assistant 同好交流 – Home Assistant YouTube 頻道: – Smart Home Solver – Everything Smart Home – Home Assistant 程式語言的部分: 嚴格說來 YAML 不太算是程式語言 (先聲明,以免有些人很介意🤣),不過如果把這些 “看似” 程式語言的資料格式或是樣式語言都算進來,以 HA 中使用深度排序 (越下面越深): – YAML (資料格式):HA 環境中很多地方會用到的設定檔用語言。 – CSS (樣式語言):用來調整介面樣式 (字體大小、顏色、圖片、位置…等)。 – JSON (資料格式):如果有用 Node-RED 應該會碰到。 – Jinja2 (Python 模板語法):自動化或是 Dashboard 玩深一點可能會碰到。 ※ 但其實現在的 HA 就算不會上面這些也都可以把智慧家庭弄的很完整了,不見得要給自己這麼多壓力,但如果有興趣多了解一些也不錯 關於裝置支援度 這其實很難一概而論,現在就算家電本身不支援,還是有很多不同的方式可以把傳統家電接入 HA。 另外像海爾這種 case,也確實需要深入研究,通常我會做的就是在網路上爬大量的資訊,通常都會找到其他人做過的嘗試,剛好我最近在查其他資料的時候有看到有人分享海爾熱水器接入 HA 但也確實像你講的,多碰一段時間,就會越來越了解這些細節了 🤣Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Jerry 2025/04/10hello Neil: 觀察了1、2天,似乎都正常了,可能是剛建置那段時間,碰到系統不太穩定吧!? 越玩越覺得水很深,也發現自已還有很多不足的,不知Neil是否能分享,教大家怎麼釣魚嗎? 例如推薦不錯的網站、論壇、FB社團、youtube影片,或是指導一下,除了YAML語言外,是不是會一些CSS語法也會有幫助,還需要會其它種語言嗎? 甚至開一個新教學方向,看到標榜有支援APP的非大廠產品(例如大陸的產品),教大家怎麼辨別能否接入HA,怎麼問客服?從哪裡可看到支援的文章或平台?這類的經驗談,我想對大家也很有幫助。 我目前想買海爾的熱泵電熱水器,海爾在世界來看也是大廠,也有自已的APP,從HACS也有找到海爾的套件,但似乎沒支援熱泵電熱水器,那是否就代表無法接入HA了?或是有什麼管道可以查得到呢? 對岸也有不少平板燈兼風扇功能的燈具,也是標榜支援APP連線,但皆是小廠,也不好辨別能否接入HA。這都是我目前碰到的問題,如果家電買的跟Neil分享的不一樣,就有點不知如何開始。 可能我還太嫩了,再玩個幾個月,也許我以上的問題就不是問題了,哈^^Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Neil 2025/04/09Hi Jerry, 我自己測試是沒問題,但要注意的是因為是透過雲端控制,有多一層品牌中介,所以不適合快速切換開關,我自己測試點擊後大約 1 秒左右就同步完成了,記得要在 entities 裡把實體放進去,否則狀態顯示可能會有問題Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Jerry 2025/04/07謝謝Neil的解惑。我後來測試,發現使用「按鈕面板」去控制伊萊克斯清淨機(和Neil的同款)的開關,設備會在1秒左右就反應開或關了,但開的「狀態圖示」則慢很多,大約要等個30秒,關的「狀態圖示」則是正常,其它負離子開關的「狀態圖示」和監測燈開關的「狀態圖示」也正常,害我以為同步有狀況。我再測試看看好了,也許是那個地方沒設定好導致的。Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Neil 2025/04/07Hi Jerry, 1. 這個方式就是透過雲端整合,實際上就是用 HA 去呼叫小米/伊萊克斯去控制裝置 2. 不太正常,如果有這個狀況可能要看一下你顯示在 floor plan 的實體是不是真正可以代表該裝置的狀態,如果不行可能要換同裝置的其他實體試試看Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Jerry 2025/04/07問題解決了,再次感謝Neil的幫忙^^ 另外再請教2個觀念的問題,請教Neil我是否認知有錯誤 1、我透過HACS把小米和伊來克斯的設備連進HA,這中間還是透wifi的方式來連結是吧!?在連結前還需要向官方取得API key、Access Token這方面的資訊,代表HA和設備之間的溝通仍然需要經過官方,只是可以取代官方的APP,全部整合進HA的APP一起控制? 2、經過測試,透過實體操作或原官方APP去操控設備,HA的app是沒辦法同步知道設備的狀態,相反則可以,這是正常的是吧!?例如,家裡的小米電風扇在出門前,被人用實體的方式打開,但人在外面,是無法透過HA的app知道設備忘了關,要連到小米的app才會知道!?Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
  • Jerry 2025/04/07Xiaomi Home的國家選擇新加坡就可以用了Home Assistant 必裝外掛 HACS 安裝步驟詳解 – Home Assistant 手把手教學 EP 17
  • Ghost 2025/04/07Xiaomi Home 目前不支援台灣區,暫時還是只能用 Xiaomi Miot Auto 至於 Xiaomi Cloud Map Extractor 目前遇到 2FA 的問題,好像沒有簡單的解法,我自己還沒試成功Home Assistant 必裝外掛 HACS 安裝步驟詳解 – Home Assistant 手把手教學 EP 17
  • Neil 2025/04/07Jerry, 看起來應該是因為疊圖導致點擊動作無法穿透 在換圖的部分 style 加 pointer-events: none 試試看Home Assistant Floor plan 視覺化平面圖智慧家庭控制新體驗! – Home Assistant 手把手教學 EP 6
你可能會喜歡