看完了最簡單的智慧家電 - 把飛利浦WiZ智慧燈泡串進Home Assistant吧,你是不是已經開始把幾樣智慧家電接進 Home Assistant 了呢?
除了用手機App按按鈕來控制智慧家電之外,接下來我們來試試看:透過網路指令控制智慧家電。
什麼是API?怎麼使用?
Home Assistant提供了兩種API介面,可以透過網路呼叫的方式取得HA的資料,或是操作HA已經連線的設備:
- REST API
- WebSocket API
WebSocket會建立長連線,反應速度較即時。不過因為這篇是入門介紹,我們先從最容易理解的REST API開始。
產生TOKEN
為了避免隔壁鄰居、阿貓阿狗都能透過API控制你的家電,我們需要先產生一個存取權杖(Access Token)。
這個token代表你授權給任何持有它的人,可以透過API對Home Assistant發送指令。
打開HA介面,點擊自己的帳號,進入 安全性Security),找到「永久有效存取權杖」,然後新增一個。

命名只要自己方便辨識即可,例如用於API的就叫API。
新增成功後會出現一串非常長的密碼,請把它複製並保存到安全的地方。之後每次呼叫API都會需要使用這個token。
確認連線
接著可以用終端機執行以下指令確認 API 是否正常:
記得把TOKEN和IP_ADDRESS替換成你的設定。
curl \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
http://IP_ADDRESS:8123/api/config如果成功取得一大串JSON資料,就代表API已經可以正常連線。
INFO
要注意你的IP_ADDRESS如果是內網192.168.xx.xx或者是homeassistant.local,會跟你的HA的Web介面一樣,外網是無法直接連線的
有機會之後再寫一篇如何用cloudflare tunnels從外網安全地連線到Home Assistant
發送指令
接下來示範一個關燈的API指令:
curl \
-X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-d '{"entity_id": "light.玄關燈"}' \
http://IP_ADDRESS:8123/api/services/light/turn_off執行後,就可以把指定的燈或燈組關掉。
要知道API可以做到哪些事情,可以參考官方文檔
但在AI時代,其實只要把文件丟給AI告訴它你想做什麼,它通常就能幫你產生對應的API指令。
WARNING
不要讓AI知道TOKEN,否則可能造成資安風險
接入MCP Server
既然都要讓AI幫忙寫API指令,那有沒有更方便的方式,讓AI直接控制Home Assistant呢?
如果你是開發者,應該已經聽過MCP(Model Context Protocol)。
我之前在這篇文章中也有簡單介紹:網頁開發MCP工具 三件套: Context7、Chrome DevTools MCP、GitHub MCP
而Home Assistant官方其實已經提供了MCP Server整合,可以讓AI直接接入。
安裝整合
首先到官方提供的整合安裝。
安裝成功後,在瀏覽器輸入: https://IP_ADDRESS:8123/mcp_server/sse
如果看到 401(Unauthorized),代表服務已經正常啟動。
如果是 404,可能是整合沒有安裝成功,或功能尚未啟用。
在claude接入MCP
按照官方的文件,可以先用 CLI 建立 MCP:
claude mcp add-json "HA" '{
"type": "http",
"url": "https://<your_home_assistant_url>/api/mcp",
"oauth": {
"clientId": "http://localhost:12345",
"callbackPort": 12345
}
}' --client-secret接者打開claude,輸入/mcp,選擇剛建立的HA,然後選擇Authenticate
claude會開啟瀏覽器讓你登入HA來授權。
不過我實際測試時遇到錯誤,導致OAuth三方授權沒有成功,就回去用帶token的做法。
在專案下建立.mcp.json,${HA_URL}、${HA_TOKEN}可以從環境變數讀取。
{
"mcpServers": {
"home-assistant": {
"type": "sse",
"url": "${HA_URL}",
"headers": {
"Authorization": "Bearer ${HA_TOKEN}"
}
}
}
}之所以放在專案目錄下,是因為我不希望在其他專案開發時,不小心呼叫到Home Assistant的MCP 🤪
另外URL和Token也都放在環境變數中,避免直接寫在設定檔裡造成外洩。
完成設定後,只要MCP成功連線,AI就可以直接控制家裡的智慧設備。
而且AI也能讀取各種感測器資料,像是溫度、濕度、電力消耗等——那些平常人類懶得看的數據,就可以交給AI來分析。

接著會繼續往用語音控制智慧家電設備的方向走,敬請期待。
參考資料:
