Съдържание:

R-PiAlerts: Изградете WiFi система за сигурност с Raspberry Pis: 8 стъпки (със снимки)
R-PiAlerts: Изградете WiFi система за сигурност с Raspberry Pis: 8 стъпки (със снимки)

Видео: R-PiAlerts: Изградете WiFi система за сигурност с Raspberry Pis: 8 стъпки (със снимки)

Видео: R-PiAlerts: Изградете WiFi система за сигурност с Raspberry Pis: 8 стъпки (със снимки)
Видео: The Choice is Ours (2016) Official Full Version 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. Ако се открие движение, системата ще уведоми потребителя за потенциален взлом с текстово съобщение и мигащ LED дисплей (безшумна визуална аларма). След като потребителят получи известие, той или тя може да разследва. Всички открити движения ще бъдат записани в базата данни на Firebase. Освен преглед на дневника за движение в уеб браузър, потребителят може да получи достъп и до дневника на движението чрез приложение за iOS. Реших да построя това поради неотдавнашното нарастване на пробивите както в превозни средства, така и в домове в моя район.

Защо Pi3? Имах нужда от нещо малко, което може да открие движение и да изтощи батерията, ако е необходимо. След това мога да скрия устройството зад врата или в кола. Също така устройството трябва да може да ми изпраща известия или сигнали. Pi3 може да прави всички тези неща с вградения wifi и способността му да работи от USB батерия. Други причини защо избрах Pi3:

  • Pi е сравнително евтин
  • Лесно се разгръща и разширява
  • Конфигурира се от гледна точка на софтуера
  • Възможност за използване на дисплеи и сензори. Този проект ще използва SenseHat
  • Работете без глава (без монитор, клавиатура или мишка)

Как работи

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

    • регистрация на движение към базата данни
    • създайте запис за известие в базата данни за показване на Pi2
    • изпратете на потребителя текстово съобщение, уведомяващо потребителя за движение.
  • Когато Pi2 открие известие за показване от базата данни, се случват две неща

    • LED дисплеят на Pi2 ще показва непрекъснато известието
    • Потребителят може да изчисти известието, като натисне бутона на Pi2 SenseHat. Това също ще изчисти записа за уведомяване в базата данни.
  • С приложението iOS потребителят може

    • достъп до базата данни; прочетете и изтрийте дневника на движенията
    • потребителят може да изпрати Pi1, за да покаже съобщение на LED дисплея на Pi1.

Практически приложения

  1. Ако паркирате колата си в обсега на wifi. Прикрепете батерия към Pi1 (вижте снимката). Скрийте Pi1 в колата си. Поставете Pi2 на лесно видимо място, например до бюрото си (вижте снимката).
  2. Друго приложение е да поставите Pi1 в къщата си отстрани на вратата. Pi е толкова малък, че повечето хора няма да го забележат, особено ако е зад пантата (виж снимката). След това поставете своя Pi2 на работното си бюро.
  3. Куче да попадне на място в къщата, което не би трябвало? Поставете Pi1 в тази област. Уверете се, че сте поставили Pi в здрава кутия, така че кучето ви да не го дъвче.

Докато вашите Pis са в обхвата на wifi, те могат да ви предупреждават или да ви уведомяват за движение. Ако нямате втори Pi, можете просто да използвате Pi1, за да откриете движение и да получавате SMS известия чрез мобилния си телефон.

Сметка на материалите

  • Два (2) Raspberry Pi 3s, работещи с Raspbian (Raspberry Pi 2 също ще работи с wifi ключ)
  • Две (2) SenseHat
  • Mac и iOS устройство

Необходим софтуер

  • Библиотека Pyrebase (свързва се с Firebase)
  • Библиотека SenseHat (за достъп до акселерометър и LED дисплей)
  • Библиотека Twilio (за изпращане на SMS)
  • Python 3, вграден с най -новия Raspbian
  • 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. Копирайте SID на акаунта си и authToken
  3. Кликнете върху „Пробни ограничения“и изберете „вземете първия си телефонен номер Twilio“
  4. Копирайте новия си телефонен номер

Стъпка 2: Настройте своя Pis

Настройте своя Pis
Настройте своя Pis
Настройте своя Pis
Настройте своя Pis

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

Свържете SenseHat Уверете се, че SenseHat са свързани към вашия Pis. Ако имате необичаен случай, може да се наложи да премахнете Pi, преди да свържете SenseHat.

Инсталиране на библиотеки Всички инсталации на библиотеката ще се извършват в терминала

  • Стартирайте вашия Pis, ако още не сте го направили.
  • При стартиране получавате тази цветна LED дъга на вашия 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 Script за Pi1

