Оглавление:

R-PiAlerts: создание системы безопасности на основе WiFi с помощью Raspberry Pis: 8 шагов (с изображениями)
R-PiAlerts: создание системы безопасности на основе WiFi с помощью Raspberry Pis: 8 шагов (с изображениями)

Видео: R-PiAlerts: создание системы безопасности на основе WiFi с помощью Raspberry Pis: 8 шагов (с изображениями)

Видео: R-PiAlerts: создание системы безопасности на основе WiFi с помощью Raspberry Pis: 8 шагов (с изображениями)
Видео: Говорящий сетевой принтер из обычного 2024, Ноябрь
Anonim
Image
Image
R-PiAlerts: создайте систему безопасности на основе WiFi с помощью Raspberry Pis
R-PiAlerts: создайте систему безопасности на основе WiFi с помощью Raspberry Pis
R-PiAlerts: создайте систему безопасности на основе WiFi с помощью Raspberry Pis
R-PiAlerts: создайте систему безопасности на основе WiFi с помощью Raspberry Pis

Во время работы за столом вы внезапно слышите далекий шум. Кто-то только что пришел домой? Моя машина припаркована перед моим домом, кто-то вломился в мою машину? Разве вы не хотите, чтобы уведомление приходило на ваш телефон или на рабочий стол, чтобы вы могли решить, проводить расследование или нет? Что ж, вопросов больше нет! R-PiAlerts уже здесь!

Что такое R-PiAlerts? R-PiAlerts - это система безопасности на основе Raspberry Pi3, построенная на базе облака Firebase. При обнаружении движения система уведомит пользователя о потенциальном взломе текстовым сообщением и мигающим светодиодным дисплеем (своего рода бесшумная визуальная сигнализация). Как только пользователь получает уведомление, он или она может заняться расследованием. Все обнаруженные движения будут регистрироваться в базе данных Firebase. Помимо просмотра журнала движения в веб-браузере, пользователь также может получить доступ к журналу движения через приложение iOS. Я решил построить это из-за недавнего увеличения количества взломов автомобилей и домов в моем районе.

Почему Pi3? Мне нужно было что-то маленькое, которое могло бы обнаруживать движение и при необходимости работать от батареи. Затем я могу спрятать устройство за дверью или в машине. Также устройство должно иметь возможность отправлять мне уведомления или предупреждения. Pi3 может делать все это благодаря встроенному Wi-Fi и способности работать от USB-аккумулятора. Другие причины, по которым я выбрал Pi3:

  • Pi относительно недорогой
  • Его легко развернуть и масштабировать
  • Его можно настраивать с точки зрения программного обеспечения
  • Возможность использовать дисплеи и датчики. В этом проекте будет использоваться SenseHat
  • Работайте без головы (без монитора, клавиатуры или мыши)

Как это работает

  • В идеале пользователю потребуется 2 Raspberry Pis, подключенные к базе данных Firebase, но подойдет и один Pi.
  • Используя SenseHat, первый Pi (Pi1) будет обнаруживать движение с помощью акселерометра, а второй Pi (Pi2) будет отображать уведомления о движении.
  • Когда Pi1 обнаруживает движение, он делает 3 вещи

    • журнал перемещения в базу данных
    • создать запись уведомления в базе данных для отображения Pi2
    • отправить пользователю текстовое сообщение, уведомляющее пользователя о движении.
  • Когда Pi2 обнаруживает уведомление для отображения из базы данных, происходят две вещи.

    • Светодиодный дисплей Pi2 будет постоянно показывать уведомление
    • Пользователь может удалить уведомление, нажав кнопку Pi2 SenseHat. Это также очистит запись уведомления в базе данных.
  • С помощью приложения для iOS пользователь может

    • получить доступ к базе данных; читать и удалять журнал движения
    • пользователь может отправить Pi1 для отображения сообщения на светодиодном дисплее Pi1.

Практическое применение

  1. Если вы припаркуете машину на улице в зоне действия Wi-Fi. Подключите аккумулятор к Pi1 (см. Рис.). Спрячьте Pi1 в машине. Поместите Pi2 в удобное для просмотра место, например, рядом с вашим столом (см. Рис.).
  2. Другое применение - разместить Pi1 в вашем доме сбоку от двери. Pi настолько крошечный, что большинство людей не заметят его, особенно если он находится за шарнирной стороной (см. Рис.). Затем поместите свой Pi2 на рабочий стол.
  3. Собака попадает в какое-то место в доме, чего нельзя? Поместите Pi1 в эту область. Убедитесь, что вы положили Pi в прочную коробку, чтобы ваша собака не пережевывала его.

Пока ваши Пи находятся в зоне действия Wi-Fi, они могут предупреждать вас о движении. Если у вас нет второго Pi, вы можете просто использовать Pi1 для обнаружения движения и получения SMS-уведомлений на свой мобильный телефон.

Ведомость материалов

  • Два (2) Raspberry Pi 3, работающих под управлением Raspbian (Raspberry Pi 2 также будет работать с ключом Wi-Fi)
  • Две (2) шляпы SenseHats
  • Устройство Mac и iOS

Требуется программное обеспечение

  • Библиотека Pyrebase (подключение к Firebase)
  • Библиотека SenseHat (для доступа к акселерометру и светодиодному дисплею)
  • Библиотека Twilio (для отправки SMS)
  • Python 3, встроенный в последнюю версию Raspbian
  • Распбиан с IDLE
  • Xcode8 и Cocoapods на вашем Mac
  • Готовность учиться и исследовать

Боковое примечание Это не единственное решение безопасности на основе Pi. Если у вас есть идеи, предложения или вы просто хотите реорганизовать мой код, оставьте комментарий ниже! знак равно

Шаг 1. Настройте учетные записи Firebase и Twilio

Настройка учетных записей Firebase и Twilio
Настройка учетных записей Firebase и Twilio
Настройка учетных записей Firebase и Twilio
Настройка учетных записей Firebase и Twilio

Во-первых, прежде чем мы начнем возиться с нашим Pis, нам нужно настроить Firebase и Twilio. Firebase - это серверная часть Google как служба. Firebase включает в себя такие функции, как база данных, облачный обмен сообщениями, аутентификация, хранилище и т. Д. Для этого проекта нам нужно будет использовать только базу данных Firebase в реальном времени и аутентификацию. Для чтения и записи в вашу базу данных Firebase потребуется аутентификация. Чтобы настроить Firebase:

  1. Зарегистрируйте бесплатную учетную запись Firebase
  2. Подойдите к консоли. Создайте новый проект и дайте ему имя.
  3. В левом меню нажмите «Обзор».
  4. Нажмите «Добавить Firebase в свое веб-приложение», скопируйте свой APIKey и projectid (не URL-адрес). Идентификатор проекта находится в разных URL-адресах, таких как база данных:
  5. В левом меню нажмите «Аутентификация». Перейдите в «Метод входа» и включите «Электронная почта / Пароль»
  6. В разделе «Пользователь» создайте новую учетную запись пользователя с адресом электронной почты / паролем по вашему выбору. Вы будете использовать эти учетные данные для входа в базу данных.
  7. В левом меню перейдите в «База данных».
  8. Это ваша база данных. Сейчас он пуст. При заполнении он будет в формате JSON. URL-адрес должен быть таким же, как и тот, который вы видели ранее.

Twilio позволяет разработчикам отправлять сообщения своим клиентам. Мы будем использовать его для отправки SMS на ваш телефон, когда Pi обнаружит движение. Twilio предоставит вам номер телефона для отправки SMS. Чтобы настроить Twilio:

  1. Зарегистрируйте бесплатную учетную запись на сайте Twilio
  2. Скопируйте свой accountSID и authToken
  3. Нажмите «Ограничения пробной версии» и выберите «получить свой первый номер телефона Twilio».
  4. Скопируйте свой новый номер телефона

Шаг 2: настройте свою писю

Настройте свою писю
Настройте свою писю
Настройте свою писю
Настройте свою писю

Прежде чем мы сможем начать программировать Pis, нам нужно выполнить некоторые настройки. Убедитесь, что у вас есть пароль для входа в Pis. Сначала мы физически подключим платы SenseHat к Pis. Далее мы установим необходимые библиотеки SenseHat, Twilio и Pyrebase. База данных Firebase в реальном времени была разработана для мобильных устройств или веб-сайтов. Однако мы можем читать и записывать облачную базу данных через Rest API с помощью вспомогательной библиотеки, такой как Pyrebase.

Подключите SenseHat. Убедитесь, что SenseHats подключены к Pis. Если у вас необычный случай, вам может потребоваться удалить Pi перед подключением SenseHat.

Установка библиотек Все установки библиотек будут производиться в Терминале.

  • Загрузите Pis, если вы еще этого не сделали.
  • После загрузки на SenseHat появляется эта красочная светодиодная радуга! (см. рис.)
  • Зайдите в терминал и обновите / dist-upgrade, введите:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • После завершения обновления введите следующее, чтобы установить библиотеки SenseHat:

    sudo apt-get install sense-hat

  • Чтобы установить Pyrebase, введите:

    sudo pip установить pyrebase

  • Наконец, установите Twilio

    sudo pip установить twilio

Шаг 3: скрипт Python для Pi1

Как мы упоминали ранее, Pi1 будет Pi, который будет использоваться для обнаружения движения. Значения акселерометра SenseHat будут использоваться для определения движения. Таким образом, код для Pi1 будет связан с доступом к значениям ускорения акселерометра и записью обнаруженных движений в базу данных Firebase. Вот обзор процесса:

  • Если Pi1 обнаруживает движение, он добавит запись в дочерний элемент «alert» в базе данных Firebase.
  • Pi1 также обновит дочерний элемент notifypi2 сообщением с уведомлением о движении.
  • Pi2, затем считывает «notifypi2» и отображает уведомление на своем светодиодном матричном дисплее.

Я включил сценарий Python Pi1, которому вы можете следовать. Комментарии в сценарии объясняют, что делает код.

Дополнительные примечания и идеи для сценария Pi1

  • Для настройки Firebase и Twilio. Введите соответствующие ключи API, идентификаторы, пароли и т. Д., Которые вы скопировали из предыдущих шагов.
  • Что касается аутентификации Firebase, для дополнительной безопасности вы можете запросить ввод данных пользователем вместо жесткого кодирования этих учетных данных. Каждый раз, когда мы пишем или читаем из базы данных, нам нужно будет включать

    пользователь ['idtoken'] с th

    получить (), нажать (), установить () методы.

  • Температура процессора необходима, чтобы мы могли вмешаться в случае перегрева Pi в машине или закрытой среде.
  • Мы также берем абсолютное значение сил G, поскольку нам не нужно знать отрицательные значения. Нам нужно только знать, есть ли силы G.
  • Оператор If проверит значения акселерометра. Если силы G больше 1 в любом направлении, Pi1 будет регистрировать время движения и отображать восклицательный знак на собственном светодиодном дисплее. Он также обновит дочерний элемент «notifypi2». Когда "notifypi2" обновляется, Pi2 прочитает его и отобразит "!!!" на его светодиодном дисплее, чтобы уведомить пользователя о возможном движении / взломе. Pi1 также отправит пользователю SMS-уведомление о движении.
  • При использовании метода push () Firebase автоматически сгенерирует дочерний элемент с новой записью. Это необходимо для того, чтобы зарегистрированные данные о перемещении были уникальными. с другой стороны, метод set () перезапишет предыдущие данные.
  • Необходим 10-секундный цикл для проверки базы данных, чтобы ваш Pi не запрашивал данные из Firebase повторно. Если вы постоянно спамите Firebase, Google выйдет из системы примерно через 10 минут.
  • Firebase также будет выгружать пользователя каждые 60 минут, если токен не обновляется. У меня время обновления установлено на 1800 секунд (30 минут).

Шаг 4: скрипт Python для Pi2

Скрипт Python для Pi2
Скрипт Python для Pi2

Если вы посмотрите на фотографию, то увидите, что Pi2 отображает уведомление о возможном движении.

Скрипт Pi2 почти такой же, как Pi1, за исключением того, что скрипт не обнаруживает движения. Pi2 отображает или сбрасывает уведомления только от дочернего элемента «notifypi2». Поскольку это единственная разница, я объясню это ниже.

  • Каждые 10 секунд Pi2 будет проверять «notifypi2» для отображения. Если есть уведомление, которое нужно отобразить, Pi2 будет отображать его постоянно, чтобы пользователь мог его видеть.
  • Только вмешательство пользователя по нажатию кнопки джойстика приведет к очистке и сбросу сообщения на стороне базы данных.

Шаг 5: проверьте Pis

Image
Image
Проверить Пис
Проверить Пис

Пришло время проверить Pis.

  • Запускаем скрипты соответственно для Pis.
  • Войдите в Firebase и перейдите в раздел базы данных проектов.
  • Встряхните свой Pi1, вы должны увидеть красный восклицательный знак на светодиодном дисплее Pi1. Вы также должны получить SMS-сообщение.
  • Проверьте базу данных, должны появиться записи предупреждений. "notifypi2" также следует обновить.
  • Взгляните на Pi2. Вы также должны прокрутить "!!!" Чтобы удалить это уведомление, просто нажмите на джойстик. "notifypi2" следует сбросить. Проверьте свою Firebase, чтобы подтвердить.
  • Если вы обнаружите, что Pi1 слишком чувствителен к движению, увеличьте порог до более 1G в скрипте Pi1.

Если все пойдет хорошо, ваши скрипты не вылетят. Теперь у вас есть работающая система уведомлений. Как только Pi1 обнаружит движения или вибрации, вы получите уведомление о SMS-сообщении и визуальное светодиодное уведомление на Pi2.

Шаг 6: Создание приложения R-PiAlerts IOS

Создание приложения R-PiAlerts для IOS
Создание приложения R-PiAlerts для IOS

Пришло время создать приложение для iOS! Приложение будет довольно простым. У него будет LoginViewController и ItemsTableViewController. ItemsTableViewController будет отображать уведомления о предупреждениях от дочернего элемента "alerts". Также из приложения можно удалить записи в базе данных. Чтобы избавить вас от головной боли, если вы планируете просматривать онлайн-руководства по Firebase, убедитесь, что вы ищете учебные пособия, датированные после марта 2016 года, поскольку примерно в это время в прошлом году произошли серьезные изменения. Все, что до марта 2016 года, будет унаследовано. Меня интересуют быстрые файлы, пожалуйста, просмотрите комментарии в коде. Если вам нужен подробный учебник о том, как создать приложение Firebase, которое читает базу данных, ознакомьтесь с руководством Рэя Вундерлиха.

Обзор настройки проекта iOS

  • Создайте проект iOS с одним представлением в Xcode.
  • Скопируйте идентификатор пакета
  • Перейдите в свой проект Firebase на веб-сайте и создайте файл info.plist с идентификатором пакета.
  • Добавьте в проект файл GoogleService-info.plist. Этот info.plist работает только с конкретным проектом Firebase, который вы создали.
  • Закройте Xcode и установите Firebase через Cocoapods. Обязательно установите Auth и базу данных.
  • Перезапустите Xcode, затем настройте AppDelegate.swift для Firebase. Требуется всего 2 строчки кода.

    Импортировать Firebase ан

    FIRApp.configure (). При желании Firebase имеет функцию сохранения, которая занимает всего 1 строку кода.

    FIRDatabase.database (). PersistenceEnabled = истина

  • Подробные инструкции по установке можно найти на веб-сайте Firebase.

Как приложение взаимодействует с базой данных Firebase:

  • Приложению потребуется аутентифицировать пользователя.
  • После аутентификации приложение делает снимок базы данных Firebase и сохраняет его как объект «Item».
  • Указанный объект заполнит массив. Указанный массив будет использоваться для заполнения табличного представления.
  • Наблюдатель будет следить за изменениями в базе данных Firebase и создавать снимок.
  • Как только изменения будут обнаружены, массив будет добавлен из нового снимка.
  • Затем Tableview будет перезагружен, чтобы отобразить изменения.

Общая схема создания приложения

  • Взгляните на изображение того, как приложение размещено в построителе интерфейса Xcode.
  • Создайте ViewController в построителе интерфейса и укажите в настраиваемом классе LoginViewController.swift.
  • Добавьте текстовые поля для электронной почты и пароля. Не забудьте включить «Защищенный ввод текста» для поля пароля. Добавьте кнопку входа в систему.
  • Свяжите текстовые поля и кнопку с LoginViewController.swift. LoginViewController.swift будет обрабатывать аутентификацию.
  • Добавьте контроллер навигации в построитель интерфейса. Создайте переход от LoginViewController к контроллеру навигации. Обязательно укажите идентификатор перехода.
  • Задайте для настраиваемого класса нового представления таблицы, поставляемого с контроллером навигации, значение ItemsTableViewController.swift. У меня также есть 2 кнопки на ItemsTableViewController: выход из системы и кнопка «Добавить». Свяжите кнопки с ItemsTableViewController.swift.
  • По поводу кода LoginViewController.swift. Пользователь введет учетные данные для входа, и Firebase вернет пользователя. Если пользователь присутствует, он выполнит переход с идентификатором. (см. код в приложении)
  • Добавьте класс Item.swift (см. Прилагаемый код)
  • Что касается кода ItemsTableViewController, это довольно стандартный код tableview. Наблюдатель будет следить за изменениями в вашей базе данных, сохраненными как снимок как объект Item. Затем объект Item добавит массив, чтобы заполнить табличное представление. Кнопка «Добавить» устанавливает запись в базе данных Firebase для чтения и отображения Pi1. Для хихиканья я также добавил код (см. Прикрепленный код)

Шаг 7. Протестируйте приложение

Протестируйте приложение
Протестируйте приложение
Протестируйте приложение
Протестируйте приложение
Протестируйте приложение
Протестируйте приложение

Запустите свое приложение

  • Войдите и встряхните свой Pi1. Вы должны начать видеть появление новых уведомлений о предупреждениях.
  • Нажмите кнопку добавления и наблюдайте, как ваш Pi1 отображает ваше сообщение.
  • Проведите пальцем влево, чтобы увидеть, что записи «Оповещения» будут удалены.
  • Получаете слишком много уведомлений в быстрой последовательности? отрегулируйте порог акселерометра или увеличьте время сна в скрипте Pi1.

Шаг 8: Заключение

Заключение
Заключение
Заключение
Заключение

Потрясающие! Теперь у нас есть Pis, который может обнаруживать движение и отправлять вам уведомления о движениях. Кроме того, вы можете управлять своим журналом сообщений с предупреждениями с помощью устройства iOS! Пора развернуть Pis. Поместите Pi1 рядом с дверью и Pi2 вокруг своей рабочей зоны. В следующий раз, когда кто-то войдет, вы можете проверить ситуацию! Или еще лучше, попробуйте спрятаться у Пи в машине с аккумулятором. Несколько раз хлопните дверьми, посмотрите, что получится!

Это только начало возможностей того, что вы можете делать с Raspberry Pi и Firebase. SenseHat также включает датчики окружающей среды, гироскопы и компас. Вы можете настроить свой Pis для регистрации определенных изменений в среде. Хотите улучшить свою игру? Когда ваш Pi обнаруживает движения, используйте камеру для захвата изображений и пусть Pi отправит вам текст на фотографиях. Также попробуйте использовать алгоритм компьютерного зрения для распознавания лиц. если это лицо кого-то из ваших знакомых, вы можете получить уведомление! Повеселись!

Рекомендуемые: