×

Raspberry Pi上HA中的运动传感器、警报、视频录制

消耗积分:0 | 格式:zip | 大小:0.37 MB | 2023-07-05

张国厚

分享资料个

描述

我想告诉你我在 Raspberry pi 上使用 Home Assistant(以下简称 HA)的一点经验。

当然,其中一个原因是希望从您的评论中了解我在实施此方案时“做错了什么”。

配置上述功能的方式有三种:“没有问题”、“短”和“独立”。在第一种情况下,您可以从网站https://ViaMyBox.com/downloadpage下载开发的图像

对于您的 Raspberry pi,您可以在已配置的表单中查看所有内容。在第二种情况下,您可以从站点或从 github 项目下载 zip,安装它,然后通过实用程序 (sudo via-setup.sh) 安装 HA docker 映像,以查看所有设置。最后,第三种方法是设置“一切都以你自己的方式”:从网站或 githab 项目或本教程中获取有用的东西。您将在文章末尾找到所有这些内容的链接。

假设您已经有一个正在运行的家庭助理 (HA)。在本文中,我们将只考虑创建 yaml 配置和描述导致特定操作的规则和条件的顺序方面。在我们的例子中,动作是“安全”模式的连接和脚本的触发,在运动传感器激活后 5 秒内开始拍照。因此,家庭助理通过邮件发送拍摄的照片。我不是 yaml 或为 Home Assistant 创建配置方面的专家,但按照工作示例,我得到了一个我想分享的工作配置。

我们将联系的所有文件,我将在文章末尾列出以方便考虑。我们只会谈论家庭助理。但是,如果您有任何问题 - 欢迎您!

最后,我的一切看起来像这样(红色突出显示了我们将在文章中考虑的内容):

pYYBAGOYeKaAYSH5AAC-2IX8DwA251.jpg
2612-2-1
 
pYYBAGOYeKyAXbf0AAEP-1VBSQg115.jpg
2612-1-1
 

自然,我使用树莓派作为平台。我的配置文件路径是 /usr/share/hassio/homeassistant/ 。您的配置文件的路径可能与我的路径不同。那时,我有 Home Assistant 0.101.3。我们会对这个目录下的配置文件感兴趣:configuration.yaml 和automation.yaml。

每次更改这些文件后,请务必记住,您需要在我们更改后检查配置,以了解其中可能出现的错误。这是在 Home Assistant 仪表板 -> 配置 -> 服务器控制 -> 检查配置中完成的。然后,在同一个地方,如果检查成功,我们会执行重新加载自动化和重新加载脚本。而且,如果有疑问,服务器管理会在同一选项卡中重新启动配置更新。

HC-SR501 运动传感器连接到 Raspberry pi GPIO 总线。有必要将三个接触线正确连接到 GPIO,我们将能够使用我们的传感器。传感器具有三个触点:电源 gcc (+)、零接地 (-)、控制触点(数据)。阅读 GPIO 的描述后,我将它们连接到我的树莓派,如下所示。我将 HC-SR501 连接到 GPIO 连接器:pir#2 – 5.5 vvcc;pin#26(13 行)——传感器的数据触点和 pin#6-GND (-)。

作为照片源,我将 USB 相机或 csi 相机与 mjpg-streamer 结合使用。毕竟,由您决定将哪个 bash 脚本附加到 HA。

现在让我们在 configuration.yml 中描述我们的传感器,比方说,通过命令行:

须藤纳米/usr/share/hassio/homeassistant/configuration.yaml

虽然使用带有winscp的notepad ++可能更方便..

让我们描述 HC-SR501 的设置顺序如下:

binary_sensor:
  - platform: rpi_gpio
    #name: HC-SR501
    ports:
      7: Sensor HC-SR501
    invert_logic: false

应该注意的是,在描述与传感器控制(数据)触点的连接的行中的设置起到了重要的作用:pin#7

端口:

      7:传感器HC-SR501

家庭助理有一个用于启用家庭安全功能的内置工具。让我们在我们的 configuration.yaml 中描述它,使用描述:https ://www.home-assistant.io/integrations/manual/

 alarm_control_panel:
  - platform: manual
    name: Home Alarm
    pending_time: 60
     delay time 40
     triggered:
    pending_time: 0
    code: 1234

