美文网首页
如何在 Home Assistant 上实现防止猫咪出逃的自动化

如何在 Home Assistant 上实现防止猫咪出逃的自动化

作者: chou_o_ning | 来源:发表于2020-02-04 18:43 被阅读0次

    (〇)相关硬件和软件列表

    软件: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 服务

    • 重写自动化一


      触发条件不变
    新增对 input_boolean 的处理
    • 自动化二


      触发条件
    设置环境条件 设置动作

    (九)测试

    手机的推送测试

    相关文章

      网友评论

          本文标题:如何在 Home Assistant 上实现防止猫咪出逃的自动化

          本文链接:https://www.haomeiwen.com/subject/cqmrxhtx.html