Датчик движения, тревога, запись видео в HA на Raspberry Pi
Подключение датчика движения, сигнализации и записи видео в Home Assistant на Raspberry pi.
Хочу рассказать вам о своем небольшом опыте работы с Home Assistant (далее - HA) на Raspberry pi. Далее я расскажу о подключении функции видеорегистрации, датчика движения и, соответственно, функции домашней безопасности с получением фотографий на электронную почту в случае срабатывания «безопасности».
Конечно, одна из причин - желание понять из ваших отзывов, что я «сделал не так» при реализации этого сценария.
Настроить вышеуказанный функционал можно тремя способами:«без проблем», «короткий» и «независимый». В первом случае вы можете скачать разработанное изображение с сайта https://ViaMyBox.com/downloadpage
для вашего Raspberry pi, и вы можете увидеть, как все выглядит в уже настроенном виде. Во втором случае вы можете загрузить zip-архив с сайта или из проекта github, установить его, а затем установить образ докера HA с помощью утилиты (sudo via-setup.sh), чтобы увидеть, как все настроено. И, наконец, третий способ - настроить «все по-своему»:взять что-нибудь полезное с сайта, проекта гитхаба или из этого туториала. Ссылки на все это вы найдете в конце статьи.
Предположим, у вас уже есть работающий Home Assistant (HA). В этой статье мы рассмотрим только аспекты создания конфигураций yaml и описание последовательности правил и условий, которые приводят к определенному действию. В нашем случае действие - это подключение режима «безопасность» и срабатывание скрипта, который начинает фотографировать в течение 5 секунд после срабатывания датчика движения. В результате Home Assistant отправляет отснятые фотографии по почте. Я не эксперт в yaml или создании конфигураций для Home Assistant, но, следуя рабочим примерам, я получил рабочую конфигурацию, которой хочу поделиться.
Все файлы, с которыми мы свяжемся, я выложу в конце статьи для более удобного рассмотрения. В этом примере я не собираюсь касаться того, как скрипты видеозаписи работают в bash или python. Мы будем говорить только о Home Assistant. Но если есть вопросы - добро пожаловать!
В итоге у меня все выглядит так (красным выделено то, что мы рассмотрим в статье):
Естественно, в качестве платформы я использую Raspberry pi. И мой путь к файлам конфигурации - / usr / share / hassio / homeassistant /. Путь к вашим файлам конфигурации может отличаться от моего пути. На тот момент у меня был Home Assistant 0.101.3. Нас будут интересовать файлы конфигурации в этом каталоге:configuration.yaml и automation.yaml.
После каждого изменения этих файлов важно помнить, что вам нужно будет проверять конфигурацию после наших изменений на предмет возможных ошибок, сделанных в ней. Это делается в панели управления Home Assistant -> Конфигурация -> Управление сервером -> Проверить конфигурацию. А затем там же выполняем автоматизацию перезагрузки и скрипты перезагрузки, если проверка прошла успешно. И, если сомневаетесь, Server Management перезапустите обновления конфигурации точно на той же вкладке.
Датчик движения HC-SR501 подключен к шине Raspberry pi GPIO. Необходимо правильно подключить три контактных провода к GPIO, и мы сможем использовать наш датчик в действии. Датчик имеет три контакта:силовой gcc (+), нулевой gnd (-), контакт управления (данные). Прочитав описание GPIO, я подключил их к своей малине следующим образом. Я подключил HC-SR501 к разъему GPIO:pir # 2 - 5.5 vvcc; пин №26 (13 ряд) - контакт данных и пин №6-GND (-) датчика.
В качестве источника фото я использую либо usb-камеру, либо csi-камеру в сочетании с mjpg-streamer. В этом посте мы не будем описывать, как установить и настроить mjpg-streamer на Raspberry pi. В Интернете есть множество примеров быстрой установки. Однако я хочу сказать, что использую данные из этого проекта https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&-Setup-&-FFMpeg-Recording Там же подробно описана установка этого модуля. Или воспользуйтесь любым удобным для вас способом получения фото и видео. В конце концов, вам решать, какой сценарий bash присоединить к HA.
Теперь опишем наш датчик в файле configuration.yml, скажем, через командную строку:
sudo nano /usr/share/hassio/homeassistant/configuration.yaml
хотя использование notepad ++ с winscp может быть более удобным ..
Опишем последовательность настроек HC-SR501 следующим образом:
binary_sensor:- platform:rpi_gpio #name:HC-SR501 ports:7:Sensor HC-SR501 invert_logic:false
Следует отметить, что здесь важный момент играют настройки в строках, описывающих подключение к управляющим (информационным) контактам датчиков:pin # 7
порты:
7:Датчик HC-SR501
В Home Assistant есть встроенный инструмент для включения функции домашней безопасности. Давайте опишем это в нашем configuration.yaml, используя описание:https://www.home-assistant.io/integrations/manual/
alarm_control_panel:- platform:manual name:Home Alarm pending_time:60 время задержки срабатывания 40:pending_time:0 code:1234
Этот параметр означает, что у нас есть 60 секунд, чтобы выйти из дома (по истечении этого времени сигнализация включится), и 40 секунд, чтобы выключить ее (с паролем 1234), когда мы вернемся домой. По какой-то причине вы всегда уходите дольше, чем приходите.)
Теперь мы опишем механизм включения и отключения фотосъемки при срабатывании датчика движения в нашем файле configuration.yaml (дополнительную информацию о переключателе - платформа command_line можно найти здесь https://www.home-assistant.io/integrations/switch .command_line /):
- платформа:переключатели строки_команды:start_stop_motion_rec_timelapse:friendly_name:'Записывать замедленное видео движения' 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 и начнется запись на датчике движения. Доступ к сценариям bash осуществляется через php-файл рабочего сайта на Raspberry pi. Для этого я настроил nginx и веб-доступ, и при доступе через браузер как http://
В этой статье мы не рассматриваем настройку веб-доступа. Ясно, что это небезопасно, но из-за того, что у меня есть HA на докере, я столкнулся с тем, что у меня есть изолированная среда докера. И «внешний мир» ОС я могу увидеть, зайдя на свой сайт через php. Наверное, есть куча правильных решений от docker или HA guru. Напишите, было бы интересно узнать!
Листинг этих скриптов я оставлю под статьей, и мы не будем на них останавливаться. В этой статье я хочу проследить только формирование последовательности действий в Home Assistant.
Все это помещено в объект start_stop_motion_rec_timelapse, который будет нашим визуальным переключателем, с помощью которого мы будем управлять записью фотографий при срабатывании датчика движения.
Мы сможем визуализировать эти созданные нами объекты на вкладке Home Assistant-> Обзор, переключив активацию режима настройки конфигурации пользовательского интерфейса в правом верхнем углу
Предварительно перезагрузите HA в браузере на вкладке «Конфигурация -> Управление сервером», чтобы получить наш файл configuration.yaml.
Затем выберите желтый плюс в нижней части окна браузера, щелкните карточку «Сущности» и свяжите созданные нами объекты с картами.
Для нашего сенсора выбираем сенсорную карту. Это будет выглядеть так:
Как вы можете видеть на картинке, второе поле сущности содержит описанный выше переключатель:switch.start_stop_motion_rec_timelapse.
Это позволяет нам включать и выключать запись с помощью датчика движения, независимо от того, включена ли функция «домашней безопасности». И, в целом, он должен уже работать после всех описанных выше действий.
И соответственно добавляем карту охранной панели:
Здесь есть еще один интересный момент. Я использую Home Assistant как докер-контейнер. В связи с этим путь к нашему скрипту будет отличаться от фактического пути к файлу скрипта. В конце концов, файловая структура внутри контейнера виртуализирована и связана с реальной файловой структурой через тома, смонтированные в докере. Это выглядит, например, так:Путь внутри контейнера:/ config / scripts / Путь внутри ОС:/ usr / share / hassio / homeassiatnt / scripts. Так что посмотрите настройки вашего контейнера, как эти тома настраиваются в поле Binds. Если у вас там HA.
sudo docker inspect homeassistant | меньше
Когда срабатывает датчик движения, в момент активации будильника:я хочу, чтобы помимо того, что мы начинали делать быстрые фотографии (интервальные снимки), я получал предупреждение по почте и изображение. Распараллелил процессы. В первом случае фоторегистрация (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:# запуск скрипта, который создает снимок для списка рассылки take_snapshot_webcam:'/config/scripts/takeSnapshotWebcam.sh'#starting нашего mjpg-streamer start_mgpg_streamer:' curl http://localhost/start_mjpgstrm.php'#stopping 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.yml, описывающем наш объект для рассылки:
notify:- name:ha_sendmail platform:smtp # если почта находится на сервере gmail:smtp.gmail.com порт:587 timeout:15 # от кого мы отправляем отправителя:[защищенная электронная почта] шифрование:starttls имя пользователя:[защищенная электронная почта] пароль:пароль # кому мы отправляем (вы можете использовать один ящик и отправить его себе, почему бы и нет) получатель:- [электронная почта защищена] имя_ отправителя:Мой домашний помощник код>
Важная точка! Чтобы наш HA мог подключаться и отправлять электронные письма (поле отправителя), мы должны разрешить нашей службе HA использовать этот почтовый ящик в gmail. Как это сделать - ссылка здесь:https://myaccount.google.com/lesssecureapps
И далее опишем сам механизм автоматизации при включении тревоги home_alarm в automation.yaml:
#first action bundle (псевдоним «запускается датчиком, если включена безопасность» - псевдоним:«Активировать тревогу при нахождении под охраной» # псевдоним запускается, когда датчик находится в Триггер положения «включено»:- платформа:состояние entity_id:binary_sensor.sensor_hc_sr501 to:'on' # при условии, что режим безопасности включен в отсутствие людей в доме «вооруженный» условие:- условие:состояние entity_id:alarm_control_panel.home_alarm state:connected_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
Следующий набор условий и действий - отправить консольное сообщение, когда «безопасность» отключена, и отключить наши сценарии записи движения.
- псевдоним:'Отправлять уведомление, когда тревога снята с охраны' триггер:- платформа:состояние entity_id:alarm_control_panel.home_alarm to:действие 'disarmed':- service:shell_command.stop_mgpg_streamer - service:shell_command.stop_motion_rec - service:persistent_notification.create data:message:сигнал тревоги снимается с охраны в {{состояниях ('sensor.date_time')}} "
И, наконец, третья ссылка - отправить письмо с фото:
- псевдоним:'Отправлять уведомление при срабатывании тревоги' триггер:- платформа:состояние entity_id:alarm_control_panel.home_alarm to:'triggered' action:- service:persistent_notification.create data :message:Уведомление при срабатывании тревоги. Обнаружен датчик движения HC-SR501. - 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")}}:уведомление при срабатывании тревоги. Обнаружен датчик движения HC-SR501. ' data:images:# ссылка на сценарий, уже созданный сценарием. webcam_snapshot - /config/camera/snapshot.jpg
Помните, что в файлах yaml важна разметка строки, а символы пробела перед командами играют важную роль в формировании блоков кода и его структуре. Проверьте все изменения в своем yaml через Home Assistant (далее HA) Configuration -> Server Controls -> Check Config
Вроде все. И ваш Raspberry Pi превращается в нечто элегантное! ..)
Вот он - рабочая HA автоматика, настроенная своими руками! Обязательно напишите мне все, что думаете по этому поводу!
И, если все-таки дочитать до конца, вот обещанные ссылки:
Изображение и zip:https://viamybox.com/downloadpage
Проект Github:https://github.com/viatc/viamybox
Здесь описаны файлы конфигурации:configuration.yaml, automation.yaml, takeSnapshotWebcam.sh, rec-motion-mjpg.php, mov.py
hc-sr501, домашняя сигнализация, домашний помощник, raspberry pi, видеорегистрация, датчик движения, подключение сигнализации, умный дом
Без категории
Источник:датчик движения, тревога, запись видео в HA на Raspberry Pi
Производственный процесс
- Регистратор температуры Raspberry Pi
- Датчик температуры Python и Raspberry Pi
- Метеостанция Raspberry Pi
- 1-проводный датчик температуры DS1820 на Raspberry Pi (напрямую через GPIO)
- Ультразвуковой датчик (HC-SR04) + Raspberry Pi
- Самодельная инфракрасная система датчиков движения для Raspberry Pi
- Создание сети беспроводных датчиков в вашем доме
- Датчик движения с использованием Raspberry Pi
- Сигнализация о воде Raspberry Pi 2 с t сапожником плюс
- Датчик влажности почвы Raspberry Pi