Както споменахме по -рано, Pi1 ще бъде Pi, който ще се използва за откриване на движение. Стойностите на акселерометъра на SenseHat ще се използват за определяне на движението. По този начин кодът за Pi1 ще бъде около достъпа до стойностите на g сила на акселерометъра и регистрирането на откритите движения в базата данни на Firebase. Ето преглед на потока на процеса:

  • Ако Pi1 открие движение, той ще добави запис към детето „сигнали“в DB Firebase.
  • Pi1 също ще актуализира детето "notifypi2" с съобщение за уведомяване относно движението.
  • Pi2, след това чете „notifypi2“и показва известието на неговия LED матричен дисплей.

Включих скрипта Pi1 Python, който да следвате. Коментарите в скрипта обясняват какво прави кодът.

Допълнителни бележки и прозрения за скрипта Pi1

  • За настройка на Firebase и Twilio. Попълнете подходящите API ключове, идентификатори, пароли и т.н., които сте копирали от предишните стъпки.
  • Що се отнася до удостоверяването на Firebase, за допълнителна сигурност можете да поискате въвеждане от потребителя вместо твърдо кодиране на тези идентификационни данни. Всеки път, когато пишем или четем от базата данни, ще трябва да включим

    потребител ['idtoken'] с th

    get (), push (), set () методи.

  • Необходима е температура на процесора, за да можем да се намесим в случай, че Pi прегрее в кола или затворена среда.
  • Взимаме и абсолютната стойност на G силите, тъй като не е необходимо да знаем отрицателните стойности. Трябва само да знаем дали има G сили.
  • Ако операторът проверява стойностите на акселерометъра. Ако G силите са по -големи от 1 във всяка посока, Pi1 ще регистрира времето на движение и ще покаже удивителен знак на собствения си LED дисплей. Той също така ще актуализира детето "notifypi2". Когато „notifypi2“се актуализира, Pi2 ще го прочете и ще покаже „!!!“на неговия LED дисплей, за да уведомява потребителя за възможно движение/взлом. Pi1 също ще изпрати на потребителя SMS известие за движение.
  • Когато използвате метода push (), Firebase автоматично ще генерира дете с нов запис. Това е необходимо, така че регистрираните данни за движение ще бъдат уникални. методът set () от друга страна ще презапише предишни данни.
  • Необходим е 10 секунден цикъл за проверка на базата данни, така че вашият Pi да не изисква многократно данни от Firebase. Ако непрекъснато спамирате Firebase, Google ще ви излезе за около 10 минути.
  • Firebase също ще изгони потребителя на всеки 60 минути, ако маркерът не е опреснен. Имам опресняване на 1800 секунди (30 минути).

Стъпка 4: Python Script за Pi2

Python скрипт за Pi2
Python скрипт за Pi2

Ако погледнете снимката, това е, че Pi2 показва известие за възможно движение.

Скриптът на Pi2 е почти същият като Pi1, с изключение на това, че скриптът не открива движение. Pi2 показва или нулира само съобщения за известия от „notifypi2“детето. Тъй като това е единствената разлика, ще обясня това по -долу.

  • На всеки 10 секунди Pi2 ще проверява "notifypi2" за показване. Ако има съобщение за известие за показване, Pi2 ще го показва непрекъснато, така че потребителят да го види.
  • Само намесата на потребителя при натискане на бутона на джойстика ще изчисти съобщението и ще го нулира от страната на базата данни.

Стъпка 5: Тествайте Pis

Image
Image
Тествайте Pis
Тествайте Pis

Време е да тествате Pis.

  • Изпълнете скриптовете за съответния Pis.
  • Влезте във Firebase и отидете в раздела с базата данни за вашите проекти.
  • Разклатете своя Pi1, трябва да видите червен удивителен знак на Pi1 LED дисплея. Трябва също да получите SMS съобщение.
  • Проверете базата данни, трябва да започнат да се показват записи за предупреждения. "notifypi2" също трябва да се актуализира.
  • Обърнете внимание на Pi2. Трябва също да превъртите "!!!" За да изчистите това съобщение, просто натиснете джойстика. "notifypi2" трябва да бъде нулиран. Проверете Firebase, за да потвърдите.
  • Ако откриете, че Pi1 е твърде чувствителен към движение, увеличете прага до повече от 1G в скрипта Pi1.

Ако всичко върви добре, вашите скриптове няма да се сринат. Сега имате работеща система за уведомяване. След като Pi1 открие движения или вибрации, ще получите известие за SMS съобщение и визуално LED известие на Pi2.

Стъпка 6: Изграждане на приложението R-PiAlerts IOS

Изграждане на приложението R-PiAlerts IOS
Изграждане на приложението R-PiAlerts IOS

