我想谈谈我在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录制视频的脚本的工作。只有家庭助理。但是,如果您有任何疑问-惠康!最后,一切对我来说都是这样(在本文中将以红色突出显示):![](https://habrastorage.org/webt/3u/ol/s8/3uols87hy7mnocdgbj-k-mfbp-a.jpeg)
我使用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/manualalarm_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/downloadpagehttps://github.com/viatc/viamybox此处描述的配置文件:Automation.yaml,configuration.yaml,takeSnapshotWebcam。 sh,rec-motion-mjpg.php,mov.py