利用摄像头实现人体存在感应,并接入Home Assistant

利用摄像头实现人体存在感应,并接入Home Assistant
2024年06月26日 10:15 什么值得买

作者:他们都叫我老宁

在上一篇文章中,我们利用群晖 NAS 完成了 Frigate 的搭建和基本参数配置。

在这篇文章中,老宁会详细介绍 Frigate 的基础用法以及进阶玩法,并将它接入 Home Assistant,实现和其他智能设备的联动。

Frigate 使用

Frigate 的使用非常简单,下面老宁将结合配置文件和界面一起进行说明。

Cameras

首先来看看 Cameras 菜单。 🔻 在 Cameras 菜单中可以看到所有接入的摄像头。

🔻 点击卡片则能看到对应摄像头的实时画面。

🔻 底部功能区的左侧可以对摄像头的事件、记录进行查看,右侧可以对摄像头检测、记录、快照功能进行切换。

🔻 打开 EVENTS 按钮就会跳转至 Events 菜单, Events 菜单后面用法后面再说。

🔻 打开 RECORDINGS 按钮则会跳转到记录的界面,在记录画面中可以点击对应录像进行播放。

Birdseye

在这里可以把 Birdseye 理解为总览、俯瞰视图。通过 Birdseye 总览,我们可以在 Birdseye 界面看到所有摄像头实时画面等信息。

🔻 birdseye 默认是开启的,如果在30秒内检测到 objects ,那么就 Birdseye 菜单就展示内容。

如果想要修改 birdseye 中的参数,可以参考官方文档的说明。我们主要用来接入 Home Assistant,所以 birdseye 配置可以保持默认或者直接关闭该功能。

Events

🔻 在 Events 菜单中可以根据摄像头名称、事件名、区域以及时间对 Frigate 检测到的事件进行筛选。

🔻 也可以进入 Cameras 菜单,点击摄像头后,在实时画面底部找到 Frigate 追踪到的目标。

🔻 Events 菜单被捕获事件是通过 config 配置文件中 objects 下的 track 属性控制的。

其中 filters 属性非常重要,如果 Frigate 识别的物体存在误报,可以修改其对应的分值来减少误报。由于大家摄像头分辨率以及识别画面的不同,需要根据自身情况进行修改。

🔻 展开对应的事件后,可以对捕获的事件进行播放和查看。

🔻 如果要对 Clip 和 Snapshots 的操作进行修改,那么需要修改配置文件中的 record 和 snapshots 属性。

在设置 record 录像时,如果发现录像并没有包含整个物体(人)从画面出现到消失的过程,那么也可以适当修改 pre_capture、post_capture 属性。

划区

为了简单,我把对摄像头画面进行分模块处理的过程叫做划区。

划区有什么好处?

第一,如果摄像头有日期时间的展示,Frigate 会识别画面为运动,从而产生错误的识别。

第二,在接入 Home Assistant 后,Frigate 会根据区域的不同向 Home Assistant 发送不同的消息。

🔻 比如这只猫在区域2,不在区域1,那么区域2就会收到消息,区域1不会。

利用这一特性,我们在 Home Assistant 中就可以实现检测物体(人)的接近与远离,甚至更进一步,计算出物体在特定区域的停留时间。

如何划区

在 Cameras 菜单中选中摄像头卡片,点击 Debug -> SHOW OPTIONS -> Mask & Zone Creator 就可以对摄像头进行区域调试。

如果没有区域的坐标点,那么可以点击右侧的 ADD 按钮进行添加。这些坐标点会围成一个区域。

  • MOTION MASKS 就是运动蒙版,也就是这块区域的移动会被 Frigate 排除。如果画面有日期时间显示或被风吹动的窗帘,可以用 MOTION MASKS 覆盖。

  • ZONES 可以按照自己的需要进行划分,比如 Zone1 覆盖草地、Zone2 覆盖外面的马路。这样哪个区域检测到物体(人),对应的区域会单独发送一个有物体(人)的消息。

🔻 点击划好的区域,摄像头画面上会出现高亮的调试页面,拖动黑点可以对区域进行编辑。

编辑完成后,要将每个编辑的坐标点复制到 config.yml 文件中,保存并重启 Frigate 才会生效。

Home Assistant

最后来看看如何把 Frigate 接入 Home Assistant 。

了解 Home Assistant 的玩家都知道,想要把第三方服务接入 HA(Home Assistant)必须要通过集成。

而 Frigate 官方也开发了适配 Home Assistant 的集成,有了对应的集成插件,用户就可以非常方便的把 Frigate 接入 Home Assistant 了。

MQTT

一般来说第三方服务和集成通信都是通过 HTTP ,也就是集成向第三方服务发送 HTTP 请求,第三方服务再返回数据给集成,这样 Home Assistant 就能获取到服务的状态。

但是 Frigate 不一样,它是通过 MQTT 传递的消息,所以想要使用 Frigate 就必须要搭建一个 MQTT 服务器。

MQTT 的概念和搭建就不在这里详细的展开了,老宁推荐 Docker 、Add-on 两种 MQTT 服务搭建 方式。

🔻 把 MQTT 安装在Docker 中。

🔻 或者使用 Add-on: Mosquitto broker。

🔻 最后把 MQTT 服务器地址、用户名、密码填入到 Frigate 的 config 配置文件中。

下载集成

配置完成后,就可以下载 Frigate 对应的集成。

🔻 打开 Home Assitant,点击左侧 HACS 进入社区商店,进入集成界面,点击浏览并下载按钮,在弹出的输入框中输入 Frigate 进行下载。

🔻 集成需要重启才能启用。

如果没有安装过 HACS 商店,可以参考老宁以前写的文章。

配置集成

🔻 重启 HA 后,点击配置->设备与服务->添加集成,输入 frigate 进行添加。

🔻 添加时需要输入 Frigate 的URL。

🔻 添加完成后,可以看到设备和实体。(如果添加失败,可能是Frigate版本过低,集成版本过高,需要升级 Frigate

🔻 划分的区域会被单独识别为一个设备,一个设备中有 Frigate 配置文件中设置的识别物体。

🔻 可以根据需要创建自动化,比如有门口人就给手机推送消息。

🔻 Frigate 识别物体的事件也可以在媒体 -> Frigate 菜单中找到。

后记

这篇文章最大的问题可能是搭建 MQTT,由于篇幅和内容的限制,老宁在 MQTT 上没有展开说明,不过网上有很多的教程供大家参考。

最后,都玩 HA 了,自己搭建个 MQTT 应该没啥问题吧?

我是老宁

一个热爱技术的程序员和极客,群晖NAS深度玩家!

专注NAS相关技术分享,原创!干货!

觉得老宁的文章对你有帮助,记得点赞、收藏、加关注

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部