Home Control 是 Home Assistant 的核心,負責蒐集資訊並執行命令。依照使用者指令,控制所有的設備。
根據使用者事先設定的規則來執行。簡單的說就是自動化,例如我們會想要夏天天氣熱時,剛到家門口,冷氣先幫我們開啟來預冷。這時就可以設定如下:
根據之前出現過的行為執行的命令。(目前 Home Assistant 尚未實現這個部分,或許是指透過過去的行為來決定要執行甚麼指令,machine learning 的概念?)
我們的設備,包含我們的燈、網關、音箱...。
Home Core 由 Event Bus、State Machine、Service Registry、Timer 這四個部分組成。
Event Bus 是 Home Core的核心,是整個 Home Assistant 核心。Evnet Bus 負責管理每個 Event,處理各 Event 間數據的傳輸。
例如:當我們今天天氣很熱,想要開冷氣。我們可以設定溫度計溫度超過某溫度時就會發起一個高溫訊息 (Firing events),而我們就不需要知道溫度幾度,監看溫度計有沒有發出高溫訊息(Listening to events),就可以決定要不要開啟冷氣。
State Machine 負責監控,當一有設備更改狀態時,會發送一個 state_changed event。
負責監聽 Event Bus 是否有 call_service 這個 Event,並允許其他的程式來註冊 Service。
Timer 每秒會發送一個 time_changed 的 Event 給 Event Bus,讓 Event Bus 知道過了一秒。例如: 當我們有一個設備需要每分鐘去檢查一次狀態時,我們可以設定 Home Assistant 的 scan_interval:60
讓 Home Assistant 每 60 秒去詢問一次狀態,Timer 這裡就負責當計時的腳色。
Home Assistant 的架構主要分成三大部分,Home Control (Home Assistant的核心)、Home Automation (建立自動化規則)、Internet of things (設備)。透過核心的 Event Bus 將設備發起的 Event 通知使用者或是依照使用者建立的自動化規則執行指令。