/

洗衣完成发送短信

ha_washer_cover

小弟看到有大大有贴洗衣机洗衣完成发通知的自动化,通过插座功率的改变来判断洗衣完成,小弟偏好这种接外挂式的改造,感觉实用,跟着试了一番:

准备工作

接入插座

这个自动化需要一个可以测功率的插座,小弟有一个「小米插座增强版」,有内置测功率的功能,首先要先将这个插座接入 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。

ha_washer_twillo

在 Home Assistant 的 configuration.yaml 文件中添加配置:

1
2
3
twilio:
account_sid: ACCOUNT_SID_FROM_TWILIO
auth_token: AUTH_TOKEN_FROM_TWILIO

试用账号只能给白名单的手机号,需要将接受短信的手机号添加至白名单,

ha_washer_twillo_phone

配置 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

ha_washer_notify