我想告诉你我在 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 创建配置方面的专家,但按照工作示例,我得到了一个我想分享的工作配置。
我们将联系的所有文件,我将在文章末尾列出以方便考虑。我们只会谈论家庭助理。但是,如果您有任何问题 - 欢迎您!
最后,我的一切看起来像这样(红色突出显示了我们将在文章中考虑的内容):
自然,我使用树莓派作为平台。我的配置文件路径是 /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 对象中,这将是我们的视觉开关,当运动传感器被触发时,我们将使用它来管理照片的记录。
我们将能够在 Home Assistant-> Overview 选项卡中通过切换右上角的 Configure UI 配置模式的激活来可视化我们创建的这些对象
在浏览器中的“配置 -> 服务器控制”选项卡中预先重启 HA,以获取我们的 configuration.yaml。
接下来,选择浏览器窗口底部的黄色加号,单击实体卡并将我们创建的对象链接到地图。
对于我们的传感器,请选择传感器卡。它看起来像这样:
如图所示,第二个实体字段包含上述开关:switch.start_stop_motion_rec_timelapse。
它允许我们打开和关闭我们的运动传感器记录,无论是否启用了“家庭安全”功能。而且,一般来说,它应该在上述所有操作之后已经工作。
并且,相应地,我们添加了报警面板图:
这里还有一个有趣的地方。我使用 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条评论
快来发表一下你的评论吧 !