带护卫舰和家庭助理的视频监控系统

如果您有 Home Assistant 并想要设置视频监控系统,您可以 (适用于家庭或企业), 好吧,别无选择,只能设置 Frigate, 什么是开源?. 我们将能够在 Telegram 中接收消息 (包含照片和视频), 当摄像头检测到人时, 狗, 猫, 鸟类, 马…

井, 这个想法很简单, 我们拥有或希望拥有安全摄像头, 视频监控, 质量好但便宜的 IP 摄像机并自行管理系统. 哪里 护卫舰 它将帮助我们集中每个摄像头并配置我们需要的内容. 护卫舰将负责检测 对象 我们说的, 如何检测人员, 任何类型的动物, 汽车, 注册… 如果我们愿意,它将在我们指示的时间存储剪辑和视频。. 然后,我们可以将它们发送到 Home Assistant,具体取决于一系列因素 (我们四处走动, 我们正在睡觉…) 通过 Telegram 或任何我们想要的东西提醒我们.

护卫舰将在 Docker 容器上运行, 根据我们拥有的摄像机数量,它将需要使用大量的 CPU,甚至建议使用加速器硬件来提高检测性能. 一切都取决于许多因素, 如果相机中有许多像素发生变化,我们总是可以创建区域来避免它们的分析; 摄像机的数量或我们给它的数量, 因为它可以在 Raspberry Pi 上运行. 为 4-5 相机的 Google Coral USB 加速器 我们做得很好, 它是一个协处理器, 一个外部 TPU,可以帮助我们移动负载.

Coral USB 加速器,

井, 因为这样或多或少地可以卖掉鱼, 如果你愿意🙂,让我们开始吧。第一件事是拥有一台装有 Docker 的机器, 本文基于 Raspberry Pi 4, 第二个安装 Google Coral USB 加速器的驱动程序 (或我们使用的). 为此,, 我们下载 Google 存储库:

回波 "Deb https://packages.cloud.google.com/apt coral-edgetpu-stable 主干" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list curl HTTPS://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key 添加 -
Sudo apt-get 更新

我们安装了运行时和 PyCoral 库:

SUDO apt-get install libedgetpu1-std #Para 最佳性能 --> sudo apt-get install libedgetpu1-max sudo apt-get install python3-pycoral -y

Ya estamos listos para probar si la Raspberry Pi ya reconoce al dispositivo, Podremos bajarnos un modelo de ejemplo y validarlo:

MKDIR 珊瑚 && cd 珊瑚 git 克隆 HTTPS://github.com/google-coral/pycoral.git cd pycoral bash 示例/install_requirements.sh classify_image.py python3 示例/classify_image.py \
--型号 test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--标签 test_data/inat_bird_labels.txt \
--输入 test_data/parrot.jpg

Y si va todo bien recibiremos algo como esto:

----推理时间----
注意: Edge TPU 上的第一次推理速度很慢,因为它包括将模型加载到 Edge TPU 内存中.
11.8MS 3.0ms 2.8ms 2.9ms 2.9ms -------结果--------
Ara 澳门 (猩红金刚鹦鹉): 0.75781

Desplegar 护卫舰,

Como hemos comentado anteriormente Frigate no se instala, 我们将它部署在容器中, 所以请记住,我们需要事先安装 Docker. 在我们开始之前,我们需要创建 Frigate 配置文件. 在本例中,我将它保留在 '/mnt/config.yml’ 这是一个最小的例子, 我告诉您谁是 MQTT 服务器来发送事件, BD 路径, 原木, (选择) 我们指示是否有 Coral 加速器,然后添加摄像机, 我坚持一个最低限度的例子:

MQTT 协议:
  主机: DIRECCIÓN_IP_MQTT端口: 1883
  用户: USUARIO_MQTT密码: CONTRASEÑA_MQTT 数据库:
  路径: /媒体/护卫舰/frigate.db记录器:
  违约: 信息日志:
    frigate.event: 调试

探测器:
珊瑚:
类型: Edge TPU
装置: USB接口
相机: NOMBRE_DE_LA_CAMARA: FFmpeg: 输入: - 路径: RTSP://USUARIO_RTS:CONTRASEÑA@DIRECCION_IP_CAMARA:554/av_stream/ch0 检测: 宽度: 1280 高度: 720

目前 Frigate 位于 0.10.1, 这些是他们根据我们拥有的机器提供给我们的不同图像:

  • x86: 布莱克希尔/护卫舰:0.10.1-AMD64 系列
  • x86 带 NVIDIA (仅适用于 ffmpeg): 布莱克希尔/护卫舰:0.10.1-AMD64英伟达
  • 树莓派 3/4 (32位): 布莱克希尔/护卫舰:0.10.1-Armv7
  • 树莓派 4 (64位): 布莱克希尔/护卫舰:0.10.1-AACH64

我们必须创建并启动容器, 我们将把 USB 设备交给您, 我们增加 共享内存, 我们将保存 Frigate 所需的所有数据的目录传递给您 (剪辑, 录音…), 我们将配置文件传递给您, 小时, RTSP 密码和我们将用于其管理的端口 (5000TCP 协议), 然后是那个, 我们想要的图片; 从 Raspberry Pi 4 执行:

sudo docker run -d --name frigate --restart=除非停止 --mount type=tmpfs,目标=/tmp/cache,tmpfs-size=100000000000 --设备 /dev/bus/usb:/dev/bus/usb --shm-size=128m -v /media/frigate:/media/frigate -v /mnt/config.yml:/config/config.yml:ro -v /etc/localtime:/etc/localtime:ro -e FRIGATE_RTSP_PASSWORD='CONTRASEÑA' -p 5000:5000 -p 1935:1935 布莱克希尔/护卫舰:0.10.1-AACH64

