TLDR:绿米水浸传感器使用zigbee2mqtt接入HA,配合自动化使用Shell Command服务发送请求,推送消息至bark手机端,实现洗衣机漏水自动告警至手机。
由于不想把HA暴露到公网,自然无法通过HA手机端接收到event通知,才有了这么一出。
HA支持的第三方集成里有个叫做Notify.Events的服务,支持tg、钉钉之类的推送,不过免费额度不高,而且增加了一个故障节点。也可以接到Prometheus上用Prometheus生态的告警组件去发短信、推各类IM工具,这里只是选了一个极简的方式来实现。
传感器接入
绿米的水浸传感器使用zigbee接入zigbee2mqtt,我这里使用树莓派+cc2531 usb dongle来跑z2m,没有把z2m跑在HA上是因为服务器离传感器太远,用以太网替代一段射频链路比使用zigbee中继要稳定。运行z2m的设备形态也多种多样,可以给成品zigbee网关刷z2m固件,也可以自制硬件。当然如果不想折腾z2m、HA、告警组件也可以用绿米官方的APP,如果没有完全本地化需求的话。
HA侧使用mqtt取数据,如果不想手动维护设备字段的话,记得打开z2m的homeassistant集成,HA就会自动识别到设备。
自动化和Shell Command
Shell Command无非是控制HA执行命令,就能通过curl发送http请求,甚至是执行python脚本。如果单纯是调用接口的话还有个叫做RESTful Command的集成。
HA是不支持图形化界面配置Shell Command的,需要在主配置文件增加相关配置。
# configuration.yaml
shell_command:
bark_push: "curl https://bark.xxx.com/xxx/?call=1"
我使用的是HAOS,修改完配置文件需要重启系统,只是reload配置文件似乎无效。之后就可以在自动化中调用。
bark的部署就没什么值得提的了,用你喜欢的方式部署,用你喜欢的方式暴露,配上客户端。要是愿意可以对接喜欢的方式接受消息,毕竟Shell Command都可以执行命令了。
效果是这样,bark除了支持普通消息外还支持持续响铃。
End
自己也算不上HA的深度用户,只是把用得上的接了上去。对智能家居概念中智能的部分仍旧存疑,但是不管怎么样HA强大的生态还是很优秀的。之后还想把天然气和自来水的用量数据采集起来,不过这俩在安装层面的难度就大了不小。