:::

Home Assistant自動化的限制:無法偵測長時間狀態 / Limitations of Home Assistant Automation: Inability to Detect Long-Duration States

2024-1201-172230.png

我本來想在Home Assistant設定自動化「如果實體的狀態維持[關閉]超過24小時,就把它設為[開啟]」,結果HA卻一直沒能觸發自動化。最後我把條件改成時間模式定期檢查、觸發,然後把條件設定在「且如果」裡面,這樣自動化才能夠正常運作。

I was trying to set up an automation in Home Assistant that would turn an entity [on] if its state remained [off] for more than 24 hours. However, the automation never triggered. I eventually got it working by changing it to a time-based automation that checks periodically and then using an condition to check the entity's state.


Home Assistant

2024-1201-171432.png

Home Assistant 是一款開放原始碼的家庭自動化平台,允許使用者透過集中式系統控制和整合各種智慧裝置,進而實現家庭智慧化管理。它支援多種作業系統和裝置,提供網頁介面和行動應用程式,讓使用者可以隨時隨地監控和控制家中裝置。

Home Assistant 強大的自動化功能(Automation)是其核心特色,透過設定「觸發」(Trigger)、「條件」(Condition)和「動作」(Action),使用者可以建立各種自動化情境,例如:當感測器偵測到日落時自動開啟電燈,或是當門鎖開啟時自動播放音樂。Home Assistant 的自動化功能不僅限於控制智慧家電,還可以整合各種網路服務,例如天氣預報、行事曆等等。

不過,有時候Home Assistant的自動化也可能不會照你的預期來運作。就如我今天遇到的狀況一樣。以下就讓讓我們看看我到底遇到了什麼問題吧。


環境 / Environment

2024-1201-165216.png

我現在使用的Home Assistant是2024.11.0,算是蠻新的版本。我是用Docker架設,跟大家使用HA OS架設並不相同,但大致上功能沒有差異太大。HA安裝方式差別請見「Advanced installation methods 」。

問題 / Issue

2024-1201-165955.png

我使用了助手建立開關實體「客廳需要打掃:狀態」,這是用來表示客廳多久之前已經打掃,現在需不需要再打掃的記錄。「客廳需要打掃:狀態」實體整合了掃地機器人的運作。只要掃地機器人完成打掃任務,「客廳需要打掃:狀態」實體就會關機。

2024-12-01_16-55.png

接著我想要為「客廳需要打掃:狀態」設定自動化,讓它在關閉24小時之後自動開啟。

2024-1201-170107.png

自動化觸發的狀態設定如下:

  • 實體:客廳需要打掃:狀態
  • 變為...的狀態:關閉
  • 持續:24hh

乍看之下設定很合理,但實際上這個自動化並無法觸發。我本來是懷疑是不是因為「客廳需要打掃:狀態」的值在24小時有會被改變、或是變成「不可用」(有實際硬體的感測器常常會出現「不可用」的狀態),但記錄並沒有發現這個跡象。

另一方面,如果自動化的「持續」設定一個較短的時間,例如2個小時,那自動化就能夠成功被觸發。但這麼短的時間並不能滿足我的需求,必須另外找尋辦法才行。


解決方法 / Solution

2024-1201-170547.png

後來的解決方法是將觸發自動化的條件設為模式,讓它在每天晚上10點的時候觸發自動化。設定如下:

2024-1201-170634.png

時間模式設定:

  • 小時:22

2024-1201-170718.png

與此同時,還要在「且如果」加上原本的狀態限制:

  • 實體:客廳需要打掃:狀態
  • 變為...的狀態:關閉
  • 持續:24hh

你會發現這裡的狀態設定跟位於觸發的狀態設定一模一樣。但位在「且如果」的狀態設定能夠正確判斷,放在觸發則不會有反應。


小結 / In closing

Home Assistant (簡稱HA)的功能非常強大,但太過信任HA表面上的設定、以為設定好就能夠自行運作的話,恐怕會在意料之外的地方翻車。後來我在思考是不是應該要為HA的關鍵自動化任務加上監控、通知的機制,這樣才能確保HA真的能夠正常運作?

其實我還是不知道為什麼HA會有這樣的限制。如果你知道什麼蛛絲馬跡的話,請幫我在下面留言說一聲吧,感謝。