透過智慧開關實作洗衣機通知功能


洗衣機的通知功能是我最早在 Home Assistant 完成的功能。

最初的需求是由於洗衣機跟烘衣機運作的聲音以及完成的提示聲響都很小聲,導致常常忘記自己在洗(烘)衣服。一開始都是衣服放進去洗之後看預估時間再另外設定計時器,但總覺得整個體驗應該再更聰明一點。

市面上的智慧插座除了提供開關控制以外,有些產品還提供了電量偵測以及用電量統計的功能。利用智慧插座偵測即時的功耗數據,來判斷洗/烘衣機是否開始洗衣與結束,並且即時把狀態發到 Line 通知上面以及指定裝置語音通知,這樣就可以很輕鬆掌握機器的狀態。

透過系統服務把訊息推送到 Line 上面


將插座接入 HA 以取得更多的控制

我使用的是 Tuya 的智慧插座,用 localTuya 接入 HA 之後,會有約 20 個實體可以新增
實際運轉透過交叉比對後,只取出四個實際上有用的實體:
開關控制 onoff(1)、功耗 Power(19)、電流 mA(18)與電壓 Voltage(20),重新命名好之後就可以透過 HA 控制與監控插座的狀態。

接入 HA 取用的實體,這次要用到的是功耗數值

新增一個虛擬開關

在 configuration.yaml 裡面新增一個 input_boolean 實體,實體名稱 washing_machine,顯示名稱 Washing Machine,並且指定 mdi:washing-machine 這個圖示。

input_boolean:
  washing_machine:
    name: Washing Machine
    icon: mdi:washing-machine

新增這個虛擬開關有幾個作用,主要目的是利用開關的布林值來儲存洗衣機的狀態,由於機制是偵測智慧插座的功耗來進行,所以也利用這個狀態避免預期外的功耗變化導致誤判。
並且可以將狀態直接顯示在面板上進行監控。實際上不需要直接去控制與使用這個開關。

 

透過虛擬開關來模擬洗衣機的狀態

在面板上可以即時顯示狀態

到這邊準備工作就完成了,接下建立自動化

alias: 開始洗衣服
#自動化名稱

trigger:
  - type: power
    platform: device
    device_id:
device_id
 
   entity_id: 實體名稱
    domain: sensor
    above: 10
    for:
hours: 0
minutes: 0
seconds: 10
 #
智慧插座的 Power sensor 屬性高於 10 ,超過 10 秒時觸發 condition:
  - condition: state
    entity_id: input_boolean.washing_machine
    state: "off" #增加觸發條件 washing_machine 狀態為 off
action:
  - service: notify.line_notification
    data:
      message: 開始洗衣服 #調用 line_notification 系統服務傳送文字訊息   - service: scene.turn_on
    target:
      entity_id: scene.nest_mini_yin_liang_70
    metadata: {}
  - service: tts.azure_cognitive_speech_say
    data:
      cache: true
      entity_id: media_player.google_nest_mini
      message: 開始洗衣服
#調用 azure TTS 系統服務傳送文字轉語音訊息,透過 Google nest mini 發聲

  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id: input_boolean.washing_machine
#
washing_machine 狀態設定為 on

mode: single  
到這邊開始洗衣的部份就完成了,接下來再用同樣的方式設定完成洗衣、以及烘衣機的自動化就完成整個系統了

0 意見:

張貼留言