这个设置意味着我们有 60 秒的时间离开家(在这个时间之后,警报会打开),还有 40 秒的时间来关闭它(使用密码 1234)当我们回家时。出于某种原因,你离开的时间总是比来的时间长。)

我们现在将描述在我们的 configuration.yaml 中触发运动传感器时启用和禁用摄影的机制(有关开关的更多信息 - 命令行平台可以在这里找到https://www.home-assistant.io/integrations/switch .command_line/):

 - platform: command_line
   switches:
      start_stop_motion_rec_timelapse:
        friendly_name: 'Record motion timelapse video'
        command_on: 'curl http://localhost/start_mjpgstrm.php  && curl http://localhost//rec-motion-mjpg.php'
        command_off: 'curl http://localhost/stop_mjpgstrm.php && curl http://localhost/rec-motion-mjpg-stop.php'

在这里,我们将 command_on enable 和 command_off disable 命令链接到控制摄像机记录的脚本。在这种情况下,当您启用 command_on 时,会依次执行 2 个脚本。这将启动 mjpg-streamer 并开始在运动传感器上录制。通过 Raspberry pi 上工作站点的 php 文件访问 bash 脚本。为此,我设置了 nginx 和 web 访问,当通过浏览器以 http://<树莓派的 IP 地址>/start_mjpgstrm.php 访问时,应该执行我们的 php 脚本。

我们不考虑在本文中设置 Web 访问。显然,这并不安全,但由于我在 docker 上有 HA,我面临着一个事实,即我有一个孤立的 docker 环境。通过 php 访问我的网站,我可以看到操作系统的“外部世界”。docker 或 HA 大师可能有很多正确的解决方案。请写下来,知道会很有趣! 

我将把这些脚本的列表留在文章下面,我们不再赘述。在本文中,我只想关注 Home Assistant 中一系列动作的形成。

所有这些都放在 start_stop_motion_rec_timelapse 对象中,这将是我们的视觉开关,当运动传感器被触发时,我们将使用它来管理照片的记录。

poYBAGOYeK6AEnqhAAARKczJL5E544.jpg
 

我们将能够在 Home Assistant-> Overview 选项卡中通过切换右上角的 Configure UI 配置模式的激活来可视化我们创建的这些对象

pYYBAGOYeLCAYY4OAAANXvYuhLA876.jpg
配置用户界面
 

在浏览器中的“配置 -> 服务器控制”选项卡中预先重启 HA,以获取我们的 configuration.yaml。

接下来,选择浏览器窗口底部的黄色加号,单击实体卡并将我们创建的对象链接到地图。

poYBAGOYeLKAPkDkAAAs65fxR1A494.png
 

对于我们的传感器,请选择传感器卡。它看起来像这样:

poYBAGOYeLWAcPqhAABcagsBlfw932.jpg
 

如图所示,第二个实体字段包含上述开关:switch.start_stop_motion_rec_timelapse。

它允许我们打开和关闭我们的运动传感器记录,无论是否启用了“家庭安全”功能。而且,一般来说,它应该在上述所有操作之后已经工作。

 并且,相应地,我们添加了报警面板图:

poYBAGOYeLeAQk0FAABUhrBqnT8037.png
 

这里还有一个有趣的地方。我使用 Home Assistant 作为 docker 容器。在这方面,我们脚本的路径将与脚本文件的实际路径不同。毕竟,容器内的文件结构是虚拟化的,并通过 docker 挂载的卷链接到实际的文件结构。例如,这看起来像这样: 容器内的路径:/config/scripts/ 操作系统内的路径:/usr/share/hassio/homeassiatnt/scripts。所以看看你的容器的设置,这些卷是如何在 Binds 字段中配置的。如果你那里有 HA。

sudo docker inspect homeassistant|less

当运动传感器被触发时,在警报被激活的那一刻:我希望除了我们开始拍摄快速照片(timelapsesnapshots)之外,我还会收到邮件中的警告和一张照片。我并行化了这些过程。在第一种情况下,照片记录(timelapsesnapshots)在传感器触发后的几秒钟内发生。为此,我运行 mjpg-streamer curl http://localhost/start_mjpgstrm.php ,启动 php:сurl http://localhost/rec-motion-mjpg.php反过来,它运行 python 脚本 mov.py。所有描述的文件和捆绑包都可以通过链接在文章末尾找到。另一个脚本 takeSnapshotWebcam.sh 拍摄了一张我通过电子邮件发送的照片。我在我们的 configuration.yml 中这样描述这些脚本:

shell_command:
#start the script that generates a snapshot for the mailing list
  take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
#starting our mjpg-streamer 
  start_mgpg_streamer: 'curl http://localhost/start_mjpgstrm.php'
#stopping mjpg-streamer
  stop_mgpg_streamer: 'curl http://localhost/stop_mjpgstrm.php'
#start the script that generates snapshots for 5 seconds
  start_motion_rec: 'curl http://localhost/rec-motion-mjpg.php'
#stop it
  stop_motion_rec: 'curl http://localhost/rec-motion-mjpg-stop.php'

在描述我们的邮件对象的同一 configuration.yml 中:

notify:
  - name: ha_sendmail
    platform: smtp
#if mail is on gmail
    server: smtp.gmail.com
    port: 587
    timeout: 15
#from whom we send
    sender: user@gmail.com
    encryption: starttls
    username: user@gmail.com
    password: passwd
#to whom we send (you can use one box and send it to yourself, why not)
    recipient:
      - user@gmail.com
    sender_name: My Home Assistant

很重要的一点!为了让我们的 HA 能够连接和发送电子邮件(发件人字段),我们必须允许我们的 HA 服务在 gmail 上使用此邮箱。如何在此处执行此链接:https ://myaccount.google.com/lesssecureapps

此外,我们描述了在automation.yaml 中启用home_alarm 警报时的自动化机制本身:

#first action bundle (alias “triggered by sensor if security is enabled”
- alias: 'Trigger alarm while armed away'
#alias is triggered when the sensor is in the “on” position
  trigger: 
    - platform: state
      entity_id: binary_sensor.sensor_hc_sr501
      to: 'on'
#provided that the security mode is enabled in the absence of people at home “armed away”
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_away
#and then performs the action 
  action:
#Running mjpg-streamer (if disabled)
    - service: shell_command.start_mgpg_streamer
#Running a script that records from the camera
    - service: shell_command.start_motion_rec
#Change the visualization of our "Home security" card on the HA panel to the “alarm triggered” position
    - service: alarm_control_panel.alarm_trigger
      entity_id: alarm_control_panel.home_alarm

下一组条件和操作是在“安全”关闭时发送控制台消息并关闭我们的运动记录脚本。

- alias: 'Send notification when alarm is Disarmed'
  trigger:
    - platform: state
      entity_id: alarm_control_panel.home_alarm
      to: 'disarmed'
  action:
    - service: shell_command.stop_mgpg_streamer
    - service: shell_command.stop_motion_rec
    - service: persistent_notification.create
      data:
       message: The alarm is Disarmed at {{ states('sensor.date_time') }}"

最后,第三个链接——发送带有照片的电子邮件:

- alias: 'Send notification when alarm triggered'
  trigger: 
   - platform: state
     entity_id: alarm_control_panel.home_alarm
     to: 'triggered'
  action:
    - service: persistent_notification.create
      data:
       message: Notification when alarm triggered. Motion sensor HC-SR501 detected.
    - delay:
       seconds: 4
#run our script for creating a single script
    - service: script.webcam_snapshot
#and refer to the described object in configuration.yaml: notify.ha_sendmail
    - service: notify.ha_sendmail
      data:
        title: 'Intruder alert'
        message: '{{now().strftime("%H:%M %Y-%m-%d")}}:Notification when alarm triggered. Motion sensor HC-SR501 detected.'
        data:
           images:
#link to the script already made by the script.webcam_snapshot
              - /config/camera/snapshot.jpg

请记住,在 yaml 文件中,行标记很重要,命令前的空格字符在形成代码块及其结构方面起着重要作用。通过 Home Assistant(以下简称 HA)配置 -> 服务器控制 -> 检查配置检查对 yaml 的所有更改

似乎都是。你的树莓派变成了优雅的东西!..)

这就是工作 HA 自动化,由您自己配置!一定要把你的想法写给我!

而且,如果你读到最后,这里是承诺的链接:

图片和邮编:https ://viamybox.com/downloadpage

Github 项目:https ://github.com/viatc/viamybox

配置文件在此处描述:configuration.yaml、automation.yaml、takeSnapshotWebcam.sh、rec-motion-mjpg.php、mov.py

hc-sr501 ,家庭报警器,家庭助理,树莓派, видеорегистрация , датчик движения , подключение сигнализации , умный дом

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !