Что нового

Article Raspberry Pi - Система безопасности управляемая через Телеграм

SecreaD

Newbie
27.11.2019
12
44
Приветствую всех участников и гостей форума!

Думаю, кому-то будет интересен данный материал.

FK53GVDIY4QHCVK.LARGE.jpg

Незнаю чтобы мы делали если бы не Github --- ограниченные знания, явно, не для нас)

Простая система безопасности для запуска на Raspberry Pi

Особенности:

  • Обнаружение движения и захват фото с помощью камеры
  • Мобильные уведомления с фотографиями
  • Определяет, когда вы находитесь дома и когда вас нет
  • Может управляться дистанционно с помощью Telegram
rpi-security-1.jpg



rpi-security-2.jpg


Требования

Вам понадобится:

  • Raspberry Pi с интерфейсом камеры.
  • Модуль камеры Raspberry Pi.
  • Адаптер Wi-Fi, который поддерживает режим монитора
Требования к программному обеспечению:
  • Телеграм бот
  • Дистрибутив Raspbian Stretch Lite
  • Python 3
Как это работает

Автоматическое обнаружение присутствия


Одна из главных целей состояла в том, чтобы система была полностью автоматической. Ставить или снимать его с охраны при отъезде или возвращении домой. Самый простой способ добиться этого - попытаться обнаружить мобильные телефоны обитателей дома. Концептуально это было довольно просто, но на практике это была самая сложная часть, потому что:
  • Захват всех пакетов на интерфейсе Wi-Fi слишком ресурсоемкий
  • Мобильные телефоны не всегда онлайн. Иногда они остаются неподключенными к Wi-Fi в течение 15 минут или дольше
  • Даже с точностью 99% ложные тревоги раздражают.
После большого тестирования я использовал подход, который сочетает активное (ARP-пинг) и пассивное (захват пакетов) обнаружение через адаптер Wi-Fi, основанное на знании MAC-адресов мобильных телефонов. MAC-адреса мобильного телефона задаются в конфигурации, а rpi-security захватывает пакеты на интерфейсе режима монитора со следующим фильтром:
  1. Wi-Fi зондирует запросы с любого из настроенных MAC-адресов
  2. Любые пакеты, отправленные с настроенных MAC-адресов на хост, на котором работает rpi-security
Приложение сбрасывает счетчик при обнаружении пакетов, и если счетчик работает дольше, чем ~ 10 минут, система поставлена на охрану. Чтобы устранить множество ложных срабатываний, при переходе между состоянием охраны / снятия с охраны приложение выполняет сканирование ARP, направленное на каждый из настроенных MAC-адресов, чтобы убедиться, что они определенно подключены к сети или отключены. И iOS, и Android будут реагировать на это сканирование ARP в 99% случаев, когда пинг ICMP довольно ненадежен. Благодаря объединению захвата зондирующих запросов Wi-Fi и использованию сканирования ARP частота Wi-Fi не имеет значения, поскольку мобильные телефоны отправляют зондирующие запросы на обеих частотах, а сканирование ARP также работает на обеих частотах.

Определение движения

Обнаружение движения осуществляется с использованием OpenCV .
Каждое обнаружение движения сохранит 4 изображения в:
Код:
/tmp
  • frame.jpg : картинка с прямоугольниками, окружающими движение
  • gray.jpg : изображение с оттенками серого и размытостью (которое будет использоваться для обнаружения движения между текущим и предыдущим кадром)
  • abs_diff.jpg : абсолютная разница между серыми кадрами (текущим и предыдущим)
  • thresh.jpg : Порог был применен, чтобы убедиться, что движение важно для обнаружения.
Уведомления

Telegram бот используется для отправки уведомлений с захваченными изображениями. Вы также можете просматривать сообщения в браузере, и сообщения синхронизируются между устройствами. Если система находится в состоянии охраны и движение обнаружено, то сообщение с захваченным изображением отправляется вам от Telegram бота. Уведомления также отправляются при любом изменении состояния тревоги.

rpi-security-3.png


Дистанционное управление

Команды Telegram боту, которые запускают определенные действия.
  • / disable : отключение службы до повторного включения.
  • / enable : Включает службу после ее отключения.
  • / status : отправляет отчет о состоянии.
  • / foto : захватывает и отправляет фото.
  • / GIF : захватывает и отправляет GIF.
Python

Приложение написано на Python 3, и большая часть функциональности обеспечивается следующими пакетами pip:
Приложение использует многопоточность для асинхронной обработки событий.
Есть 4 темы:
  • telegram_bot : отвечает на команды
  • monitor_alarm_state : Включает и выключает систему
  • capture_packets : захватывает пакеты с мобильных устройств
  • process_photos : отправляет захваченные изображения с помощью сообщений Telegram
Для полного понимания и установки:
  • Репозиторий на Github

Спасибо за внимание!​
 
Последнее редактирование модератором:

Vander

Команда форума
10.11.2019
353
733
Неплохая идея, у меня нечто похожее собрано, только я Zone Minder использовал.
 
Верх Низ