Raspberry Pi上家庭助手中的运动传感器以及警报和视频注册连接

我想谈谈我在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创建配置的专家,但是在工作示例之后,我得到了一个工作配置,我想与他人分享。

我们将引用的所有文件,我将在本文结尾处进行布局,以进行更方便的审阅。在此示例中,我将不处理用于以bash或python录制视频的脚本的工作。只有家庭助理。但是,如果您有任何疑问-惠康!

最后,一切对我来说都是这样(在本文中将以红色突出显示):





我使用Raspberry pi作为平台。我的配置文件路径是/ usr / share / hassio / homeassistant /。配置文件的路径可能与我的路径不同。当时,我有家庭助理0.101.3。我们将对该目录中的配置文件感兴趣:configuration.yaml和automation.yaml。

在对这些文件进行每次更改之后,请务必记住,在更改之后,有必要检查配置是否存在任何错误,这一点很重要。这是在选项卡Home Assistant仪表板->配置->服务器控件->检查配置中完成的。然后,如果验证成功,则在同一位置执行Reload Automations和Reload Scripts。并且,如果有疑问,-服务器管理将在同一选项卡中重新启动,以准确更新配置。

HC-SR501运动传感器连接到Raspberry pi GPIO总线。必须将三根接触线正确连接到GPIO,我们才能使用传感器。传感器具有三个触点:电源gcc(+),零接地(-),控制触点(数据)。阅读完GPIO的说明后,我将它们按以下方式连接到我的树莓派。我将hc-sr501连接到GPIO连接器:引脚#2-5.5vvcc;针号26(第13行)-数据触点,针号6-传感器的接地(-)。

我将usb相机或csi相机与mjpg-streamer结合使用作为照片来源。如何在Raspberry pi上安装和配置mjpg-streamer,在此不再赘述。在Internet上快速安装的例子很多。但是,我想说的是,我使用了该项目中的数据该模块的安装在此处也有详细说明。或使用任何方便您拍摄照片和视频的方法。毕竟,最终由什么bash脚本来固定到HA取决于您。

现在,我们将通过命令行在configuration.yaml中描述我们的传感器:

sudo nano /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

应当注意的是,这里的重点是描述传感器的控制(数据)触点连接的行中的设置:针#7

端口:

7:传感器HC-SR501

家庭助理具有内置的工具,用于激活家庭安全功能。我们将使用以下描述在configuration.yaml中对其进行描述: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中触发运动传感器时打开和关闭拍照的机制(有关开关的更多信息-命令行平台,请参见此处):

 - 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'


在这里,我们将命令enable command_on和command_off off命令链接到控制摄像机记录的脚本。在这种情况下,当执行command_on时,将依次执行2个脚本。这将启动mjpg-streamer并触发运动传感器记录。对bash脚本的访问通过Raspberry pi上工作站点的php文件进行。为此,我配置了nginx和Web访问,并通过http:// <Raspberry pi的IP地址> /start_mjpgstrm.php的形式通过浏览器进行访问时,应执行我们的php脚本。在这种情况下,此脚本将执行mjpg-streamer。

本文中不考虑Web访问配置。当然,这不是安全性,但是由于我在docker上安装了HA,因此我面临这样一个事实,即我具有隔离的docker环境和可以通过php与我的网站联系的OS的“外部世界”。 Docker或HA专家可能提供了很多好的解决方案。写,知道会很有趣!

我将在文章下列出这些脚本,我们将不再赘述。在本文中,我只想跟踪Home​​ Assistant中操作序列的形成。

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



我们可以在Home Assistant-> Overwiew选项卡中可视化由我们创建的这些对象,切换右上角的Configure UI配置模式的激活,



在浏览器的“ Configuration-> Server Control”选项卡中重新启动HA,以选择我们的configuration.yaml。

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



对于我们的传感器,选择传感器卡。它将如下所示:



如图所示,在实体的第二个字段中,上述开关为:switch.start_stop_motion_rec_timelapse。

无论是否包含“家庭安全”功能,它都可以打开或关闭在运动传感器上的记录。并且,通常,在执行所有上述操作后,它应该已经可以工作。

好吧,因此,警报面板图:



还有另一个有趣的地方。我将Home Assistant用作docker容器。在这方面,脚本的路径将与脚本文件的实际路径不同。毕竟,容器内部的文件结构已虚拟化,并通过已安装的docker卷与实际文件结构连接。它看起来像这样:容器内的路径:/ config / scripts / OS内的路径:/ usr / share / hassio / homeassiatnt /脚本。因此,请查看您的容器设置,以及如何在“绑定”字段中配置这些卷。如果有医管局,您在那里。

sudo docker inspect homeassistant|less

触发运动传感器时,在打开警报的那一刻:除了我们要开始快速摄影(间隔拍摄快照)外,我还希望通过邮件和快照收到警告。我并行处理。在第一张照片中,触发传感器后的几秒钟内会记录日志(间隔拍摄快照)。为此,我运行mjpg-streamer curl localhost / start_mjpgstrm.php,启动php:surl http://localhost/rec-motion-mjpg.php。然后,他运行python脚本mov.py。所描述的所有文件和链接均位于本文的末尾,以供参考。另一个takeSnapshotWebcam.sh脚本拍摄快照,我通过电子邮件发送该快照。我在我们的configuration.yaml中描述这些脚本,如下所示:

shell_command:
#      
  take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
#  mjpg-streamer 
  start_mgpg_streamer: 'curl http://localhost/start_mjpgstrm.php'
# mjpg-streamer
  stop_mgpg_streamer: 'curl http://localhost/stop_mjpgstrm.php'
#      5 
  start_motion_rec: 'curl http://localhost/rec-motion-mjpg.php'
# 
  stop_motion_rec: 'curl http://localhost/rec-motion-mjpg-stop.php'

在那里,在configuration.yaml中,我们描述了要发送邮件的对象:

notify:
  - name: ha_sendmail
    platform: smtp
#    gmail
    server: smtp.gmail.com
    port: 587
    timeout: 15
#  
    sender: user@gmail.com
    encryption: starttls
    username: user@gmail.com
    password: passwd
#  (       ,    )
    recipient:
      - user@gmail.com
    sender_name: My Home Assistant

重要的一点!为了使我们的HA连接并发送信件(发件人字段),我们必须允许gmail将此框用于我们的HA服务。如何执行此操作,请点击以下链接:myaccount.google.com/lesssecureapps

然后,我们描述在automation.yaml中打开home_alarm警报时的自动化机制本身:

#   (alias) “  ,   ”
- alias: 'Trigger alarm while armed away'
#alias ,     “on”
  trigger: 
    - platform: state
      entity_id: binary_sensor.sensor_hc_sr501
      to: 'on'
# ,         “armed away”
  condition:
    - condition: state
      entity_id: alarm_control_panel.home_alarm
      state: armed_away
#     
  action:
# mjpg-streamer ( )
    - service: shell_command.start_mgpg_streamer
# ,   
    - service: shell_command.start_motion_rec
#    “  ”   HA   “ ”
    - 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
#     
    - service: script.webcam_snapshot
#      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:
#      script.webcam_snapshot  
              - /config/camera/snapshot.jpg

请记住,行布局在yaml文件中很重要,并且在命令之前,空格字符在代码块的形成及其结构中起着重要的作用。通过家庭助理(HA)配置->服务器控件->检查配置,检查对Yaml的所有更改。

一切似乎都已完成,并且您的Raspberry pi变得优雅……如果闪电还没有阻塞!)

这是-可以正常运行的HA自动化,定制!一定要写信给我,您对此有何看法!

而且,如果您仍然读到最后,我将提供承诺的链接:

https
: //viamybox.com/downloadpage
https://github.com/viatc/viamybox

此处描述配置文件:
Automation.yaml,configuration.yaml,takeSnapshotWebcam。 sh,rec-motion-mjpg.php,mov.py

Source: https://habr.com/ru/post/undefined/


All Articles