树莓派 Home Assistant 安全监控:PIR 运动检测、报警面板与视频抓拍
在树莓派上部署 Home Assistant (HA) 实现可靠家庭安防,核心组件:运动传感器、报警面板、摄像头视频抓拍。本指南完整演示从 HC‑SR501 PIR 接线到 HA 配置、启动 mjpg‑streamer、发送带照片的即时邮件报警。
前置条件
- 运行 Home Assistant 的树莓派 (建议 0.101.3 或更新版)
- HC‑SR501 PIR 运动传感器
- USB 或 CSI 摄像头 (兼容 mjpg‑streamer 即可)
- 联网邮箱账号 (如 Gmail) 用于通知
- 基本 YAML 与 Docker 知识 (若以容器运行 HA)
1. HC‑SR501 接线
传感器三脚:VCC (+)、GND (–)、OUT。接法:
- VCC → 引脚 5 (3.3V)
- GND → 引脚 6 (地)
- OUT → 引脚 7 (GPIO 4)
此连接使 HA 通过 rpi_gpio 平台读取传感器二进制状态。
2. 安装 mjpg‑Streamer
参考 此指南 部署 mjpg‑streamer 与可选 FFMpeg 录像。仓库脚本按需启动/停止流与录像。
3. 配置 Home Assistant
编辑 /usr/share/hassio/homeassistant/configuration.yaml (或你的 HA 配置目录),添加以下段:
# PIR 二进制传感器
binary_sensor:
- platform: rpi_gpio
ports:
7: Sensor HC‑SR501
invert_logic: false
# 手动报警面板
alarm_control_panel:
- platform: manual
name: Home Alarm
pending_time: 60
delay_time: 40
code: 1234
# 命令行开关控制 mjpg‑streamer
switch:
- platform: command_line
switches:
start_stop_motion_rec_timelapse:
friendly_name: 'Record motion timelapse'
command_on: "curl https://localhost/start_mjpgstrm.php && curl https://localhost/rec-motion-mjpg.php"
command_off: "curl https://localhost/stop_mjpgstrm.php && curl https://localhost/rec-motion-mjpg-stop.php"
# 自定义脚本 Shell 命令
shell_command:
take_snapshot_webcam: '/config/scripts/takeSnapshotWebcam.sh'
start_mgpg_streamer: 'curl https://localhost/start_mjpgstrm.php'
stop_mgpg_streamer: 'curl https://localhost/stop_mjpgstrm.php'
start_motion_rec: 'curl https://localhost/rec-motion-mjpg.php'
stop_motion_rec: 'curl https://localhost/rec-motion-mjpg-stop.php'
# 邮件通知 (Gmail 示例)
notify:
- name: ha_sendmail
platform: smtp
server: smtp.gmail.com
port: 587
timeout: 15
sender:
encryption: starttls
username:
password:
recipient:
-
sender_name: My Home Assistant
编辑后通过 Configuration → Server Controls → Check Config 校验,随后重载自动化与脚本。
4. 自动化逻辑
在 automation.yaml 创建以下自动化串联传感器、报警、摄像头:
# 1. 布防离家模式下触发运动则报警
- alias: 'Trigger alarm while armed away'
trigger:
- platform: state
entity_id: binary_sensor.sensor_hc_sr501
to: 'on'
condition:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: armed_away
action:
- service: shell_command.start_mgpg_streamer
- service: shell_command.start_motion_rec
- service: alarm_control_panel.alarm_trigger
target:
entity_id: alarm_control_panel.home_alarm
# 2. 撤防时停止录像
- alias: 'Stop recording when alarm 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'') }}'
# 3. 报警触发发送照片邮件
- alias: 'Email alert on alarm trigger'
trigger:
- platform: state
entity_id: alarm_control_panel.home_alarm
to: 'triggered'
action:
- service: persistent_notification.create
data:
message: 'Alarm triggered by motion sensor.'
- delay: { seconds: 4 }
- service: script.webcam_snapshot
- service: notify.ha_sendmail
data:
title: 'Intruder alert'
message: '{{now().strftime("%H:%M %Y-%m-%d")}}: Alarm triggered by motion sensor.'
data:
images:
- /config/camera/snapshot.jpg
script.webcam_snapshot 应调用 takeSnapshotWebcam.sh,抓取单帧保存为 /config/camera/snapshot.jpg 供邮件附件。
5. Docker 卷注意事项
HA 若运行在 Docker 容器中,容器 /config 映射宿主 /usr/share/hassio/homeassistant。用 docker inspect homeassistant | less 确认卷绑定。
6. 系统测试
- 通过 HA 界面将报警设为
armed_away。 - 触发 PIR 传感器 (如走过)。
- 验证 mjpg‑streamer 启动、运动录像捕获短片段、收到带快照邮件。
- 撤防报警确认录像停止、撤防通知出现。
结语
完成上述步骤,你将拥有自包含、低成本的家庭安防方案:运动检测、报警控制、即时照片报警,全由树莓派上 Home Assistant 编排。请按环境调整脚本与通知设置。自动化愉快!
制造工艺
- 树莓派+$5 I²C传感器打造温度记录仪
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派自制气象站:每日邮件推送温湿雨数据
- 树莓派 GPIO 直连 DS1820 单总线温度传感器指南
- 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
- 树莓派 DIY 红外运动传感器:从原理到代码的完整指南
- 打造低成本家庭无线传感器网络:Arduino + 树莓派 + Xively 物联网平台
- 树莓派 PIR 运动传感器控制 LED 实战指南
- 树莓派 2 无头模式水浸报警器:基于 Adafruit T‑Cobbler Plus 构建
- 树莓派低成本土壤湿度传感器:智能灌溉 DIY 指南
- 树莓派读取线性霍尔传感器:Java 指南与 ADC0832 深度解析
- 树莓派多传感器温度光照监测系统:DS18B20 实战构建