Надёжный домашний мониторинг с Home Assistant на Raspberry Pi: движение, алермы и видеозахват
Развёртывание надёжной системы домашней безопасности на Raspberry Pi с Home Assistant (HA) просто, если понимать ключевые компоненты: датчик движения, панель тревоги и камеру для видеозахвата. Это руководство ведёт через полную настройку — от подключения PIR-сенсора HC‑SR501 к конфигурации HA, запуску mjpg‑streamer и отправке мгновенных email-алертов с фото.
Предварительные требования
- Raspberry Pi с Home Assistant (рекомендуется 0.101.3 или новее)
- PIR датчик движения HC‑SR501
- USB или CSI камера (любая, работающая с mjpg‑streamer)
- Интернет-подключённый email-аккаунт (например, Gmail) для уведомлений
- Базовое знакомство с YAML и Docker (если HA в контейнере)
1. Подключение HC‑SR501 к Pi
У сенсора три пина: VCC (+), GND (–), OUT. Подключите так:
- VCC → Пин 5 (3,3 В)
- 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'
# Email нотификатор (пример Gmail)
notify:
- name: ha_sendmail
platform: smtp
server: smtp.gmail.com
port: 587
timeout: 15
sender: <your‑email>
encryption: starttls
username: <your‑email>
password: <app‑password>
recipient:
- <your‑email>
sender_name: My Home Assistant
После редактирования провалидируйте конфигурацию через Configuration → Server Controls → Check Config, затем перезагрузите автоматизации и скрипты.
4. Логика автоматизаций
Создайте следующие автоматизации в automation.yaml для связывания сенсора, тревоги и камеры.
# 1. Триггер при armed_away и движении
- 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 для вложения в email.
5. Примечание про Docker-тома
Если HA запущен в Docker, помните, что папка контейнера /config маппится на /usr/share/hassio/homeassistant на хосте. Используйте docker inspect homeassistant | less для подтверждения биндингов томов.
6. Тестирование системы
- Включите тревогу в режим
armed_awayчерез HA UI. - Сработайте PIR-сенсор (например, пройдите мимо).
- Проверьте, что mjpg‑streamer стартует, запись движения захватывает короткий клип и email со снимком приходит.
- Разоружите тревогу и подтвердите, что запись останавливается и появляется уведомление о разоружении.
Заключение
С этими шагами у вас есть самодостаточное, дешёвое решение домашней безопасности, объединяющее детекцию движения, управление тревогой и мгновенные фото-алерты — всё оркестрируемое Home Assistant на Raspberry Pi.
Свободно адаптируйте скрипты и настройки уведомлений под свою среду. Удачной автоматизации!
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
- Как подключить однопроводный датчик температуры DS1820 к Raspberry Pi через GPIO
- Подключение ультразвукового датчика HC‑SR04 к Raspberry Pi 3 — полное руководство
- Построение DIY инфракрасного датчика движения для Raspberry Pi — пошаговое руководство
- Построение доступной беспроводной сети датчиков для дома
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Создание headless сигнализации утечки воды на Raspberry Pi 2 с Adafruit T‑Cobbler Plus
- Построение низкобюджетного датчика влажности почвы на Raspberry Pi для умного полива