几分钟后,所有东西都被卸下,集装箱启动,我们可以连接到 Frigate, 通过浏览器,我们访问 HTTP://DIRECCION_IP_DOCKER:5000 我们将看到如上图所示的内容.

请允许我给您留下一些 R+D 可能需要的 Docker 命令:

Sudo Docker PS -a		# Lista contenedores sudo docker stop ID_CONT	# Apaga contenedores sudo docker start ID_CONT	# Arranca contenedores sudo docker restart ID_CONT	# Reinicia contenedores sudo docker rm ID_CONT		# Elimina contenedores sudo docker system prune -a 	# 删除缓存和其他垃圾,小心!
Sudo Docker 日志 ID_CONT -f	# 查看容器生成的日志

然后每个人都必须根据自己的喜好发展他们的护卫舰, 我把 链接 使用配置文件及其所有可能性. 我们将能够看到 Frigate 的所有摄像头, 或使用 Birdeye, 这是屏幕关闭,并在相机中有移动时打开, 或查看您收集的事件…

我们有很多可能性, 在每个相机中,我们可以创建蒙版以防止它扫描可能有一些运动的不感兴趣区域, 最大程度地减少误报, 因为在外面发现一个人是没有用的, 在街上, 或者一个产生不必要计算的移动罐… 或者创建区域以统一不同的摄像机… 有相当多的可能性. 我留给您,以防我与相机一起使用的配置用作指导, 您可以看到每个摄像机的角色, 要跟踪的对象类型, 解决方法, FPS, 图片的存储时间, 视频… :

CAMARA03:
  FFmpeg:
    output_args:
      记录: -F 段 -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v 复制 -c:A aac 输入:
      - 路径: RTSP://USUARIO_RTSP:CONTRASEÑA@DIRECCION_IP_CAMARA:554//h264Preview_01_main 角色:
          - 检测
          - 剪辑
          - RTMP
          - 记录
          - 动作快照:
    面具:
      - 1136,79,1045,62,683,33,576,55,484,69,213,114,30,161,129,278,221,370,238,673,145,709,187,834,253,960,0,960,0,0,954,0,1040,0,1280,0,1280,122
      - 1280,402,901,274,708,224,491,191,473,50,503,53,511,159,690,186,692,149,777,156,789,87,893,120,1083,156,1280,224
  检测:
    宽度: 1280
    高度: 960
    帧率: 5
  对象:
    跟踪:
      - 人
      - 猫
      - 狗
      #- 鸟记录:
    启用: 真正的 retain_days: 0
    事件:
      保留:
        违约: 10
  快照:
    bounding_box: true 已启用: true 时间戳: True Retain:
      违约: 10

Frigate 与 Home Assistant 集成

正如你所看到的, 我还没有直接在 Home Assistant 上安装 Frigate, 可以做什么, 但我认为这取决于环境,出于性能原因,最好将组件分开. 所以 Frigate 在它这边,Home Assistant 在他们这边, 特别是因为 Frigate 需要大量的计算.

要安装 Frigate 与 Home Assistant 的集成,最方便的方法是使用 HACKS. “黑客” > “集成” > “护卫舰” >下载并安装它,然后重新启动 Home Assistant. 如果未列出, 我们将添加此存储库 'https://github.com/blakeblackshear/frigate-hass-integration'.

安装集成后,我们对其进行配置, 让我们转到集成, ,然后单击 Add new integration(添加新集成), 我们写了《护卫舰》…

什么都没有, 我们所要做的就是指明 Frigate 的 URL, 点击 “发送”. 这将已经使用我们在 Frigate 中定义的摄像机创建所有实体, 剩下的就是让我们成为我们的控制面板!

我敢肯定,过一会儿你会做一些比我更好的事情, 这是 4 相机, 我们可以实时看到正在发生的事情, 如果我们点击摄像头并且它有一个麦克风,我们也可以毫无问题地收听它. 我们可以添加一些剪辑,其中包含每个摄像机所做的最后检测, 当您按下其中一个时,它将播放视频…

这是一个 Home Assistant 自动化的示例, 如果它在夜间检测到猫, 给他拍张照片, 我在 Telegram 上把它发给了我们,并附上了视频的链接,以防我们想看. 自动化将侦听 MQTT 事件,并使用模板定义我们期望的对象, 在这种情况下,一只猫. 然后是我们想要的操作, 我在 YAML 中给你留下一个示例,你可以用它来接收照片和视频链接:

服务: telegram_bot.send_photo 数据:
  网址: >-
    HTTP 协议://DIRECCION_IP_FRIGATE:5000/api/事件/{{trigger.payload_json["后"]["ID"]}}/snapshot.jpg?bbox=0&crop=1 字幕: >-
    {{trigger.payload_json["后"]["照相机"]|取代("护卫舰_","") | 上 }}
    {{trigger.payload_json["后"]["标签"] | 上 }} 
    [观看视频](https://DIRECCION_IP_FRIGATE/api/events/{{trigger.payload_json["后"]["ID"]}}/clip.mp4)
  超时: 1000

如果一切顺利, 结果将是这样的, 因为在特定时间了解我们收到的访问, 显然,这可以应用于人或其他类型的物体, 动物…

正如你所看到的,我们能做的一切都是相当可塑的, 每个人都将取决于他们的特殊性或他们想要复杂化的内容… 我希望你觉得它很有趣, 建立自己的系统真的不是很昂贵, 无需将私人图像带到外部,否则第三方可以对其进行操纵. 我还确信,我们获得的性能比任何商业解决方案都要好.

护卫舰是梨子,家庭助理是全能的上帝, 无, 我希望, 你喜欢的, 尝试, 很高兴并一如既往地感谢那些通过社交网络移动此类内容的人. 拥抱tod@s!

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!