小弟看到有大大有贴洗衣机洗衣完成发通知的自动化,通过插座功率的改变来判断洗衣完成,小弟偏好这种接外挂式的改造,感觉实用,跟着试了一番:
准备工作
接入插座
这个自动化需要一个可以测功率的插座,小弟有一个「小米插座增强版」,有内置测功率的功能,首先要先将这个插座接入 Home Assistant,具体步骤可参考这个大大的程序,其中 token 可以通过修改版米家 App(仅支持 Android 系统,免 root)获取。
之后在 configuration.yaml
文件中添加一个传感器获取插座功率:
1 2 3 4 5 6 7
| sensor: - platform: template sensors: xiaomi_plug_power: friendly_name: "socket load power" unit_of_measurement: W value_template: "{{ state_attr('switch.xiaomi_chuangmi_plug_v3', 'load_power') }}"
|
配置通知
Home Assistant 通知方式很多,App 通知无需配置,另外还可以选短信通知、TTS 通知等。
配置 Twilio 短信通知
利用 Twilio 可以发送短信通知,注册试用即送 $15,美国手机号文字短信 $0.0075/条,中国手机号文字短信 $0.0280/条。
首先到 Twilio 网站注册并试用,验证手机号后可以获得一个美国手机号,账号 SID 及Token。
在 Home Assistant 的 configuration.yaml
文件中添加配置:
1 2 3
| twilio: account_sid: ACCOUNT_SID_FROM_TWILIO auth_token: AUTH_TOKEN_FROM_TWILIO
|
试用账号只能给白名单的手机号,需要将接受短信的手机号添加至白名单,
配置 TTS 通知
若使用 Googlecast 设备访问地址是配置了 SSL 证书,需要添加 base_url,另外,建议添加与文字内容相同的语言(避免用说英文的方式说中文)。
1 2 3 4
| tts: - platform: google_translate base_url: https:// Assistant URL>:8123 language: 'en-us'
|
配置 Home Assistant 应用通知
免配置,装好应用,允许应用通知权限即可。
自动化
自动化这里小弟搬运大大的配置,用两种状态(空闲和运转)描述洗衣机状态,在 configuration.yaml
文件中添加配置:
1 2 3 4 5 6 7
| input_select: washer_status: name: Washer Status options: - Idle - Running initial: Idle
|
定义虚拟的洗衣机传感器,
1 2 3 4 5 6
| sensor: - platform: template sensors: washer_status: value_template: '{{ states.input_select.washer_status.state}}' friendly_name: 'Washer Status'
|
自动化脚本一:检测到电量后的更新洗衣机状态为运转,10 瓦作为运转开始的阈值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| alias: Set washer active when power detected trigger: - platform: numeric_state entity_id: switch.xiaomi_chuangmi_plug_v3 value_template: '{{ state_attr(''switch.xiaomi_chuangmi_plug_v3'', ''load_power'') }}' above: '10' condition: - condition: or conditions: - condition: state entity_id: sensor.washer_status state: Idle action: - service: input_select.select_option data: entity_id: input_select.washer_status option: Running mode: single
|
自动化脚本二:洗衣机用电低于 3 瓦且超过 1 分钟以上后,把状态切换成空置并通过 Twilio 发送短信通知、应用通知、TTS。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| alias: Set washer inactive trigger: - platform: numeric_state entity_id: switch.xiaomi_chuangmi_plug_v3 value_template: '{{ state_attr(''switch.xiaomi_chuangmi_plug_v3'', ''load_power'') }}' below: '3' for: '0:01:00' condition: - condition: or conditions: - condition: state entity_id: sensor.washer_status state: Running action: - service: input_select.select_option data: entity_id: input_select.washer_status option: Idle - service: notify.sms data: message: 'The Washer is finished!' target: - '+8613012345678' - '+8613033333333' - service: tts.google_translate_say data: message: 'The Washer is finished!' entity_id: media_player.bedroom_speaker - service: notify.notify data: title: The Washer is finished message: 'The Washer is finished!' mode: single
|