Време е да създадете приложение за iOS! Приложението ще бъде сравнително просто. Той ще има LoginViewController и ItemsTableViewController. ItemsTableViewController ще показва известия за предупреждения от детето "предупреждения". Можете също така да изтриете записи от базата данни от приложението. За да си спестите главоболие, ако планирате да разгледате онлайн уроци за Firebase, не забравяйте да потърсите уроци от март 2016 г., тъй като през миналата година имаше големи промени по това време. Всичко преди март 2016 г. ще бъде наследство. Интересувам се от бързите файлове, моля, прегледайте коментарите в кода. Ако искате подробен урок за това как да създадете приложение за Firebase, което чете базата данни, вижте урока на Ray Wunderlich.

Настройте общ преглед на вашия проект за iOS

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

    Импортирайте Firebase а

    FIRApp.configure (). По избор Firebase има функция за постоянство, която отнема само 1 ред код

    FIRDatabase.database (). PersistenceEnabled = вярно

  • Подробни стъпки за инсталиране можете да намерите на уебсайта на Firebase

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

  • Приложението ще трябва да удостовери потребителя.
  • След като се удостовери, приложението прави моментна снимка на базата данни на Firebase и я съхранява като обект „Item“.
  • Споменатият обект ще запълни масив. Споменатият масив ще се използва за попълване на табличния изглед.
  • Наблюдател ще следи за промени в базата данни на Firebase и ще създаде моментна снимка.
  • След като бъдат открити промени, масивът ще бъде добавен от новата снимка.
  • След това Tableview ще се презареди, за да покаже промените.

Общ план за това как да създадете приложението

  • Разгледайте изображението как е подредено приложението в конструктора на интерфейси на Xcode.
  • Създайте ViewController в конструктора на интерфейси и насочете персонализирания клас към LoginViewController.swift.
  • Добавете текстови полета за имейл и парола. Не забравяйте да включите „Secure Text Entry“за полето за парола. Добавете бутон за вход.
  • Свържете текстовите полета и бутона с LoginViewController.swift. LoginViewController.swift ще се справи с удостоверяването.
  • Добавете контролер за навигация в конструктора на интерфейси. Създайте сега от LoginViewController към Navigation Controller. Уверете се, че сте предоставили идентификатор на сегата.
  • Задайте персонализирания клас на новия табличен изглед, доставен с контролера за навигация, на точка ItemsTableViewController.swift. Имам и 2 бутона на ItemsTableViewController: Изход и бутон Добавяне. Свържете бутоните към ItemsTableViewController.swift.
  • Относно кода LoginViewController.swift. Потребителят ще въведе идентификационните данни за вход и Firebase ще върне потребител. Ако присъства потребител, той ще извърши преглед с идентификатора. (вижте прикачения код)
  • Добавете класа Item.swift (вижте прикачения код)
  • Що се отнася до кода на ItemsTableViewController, това е доста стандартен код за преглед на таблица. Ще има наблюдател, който да следи промените във вашата база данни, запазени като моментна снимка като обект Item. След това обектът Item ще добави масива, за да запълни табличния изглед. Бутонът Добавяне задава запис в базата данни на Firebase, който Pi1 да чете и показва. За кикот добавих и код (вижте прикачения код)

Стъпка 7: Тествайте приложението

Тествайте приложението
Тествайте приложението
Тествайте приложението
Тествайте приложението
Тествайте приложението
Тествайте приложението

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

  • Влезте и разклатете своя Pi1. Трябва да започнете да виждате нови известия за предупреждения.
  • Докоснете бутона за добавяне и гледайте как Pi1 показва вашето съобщение.
  • Плъзнете наляво, вижте как се премахват записи „Сигнали“.
  • Получаване на твърде много известия в бърза последователност? коригирайте прага на акселерометъра или увеличете времето за заспиване в скрипта Pi1.

Стъпка 8: Заключение

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

Страхотно! Сега имаме Pis, който може да открива движение и да ви изпраща известия за движения. Освен това можете да управлявате в дневника на предупредителните съобщения с вашето iOS устройство! Време е за разполагане на Pis. Поставете Pi1 до вратата си и Pi2 около вашата работна зона. Следващия път, когато някой влезе, можете да проверите ситуацията! Или още по -добре, опитайте се да се скриете в Pi в колата си с батерия. Затръшнете вратите няколко пъти, вижте какво ще се случи!

Това е само начало на възможностите за това какво можете да направите с Raspberry Pi и Firebase. SenseHat включва също сензори за околната среда, жироскопи и компас. Можете да настроите своя Pis да регистрира определени промени в околната среда. Искате ли да засилите играта си? Когато вашият Pi открива движения, използвайте камера за заснемане на изображения и накарайте Pi да ви изпрати снимките. Опитайте се също да използвате алгоритъм за компютърно зрение за разпознаване на лица. ако е лице на някой, когото познавате, можете да получавате известия! Забавлявай се!

Препоръчано: