智慧家庭第六步 Home Assistant接入超便宜溫濕度計
如果你還沒有安裝好Home Assistant 請先閱讀
智慧家庭第一步 在Synology上架設Home Assistant
如果你還沒在Home Assistant上安裝HACS 請先閱讀
如果以上兩個步驟都已經完成,那麼我們就往下繼續看吧
本篇以switchbot Thermometer/Hygrometer sensor為範例,透過switchbot提供的 cloud API取得資料回到Home Assistant中
參考資訊 :
前言 :
switchbot 溫濕度計其實只需要購買本體,不需要購買其他配件就可以在手機APP中加入裝置並且看到資訊,而這次要做的是需要透過Wifi接入Home Assistant中,所以必須多購入switchbot hub mini,未來如果在其他空間中也需要擺放溫濕度計,那麼就只要買溫濕度計本體就行,只需要有一個hub存在即可。
這大概是目前最便宜的解決方案
github上有另一個專案是透過Home Assistant本身的藍芽裝置去搜尋附近的switchbot裝置,這個方法也是可行,只是我Home Assistant是裝在虛擬機中,無法使用藍牙,而且藍芽有距離限制,因此本次採用的是switchbot cloud API方式來取得資料。
Step1 : 將溫濕度計/Hub mini 加入switchbot APP中
switchbot的溫濕度計擁有網路以及藍芽兩個介面,因此加入方式超簡單,安裝好APP登入後,按右上角的+號就能找到裝置
這時候,手機是透過藍芽跟溫濕度計連線的,所以在裝置附近的話才能夠看到數值,有測試過隔一個房間就會收不到了
接下來,再將hub mini用一樣的方式加入switchbot app中,接著點入hub mini頁面,選擇右上角的設定按鈕
進入畫面後,選擇wifi settings
進到這個畫面之後,請選擇要讓hub mini連接上的無線網路SSID,以及輸入密碼
這樣子就完成了初期設定了,這時候神奇的事情來了,同一個App底下的裝置都會走跟Hub mini一樣的網路設定連接到家中的wifi
這時候就可以發現,手機已經不是用藍芽連接到溫濕度計上了,而是透過網路介面連接到switchbot cloud上
Step2 : 取得API token
接下來就是要取得API token了,這樣子才能讓Home Assistant透過這組API token向switchbot cloud取得資料
點選App右下角的Profile
選擇Perferences
接著找到,底下的App Version,對著這個按鈕點10下,對你沒有看錯就是對他點10下
然後,畫面上就會出現Developer Options這個選項
進入畫面之後,產生一組新的API Token,然後複製起來,這組token很重要,接下來很多步驟都會用到它
Step3 : 取得 device ID
device ID就是你的溫濕度計裝置的ID,拿到這個ID之後,下一步就是透過API Token以及device ID來取得數值內容了
首先如果你是windows用戶,請在搜尋中打上cmd,打開命令模式,如果是Mac用戶,請使用”終端機”
接下來需要輸入一個指令,基本上不難照貼就好
1 |
curl -H “Authorization:[API_TOKEN]” https://api-switch-bot.com/v1.0/devices/ |
在終端機中貼上上面的指令,把[API_TOKEN]這幾個字換成你剛剛在APP中找到的就好,按下Enter之後你應該會看到類似這樣的畫面,找到deviceId後面那串用中括號刮起來的文字就是我們要的deviceId了
接著可以用下一行指令來看看這個device可以提供我們什麼樣的資料
1 |
curl -H “Authorization:[API_TOKEN]” https://api-switch-bot.com/v1.0/devices/[DEVICE_ID]/status |
同樣的把[API_TOKEN]以及[DEVICE_ID]替換成你的就行了,接著你應該可以看到類似下面的畫面,其中有看到humidity以及temperature兩個數值就是我們會用在Home Assistant中的了
Step 4 : 設定Home Assistant YAML擋
首先,我們剛剛拿到了很多token deviceId以及網址之類的東西,我們先找個地方存下來
在根目錄底下新增一個secrets.yaml檔案,把剛剛拿到的資料存下
1 |
1 |
如果你有多個裝置就放多個deviceId跟url這樣
接著,新增一個rests.yaml檔案在根目錄,輸入以下資訊
1 |
1 |
簡單說明一下,看到!secret開頭的就是我們剛剛放在secret.yaml中的資訊,而value_template則是描述API拿回來的資訊格式
我們需要兩個資訊,一個是溫度一個是濕度,所以在sensor中我們建了兩個,分別去取得value_json中的bosy.temperature以及body.humidity兩個,unit_of_measurement則是去定義這個數值的單位是什麼,unique_id則是去表達在Home Assistant這個sensor的唯一ID,自訂不重複即可
Step 5:重新啟動Home Assistant
再重新啟動Home Assistant後,我們就可以在”實體”中看到剛剛新增進去的兩個sensor了喔