(〇)相关硬件和软件列表
软件:Home Assistant 及 APP、米家 APP
硬件:手机(安装 Home Assistant APP)、树莓派(安装有 Home Assistant)、Aqara(绿米)空调伴侣升级版(ZigBee网关)和门磁(传感器)
(一)需求的来源
家里有两只猫咪,曾经有一次,我早晨上班忘记关大门了,导致猫咪出逃。好不容易才把她们寻找回来,因此一直在考虑,如何才能够实现:忘记关门超过30秒,手机会收到忘记关门的告警推送。
(二)市面上现有的智能家居APP和设备无法满足
市面上常见的有小米、萤石的硬件和APP,但这些并不能满足我的需求。因此我把目光朝向一些开源的智慧家庭平台。
(三)Home Assistant 的选择
开源的平台有很多,在网上多次寻找和对比后,我选择了 Home Assistant 的平台。该平台可以使用小米的硬件,还可以实现可编程的自动化,因此正好满足我的需求。
(四)树莓派的硬件平台
Home Assistant 基于 Python3,硬件可以是PC或其他设备,从家庭自动化的角度,需要一个长期运行的低功耗硬件,因此树莓派是比较合适的选择。
Home Assistant 安装的 Python 的版本必须在3.7以上(请参考Installation of Home Assistant),因此建议安装最新的 Raspbian buster 版本(旧的版本,比如说 jessie ,Python 版本无法更新到最新,需要下载源代码编译)。如果树莓派不使用桌面方式,可以安装 Raspbian Buster Lite(精简版本),只有四百多兆,下载和安装都非常方便。最新版本下载链接在 这里。
下载完毕后,通过 https://www.raspberrypi.org/documentation/installation/installing-images/ 烧写到 sd 卡上。
新烧写的 Raspbian 由于安全原因,远程的 ssh server 缺省是关闭的,因此第一次上电,需要通过 hdmi 接口连接显示器,usb 口连接键盘。登录后(缺省用户名是 pi 密码 raspberry),通过 sudo raspi-config 开启 ssh-server。
Raspbian 的更新源很慢,建议使用阿里云的更新源。
(五)Home Assistant 在树莓派上的安装
这里是安装方式 Manual installation on a Raspberry Pi。安装完毕后,因为 Home Assistant 需要下载一些插件,第一次启动耗时比较久(大约15分钟吧),之后启动就很快了。在浏览器打开 http://树莓派ip地址:8123,看到UI界面后,就表明安装成功了。
配置树莓派重启后自动启动 Home Assistant,见这里 https://www.home-assistant.io/docs/autostart/systemd/。
(五)远程控制 Home Assistant
安装 Home Assistant APP 到手机上,由于树莓派安装在内网中,因此远程是无法连接的。需要通过这里 https://www.hachina.io/docs/2143.html 配置。配置有多种方法,因为我有一台百度云的虚拟机,因此是通过 ssh 隧道方式连接,再通过autossh工具,一旦链接断开后会自动重连。
(六)Aqara (绿米)的空调伴侣升级版(lumi.acpartner.v3)和门磁
首先安装米家APP,并接入绿米的空调版本升级版和门磁。
接下来需要将Aqara(绿米)的空调伴侣升级版接入到 Home Assistant 中。这个步骤相对要麻烦一些:
- 按照绿米的AIOT论坛,局域网开发支持的网关目前只有:空调伴侣升级版(lumi.acpartner.v3),固件版本需达到1.4.1_109以上。
- 原先从 APP 获取网关 key 的方法已经无法使用,需要登录绿米的 AIOT 网站申请个人开发者才可以。
- 公开的协议来自 网关局域网通信协议V2.0
获取key之后,在 /home/homeassistant/.homeassistant/configuration.yaml 添加
xiaomi_aqara:
discovery_retry: 5
gateways:
- key: xxxxxxxxxxxxxxxx
重启 homeassistant 服务后,如果在 web UI 界面看到门磁,就表明接入成功。
(七)自动化一:实现开门30秒以上,推送告警
“Web UI -> 配置->自动化” 设置如下即可实现开门30秒以上,推送告警:
设置触发条件 设置动作
(八)自动化二:实现开门30秒以上,关门,推送告警解除
只通过 UI 上的基础组件是无法实现这个自动化,需要增加一个 input_boolean 服务(https://www.home-assistant.io/integrations/input_boolean/)。这个服务有点类似于一个布尔全局变量。在自动化一发生时,将该变量置为 true。在自动化二中,如果门从 on 变为 off,则在环境条件中检查该变量,然后再判断是否触发告警解除。
- 新增 input_boolean 服务
在 /home/homeassistant/.homeassistant/configuration.yaml 添加
input_boolean:
notify_door_open:
name: Notify door opening last than 30s
initial: off
icon: mdi:door-open
重启 homeassistant 服务
-
重写自动化一
触发条件不变
-
自动化二
触发条件
网友评论