最近這陣子, 萊恩大兵都泡在物聯網領域裡. 做了很多的嚐試, 學到不少的經驗. 有個好東西要介紹給大家~ Home Assistant.
在前一篇文章中, 萊恩大兵介紹了 HA 的系統安裝與簡單上手. 
問題來了..[問] 為什麼選小米開關?
[答] 少部份原因是小米開關的外形與質感還不錯, 價錢也 okay, 是高 CP值的選擇. 主要原因是萊恩大兵先前的專案有買了幾顆, 不假外求, 就直接拿來做示範.
[問] HA 只能搭配小米開關嗎?
[答] 否. HA 的 Components 頁面, 列了一堆可支援的開關廠牌, 任君選用. 請參考: Components - Home Assistant.
[問] 小米開關有沒有什麼缺點?
[答] 小米開關的插頭為陸規, 得搭配美規 (A型) 轉接頭才能在台灣使用. 多了轉接頭, 整體感覺很擁腫.
接下來進入主題:
[在 HA 新增一組小米開關]
首先,[1] 透過米家 App, 為小米開關做初始設定
開啟米家 App, 點按右上角 '+' 號.
點選 "電源開關", "Mi Smart Plug (WiFi) Basic" 的圖示.
接下來, 按住小米開關的按鈕數秒鐘, 直到它亮起橘燈後, 再點按米家 App 的 "下一步".
橘燈一閃一閃代表小米開關處於 AP 模式.
回到米家 App.
填入家庭 WiFi 的 SSID 與密鑰, 按 "下一步".
接下來, 跳離開米家 App, 開啟手機的設定頁面, 將手機的網路改連到小米開關發出的 WiFi 訊號. (SSID 為: chuangmi-plug-m1_xxx)
手機與小米開關連線成功後, 再開啟米家 App, 即會自動與小米開關做連線設定.
設定完成後, 小米開關會連上家庭 WiFi 並取得 IP 位址.
此刻小米開關的燈號為持續的藍燈.
接下來..
[2] 取得小米開關的 IP 位址與 token 值
加入 HA 前, 必須取得該小米開關的 IP 位址與 token 值.
這邊要借助一個工具: miio, 使用 miio discover 這個指令來搜尋小米開關的詳細資訊.
安裝與使用說明, 請參考: Github - miIO Device Library 與 Github - miIO Device management.
miio discover 會找出所有正在運作的小米開關. 把欲加入至 HA 的小米開關的 IP 位址與 token 記起來.
再來,
[3] 在 HA 新增該組小米開關
請先參考: Home Assistant - Xiaomi Smart WiFi Socket and Smart Power Strip
需要做的事就是在 configuration.yaml 裡面, 新增 "platform: xiaomi_miio, host, token 與 model" 等資訊.
存檔, 並重啟 HA 服務.
待 HA 重啟完成, 在總覽 (Overview) 頁面會多一張 "開關" 卡片, 點按裡面的 switch_1 即可遙控小米開關.
同場加映:
[4] 在 HA 新增小米藍牙溫濕度計
請先參考: Xiaomi BLE Temperature and Humidity sensor
利用藍牙相關的工具, 查出小米藍牙溫度計的 MAC 位址. 並在 configuration.yaml 裡面, 新增 "platform: mitemp_bt, mac, name 與 monitored_conditions" 等資訊.
待 HA 重啟完成, 在總覽 (Overview) 畫面會多三顆感測器的圖示, 即為小米藍牙溫濕度計傳來的數據.
接下來, 就來設定條件式自動化.
[5] 設定條件式自動化
編寫自動化條件前, 請先參考: Automating Home Assistant.
自動化條件主要由 Trigger, Condition 與 Action 三項構成的.
簡單的說, Trigger 為觸發條件, Condition 為執行條件 (非必要), 而 Action 則為欲執行的動作. 無論是狀態或數值的變化, 均能做為觸發或執行條件.
包括 Trigger, Condition 與 Action 更多的細節, 請參考:
- Automation Trigger
- Automation Conditions
- Automation Actions
萊恩大兵實作示範:
目標為每一分鐘一次, 當溫度高於 15 度, 就將小米開關打開十秒鐘後再關掉.
1. 首先, 需要知道開關與溫度計在 HA 系統裡面的名字以及有哪些狀態可供存取?
在 HA 左邊選單, 點選最下面 "開發工具" 中左邊第 2 個圖示 (狀態), 可以看到目前 HA 系統裡面全部的開關/偵測器的名字 (entity_id) 與狀態.
小米開關的 entity_id 為 switch.switch_1
小米藍牙溫濕度計
- 溫度部份的 entity_id 為 sensor.bt_temp_humid_sensor_temperature
- 濕度部份的 entity_id 為 sensor.bt_temp_humid_sensor_humidity
2. 再來, 需要知道 HA 系統有提供哪些 service call 可供控制開關或其它動作?
請參考 Service Calls, 裡面有針對 HA 的 service call 做詳細解釋. 根據說明, 可使用 homeassistant.turn_on 和 homeassistant.trun_off 來控制開關.
知道 entity 與 service call 之後, 就可以在 HA 的設定檔編寫 automation 規則了.
3. 在 HA 的 configuration.yaml 編寫 automation 規則.
在 configuration.yaml 裡面, 找到 "automation: !include automations.yaml" 這一行, 已預設會去連結一個叫做 automations.yaml 的檔案.
開啟 automations.yaml, 依圖示加入 automation 規則:
存檔, 重啟 HA 服務.
等重啟完成, HA 即會每分鐘自動檢查溫度是否高於 15度, 並依結果開啟開關 (或不動作).
更多的 automation 規則範例, 請參考:
Automation Examples
(2019/8/16, 補充)
Home Assistant 系列的其它文章:
- Home Assistant, (5) 安裝 NodeRED 套件做更彈性的自動化
[萊恩大兵的其它文章]
自製大四軸
CC2540 Bluetooth Low Energy
OpenCV 學習路徑
小惡魔 無線溫度感測器
108 大眼仔
自造 Time Plot Clock
* 自造 Time Plotting Clock, (1) 零件採購
* 自造 Time Plotting Clock, (2) 組裝
* 自造 Time Plotting Clock, (3) 校正
* 自造 Time Plotting Clock, (4) 英文字母
* 自造 Time Plotting Clock, (5) 遠端遙控
iOS App 上架流程
* iOS App 上架流程, (1/3) 申請 Apple ID for Company
* iOS App 上架流程, (2/3) 產出 .P12 憑證與 Provisioning Profile 檔案
* iOS App 上架流程, (2.5/3) 申請 App ID 與上傳 ipa 送審
* iOS App 上架流程, (3/3) 審核通過與下載量數據分析
其它文章, 請參考 大兵萊恩, 文章總集
* 自造 Time Plotting Clock, (2) 組裝
* 自造 Time Plotting Clock, (3) 校正
* 自造 Time Plotting Clock, (4) 英文字母
* 自造 Time Plotting Clock, (5) 遠端遙控
iOS App 上架流程
* iOS App 上架流程, (1/3) 申請 Apple ID for Company
* iOS App 上架流程, (2/3) 產出 .P12 憑證與 Provisioning Profile 檔案
* iOS App 上架流程, (2.5/3) 申請 App ID 與上傳 ipa 送審
* iOS App 上架流程, (3/3) 審核通過與下載量數據分析
其它文章, 請參考 大兵萊恩, 文章總集


























沒有留言:
張貼留言