Cuprins:

R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis: 8 pași (cu imagini)
R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis: 8 pași (cu imagini)

Video: R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis: 8 pași (cu imagini)

Video: R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis: 8 pași (cu imagini)
Video: R-PiAlerts 2024, Noiembrie
Anonim
Image
Image
R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis
R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis
R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis
R-PiAlerts: Construiți un sistem de securitate bazat pe WiFi cu Raspberry Pis

În timp ce lucrați la birou, deodată auziți un zgomot îndepărtat. A venit cineva acasă? Mașina mea este parcată în fața casei mele, cineva mi-a spart mașina? Nu doriți să primiți o notificare pe telefon sau la birou, astfel încât să puteți decide dacă să investigați sau nu? Ei bine, nu mai pune întrebări! R-PiAlerts este aici!

R-PiAlerts este un sistem de securitate bazat pe Raspberry Pi3 construit în jurul Cloud-ului Firebase. Dacă este detectată mișcare, sistemul va notifica utilizatorul cu privire la o posibilă spargere cu un mesaj text și un afișaj LED intermitent (alarma vizuală silențioasă de fel). Odată ce utilizatorul primește o notificare, el sau ea poate investiga. Toate mișcările detectate vor fi înregistrate în baza de date Firebase. Pe lângă vizualizarea jurnalului de mișcare pe un browser web, utilizatorul poate accesa și jurnalul de mișcare printr-o aplicație iOS. Am decis să construiesc acest lucru datorită creșterii recente a spargerilor atât la vehicule, cât și la casele din zona mea.

Aveam nevoie de ceva mic care să detecteze mișcarea și să scape de o baterie, dacă este necesar. Apoi, pot ascunde unitatea în spatele unei uși sau într-o mașină. De asemenea, unitatea trebuie să-mi poată trimite notificări sau alerte. Pi3 poate face toate aceste lucruri cu WiFi-ul încorporat și capacitatea sa de a rula o baterie USB. Alte motive pentru care am ales Pi3:

  • Pi este relativ ieftin
  • Este ușor de implementat și extins
  • Este configurabil din punct de vedere al software-ului
  • Abilitatea de a utiliza afișaje și senzori. Acest proiect va folosi SenseHat
  • Operați fără cap (fără monitor, tastatură sau mouse)

Cum functioneazã

  • În mod ideal, utilizatorul va avea nevoie de 2 Raspberry Pis conectate la baza de date Firebase, dar va funcționa și un singur Pi.
  • Folosind SenseHat, primul Pi (Pi1) va detecta mișcarea cu accelerometrul, în timp ce al doilea Pi (Pi2) va afișa notificări de mișcare.
  • Când Pi1 detectează mișcare, face 3 lucruri

    • înregistrați mișcarea în baza de date
    • creați o intrare de notificare în baza de date pentru afișarea Pi2
    • trimiteți utilizatorului un mesaj text prin care îl anunțați despre mișcare.
  • Când Pi2 detectează o notificare de afișat din baza de date, se întâmplă două lucruri

    • Afișajul LED al lui Pi2 va afișa notificarea continuu
    • Utilizatorul poate șterge notificarea apăsând pe butonul Pi2 SenseHat. Aceasta va șterge, de asemenea, intrarea de notificare din baza de date.
  • Cu aplicația iOS, utilizatorul poate

    • acces la baza de date; citiți și ștergeți jurnalul de mișcare
    • utilizatorul poate trimite Pi1 pentru a afișa un mesaj pe afișajul LED al lui Pi1.

Aplicații practice

  1. Dacă parcați mașina pe stradă în raza de acțiune wifi. Atașați un acumulator la Pi1 (a se vedea imaginea). Ascunde Pi1 în mașină. Plasați Pi2 undeva ușor vizibil, cum ar fi lângă birou (a se vedea imaginea).
  2. O altă aplicație este să plasați Pi1 în casa dvs. pe partea laterală a unei uși. Pi este atât de mic încât majoritatea oamenilor nu o vor observa mai ales dacă se află în spatele balamalei (vezi imaginea). Apoi așezați Pi2 la biroul de lucru.
  3. Câinele intră într-un loc din casă, nu trebuie? Plasați un Pi1 în acea zonă. Asigurați-vă că ați pus Pi într-o cutie robustă, astfel încât câinele dvs. să nu-l mestece.

Atâta timp cât Pis-ul dvs. se află în raza wifi, vă pot alerta sau vă poate notifica în legătură cu mișcarea. Dacă nu aveți un al doilea Pi, puteți utiliza doar Pi1 pentru a detecta mișcarea și a primi notificări SMS prin telefonul mobil.

Proiect de lege de materiale

  • Două (2) Raspberry Pi 3s care rulează Raspbian (Raspberry Pi 2 va funcționa și cu un dongle wifi)
  • Două (2) SenseHats
  • Dispozitiv Mac și iOS

Este necesar software

  • Biblioteca Pyrebase (conectarea la Firebase)
  • Biblioteca SenseHat (pentru accesarea accelerometrului și a afișajului LED)
  • Biblioteca Twilio (pentru trimiterea de SMS-uri)
  • Python 3, încorporat cu cea mai recentă Raspbian
  • Raspbian cu IDLE
  • Xcode8 și Cocoapods pe Mac
  • Disponibilitatea de a învăța și de a explora

Notă laterală Aceasta nu este singura soluție de securitate bazată pe Pi. Dacă aveți idei, sugestii sau doriți doar să refacturați codul meu, vă rugăm să lăsați un comentariu mai jos! =)

Pasul 1: Configurați conturile Firebase și Twilio

Configurați conturile Firebase și Twilio
Configurați conturile Firebase și Twilio
Configurați conturile Firebase și Twilio
Configurați conturile Firebase și Twilio

În primul rând, înainte de a începe să ne jucăm cu Pis-ul nostru, trebuie să configurăm Firebase și Twilio. Firebase este backend-ul Google ca serviciu. Firebase include astfel de caracteristici, cum ar fi baza de date, mesagerie în cloud, autentificare, stocare etc. Pentru acest proiect, va trebui să folosim baza de date și autentificarea în timp real a Firebase. Autentificarea va fi necesară pentru a citi și a scrie în baza de date Firebase. Pentru a configura Firebase:

  1. Înregistrați-vă pentru un cont Firebase gratuit
  2. Mergeți la consolă. Creați un proiect nou și dați-i un nume.
  3. Sub meniul din stânga, faceți clic pe „Prezentare generală”
  4. Faceți clic pe „Adăugați Firebase în aplicația dvs. web”, copiați APIKey și projectid (nu adresa URL). ID-ul proiectului se află în diferite adrese URL, cum ar fi baza de date:
  5. Sub meniul din stânga, faceți clic pe „Autentificare”. Accesați „Metoda de conectare” și activați „E-mail / Parolă”
  6. Sub „Utilizator”, creați un cont de utilizator nou cu adresa de e-mail / parola la alegere. Veți utiliza această acreditare pentru a vă conecta la baza de date.
  7. În meniul din stânga, accesați „Baza de date”
  8. Aceasta este baza de date. Este gol chiar acum. Când este completat, acesta va fi în format JSON. Adresa URL ar trebui să fie aceeași cu cea pe care ați văzut-o mai devreme.

Twilio permite dezvoltatorilor să trimită mesaje clienților lor. Îl vom folosi pentru a trimite SMS pe telefonul dvs. atunci când Pi detectează mișcări. Twilio vă va furniza un număr de telefon pentru a trimite SMS-uri. Pentru a configura Twilio:

  1. Înscrieți-vă pentru un cont gratuit pe site-ul Twilio
  2. Copiați contul dvs. SID și authToken
  3. Faceți clic pe „Restricții de încercare” și selectați „obțineți primul număr de telefon Twilio”
  4. Copiați noul număr de telefon

Pasul 2: Configurați Pis

Configurați-vă Pisul
Configurați-vă Pisul
Configurați-vă Pisul
Configurați-vă Pisul

Înainte de a putea începe programarea Pis, trebuie să facem unele setări. Asigurați-vă că aveți o parolă de conectare pentru Pis. Mai întâi vom conecta fizic plăcile SenseHat la Pis. Apoi, vom instala bibliotecile necesare SenseHat, Twilio și Pyrebase. Baza de date Firebase în timp real a fost concepută pentru dispozitive mobile sau site-uri web. Cu toate acestea, putem citi și scrie baza de date cloud prin API-ul Rest cu o bibliotecă de ajutor precum Pyrebase.

Conectați SenseHat Asigurați-vă că SenseHats sunt conectate la Pis. Dacă aveți un caz neobișnuit, poate fi necesar să scoateți Pi înainte de a conecta SenseHat.

Instalarea bibliotecilor Toate instalările bibliotecii se vor face în terminal

  • Porniți-vă Pisul dacă nu ați făcut-o deja.
  • La pornire, veți obține acest curcubeu LED colorat pe SenseHat! (vezi poza)
  • Mergeți la terminal și actualizați / dist-upgrade, tastați:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • După ce s-au făcut upgrade-uri, tastați următoarele pentru a instala bibliotecile SenseHat:

    sudo apt-get install sense-hat

  • Pentru a instala Pyrebase, tastați:

    sudo pip instalează pyrebase

  • În cele din urmă, instalați Twilio

    sudo pip instalează twilio

Pasul 3: Script Python pentru Pi1

După cum am menționat mai devreme, Pi1 va fi Pi care va fi folosit pentru a detecta mișcarea. Valorile accelerometrului SenseHat vor fi utilizate pentru a determina mișcarea. Astfel, codul pentru Pi1 va fi în jurul accesării valorilor forței accelerometrului g și înregistrării mișcărilor detectate în baza de date Firebase. Iată o prezentare generală a fluxului de proces:

  • Dacă Pi1 detectează mișcare, va adăuga o intrare la copilul „alerte” din Firebase DB.
  • Pi1 va actualiza, de asemenea, copilul „notificationpi2” cu un mesaj de notificare referitor la mișcare.
  • Pi2, apoi citește „notificationpi2” și afișează notificarea pe afișajul său cu matrice LED.

Am inclus scriptul Pi1 Python pe care să îl urmați. Comentariile din script explică ce face codul.

Note și informații suplimentare pentru scriptul Pi1

  • Pentru configurarea Firebase și Twilio. Completați cheile API, ID-urile, parolele etc. corespunzătoare pe care le-ați copiat din pașii anteriori.
  • În ceea ce privește autentificarea Firebase, pentru o securitate suplimentară, puteți solicita introducerea utilizatorului în loc să codificați aceste acreditări. De fiecare dată când scriem sau citim din baza de date, va trebui să includem

    utilizator ['idtoken'] cu th

    get (), push (), set () metode.

  • Este necesară temperatura procesorului, astfel încât să putem interveni în cazul în care Pi se supraîncălzește într-o mașină sau într-un mediu închis.
  • Luăm, de asemenea, valoarea absolută a forțelor G, deoarece nu este nevoie să cunoaștem valori negative. Trebuie să știm doar dacă există forțe G.
  • Dacă instrucțiunea va verifica valorile accelerometrului. Dacă forțele G sunt mai mari de 1 în orice direcție, Pi1 va înregistra timpul de mișcare și va afișa un semn de exclamare pe propriul său ecran LED. De asemenea, va actualiza copilul „notificationpi2”. Când „notificationpi2” este actualizat, Pi2 îl va citi și va afișa „!!!” pe afișajul său LED pentru a anunța utilizatorul despre posibila mișcare / spargere. Pi1 va trimite, de asemenea, utilizatorului o notificare prin SMS despre mișcare.
  • Când se folosește metoda push (), Firebase va genera automat un copil cu o nouă intrare. Acest lucru era necesar, astfel încât datele de mișcare înregistrate vor fi unice. metoda set () pe de altă parte va suprascrie datele anterioare.
  • Este necesară o buclă de 10 secunde pentru a verifica baza de date, astfel încât Pi să nu solicite în mod repetat date de la Firebase. Dacă spamați în mod constant Firebase, Google vă va deconecta în aproximativ 10 minute.
  • Firebase va scoate, de asemenea, utilizatorul la fiecare 60 de minute, dacă simbolul nu este reîmprospătat. Am actualizarea setată la 1800 de secunde (30 de minute).

Pasul 4: Script Python pentru Pi2

Script Python pentru Pi2
Script Python pentru Pi2

Dacă te uiți la fotografie, aceasta înseamnă că Pi2 afișează o notificare a unei posibile mișcări.

Scriptul lui Pi2 este aproape la fel ca Pi1, cu excepția că scriptul nu detectează mișcarea. Pi2 afișează sau resetează numai mesajele de notificare de la copilul „notificationpi2”. Deoarece aceasta este singura diferență, voi explica asta mai jos.

  • La fiecare 10 secunde, Pi2 va bifa „notificationpi2” pentru afișare. Dacă este afișat un mesaj de notificare, Pi2 îl va afișa continuu, astfel încât utilizatorul să îl vadă.
  • Numai intervenția utilizatorului prin apăsarea butonului joystick va șterge și reseta mesajul din partea bazei de date.

Pasul 5: Testați Pis

Image
Image
Testează Pis
Testează Pis

Este timpul să testați Pis.

  • Rulați scripturile pentru respectivul Pis.
  • Conectați-vă la Firebase și accesați secțiunea baza de date a proiectelor.
  • Agitați Pi1, ar trebui să vedeți un semn de exclamare roșu pe afișajul LED Pi1. De asemenea, ar trebui să primiți un mesaj SMS.
  • Verificați baza de date, ar trebui să înceapă să apară intrările de alertă. „notificationpi2” ar trebui, de asemenea, actualizat.
  • Uitați-vă la Pi2. De asemenea, ar trebui să derulați „!!!” Pentru a șterge acest mesaj de notificare, trebuie doar să apăsați pe joystick. „notificationpi2” ar trebui resetat. Verificați Firebase pentru a confirma.
  • Dacă găsiți Pi1 prea sensibil la mișcare, creșteți pragul la mai mult de 1G în scriptul Pi1.

Dacă totul merge bine, scripturile dvs. nu se vor bloca. Acum, aveți un sistem de notificare funcțional. Odată ce Pi1 detectează mișcările sau vibrațiile, veți primi o notificare de mesaj SMS și o notificare vizuală LED pe Pi2.

Pasul 6: Construirea aplicației R-PiAlerts IOS

Construirea aplicației iOS R-PiAlerts
Construirea aplicației iOS R-PiAlerts

E timpul să construiești aplicația iOS! Aplicația va fi destul de simplă. Va avea un LoginViewController și un ItemsTableViewController. ItemsTableViewController va afișa notificări de alertă de la copilul „alerte”. Se poate șterge, de asemenea, intrările din baza de date din aplicație. Pentru a vă economisi ceva dureri de cap, dacă intenționați să vă uitați la tutoriale online pentru Firebase, asigurați-vă că căutați tutoriale datate după martie 2016, deoarece au existat modificări majore anul trecut în acel moment. Orice înainte de martie 2016 va fi moștenire. Sunt interesat de fișierele rapide, revedeți comentariile din cod. Dacă doriți un tutorial detaliat despre cum să creați o aplicație Firebase care citește baza de date, consultați tutorialul lui Ray Wunderlich.

Configurați prezentarea generală a proiectului iOS

  • Creați o singură vizualizare a proiectului iOS în Xcode.
  • Copiați identificatorul pachetului
  • Accesați proiectul dvs. Firebase de pe site și creați un fișier info.plist cu identificatorul pachetului.
  • Adăugați fișierul GoogleService-info.plist la proiect. Această listă info.plist funcționează numai cu proiectul Firebase specific creat de dvs.
  • Închideți Xcode și instalați Firebase prin Cocoapods. Asigurați-vă că instalați Auth și baza de date.
  • Reporniți Xcode, apoi configurați-vă AppDelegate.swift pentru Firebase. Este nevoie doar de 2 linii de cod.

    Import Firebase un

    FIRApp.configure (). Opțional, Firebase are o caracteristică de persistență care necesită doar o linie de cod

    FIRDatabase.database (). PersistenceEnabled = adevărat

  • Pașii de instalare detaliați pot fi găsiți pe site-ul Firebase

Cum interacționează aplicația cu baza de date Firebase:

  • Aplicația va trebui să autentifice utilizatorul.
  • Odată autentificat, aplicația realizează un instantaneu al bazei de date Firebase și o stochează ca obiect „Item”.
  • Acest obiect va umple o matrice. Respectiva matrice va fi utilizată pentru a umple tabelul.
  • Un observator va urmări modificările aduse bazei de date Firebase și va crea un instantaneu.
  • Odată detectate modificările, matricea va fi adăugată din noul instantaneu.
  • Tableview va fi apoi reîncărcat pentru a afișa modificările.

Schiță generală despre cum să creați aplicația

  • Aruncați o privire asupra imaginii despre modul în care aplicația este prezentată în generatorul de interfețe Xcode.
  • Creați un ViewController în generatorul de interfețe și indicați clasa personalizată spre LoginViewController.swift.
  • Adăugați câmpuri text pentru e-mail și parolă. Nu uitați să activați „Secure Text Entry” pentru câmpul de parolă. Adăugați un buton de conectare.
  • Conectați câmpurile text și butonul la LoginViewController.swift. LoginViewController.swift se va ocupa de autentificare.
  • Adăugați un controler de navigație în generatorul de interfețe. Creați un segue de la LoginViewController la Navigation Controller. Asigurați-vă că dați segue-ului un identificator.
  • Setați clasa personalizată a noii tabele de vizualizare care a venit împreună cu controlerul de navigație pentru a indica ItemsTableViewController.swift. Am și 2 butoane pe ItemsTableViewController: Deconectare și un buton Adăugare. Conectați butoanele la ItemsTableViewController.swift.
  • În ceea ce privește codul LoginViewController.swift. Utilizatorul va introduce datele de conectare și Firebase va returna un utilizator. Dacă un utilizator este prezent, acesta va efectua un segue cu identificatorul. (vezi codul atașat)
  • Adăugați clasa Item.swift (a se vedea codul atașat)
  • În ceea ce privește codul ItemsTableViewController, este un cod tabel standard destul de standard. Va exista un observator care să monitorizeze modificările aduse bazei de date salvate ca instantaneu ca obiect Item. Apoi obiectul Item va adăuga tabloul pentru a umple tabelul. Butonul Adăugare setează o intrare în baza de date Firebase pentru ca Pi1 să poată fi citită și afișată. Pentru chicoteli, am adăugat și cod (a se vedea codul atașat)

Pasul 7: Testați aplicația

Testați aplicația
Testați aplicația
Testați aplicația
Testați aplicația
Testați aplicația
Testați aplicația

Rulați aplicația

  • Conectați-vă și scuturați Pi1. Ar trebui să începeți să vedeți noi notificări de alertă.
  • Atingeți butonul Adăugați și urmăriți-vă Pi1 afișând mesajul.
  • Glisați spre stânga, vedeți intrările „Alerte” sunt eliminate.
  • Primești prea multe notificări în succesiune rapidă? reglați pragul accelerometrului sau măriți timpul de somn în scriptul Pi1.

Pasul 8: Concluzie

Concluzie
Concluzie
Concluzie
Concluzie

Minunat! Acum avem Pis care poate detecta mișcarea și vă poate trimite notificări despre mișcări. În plus, puteți gestiona jurnalul de mesaje de alertă cu dispozitivul dvs. iOS! E timpul să implementăm Pis. Puneți Pi1 lângă ușă și Pi2 în jurul zonei de lucru. Data viitoare când vine cineva, puteți verifica situația! Sau mai bine, încercați să vă ascundeți la Pi în mașină cu un acumulator. Trageți ușile de câteva ori, vedeți ce se întâmplă!

Acesta este doar un început al posibilităților cu privire la ceea ce puteți face cu un Raspberry Pi și Firebase. SenseHat include, de asemenea, senzori de mediu, giroscopi și busolă. Puteți configura Pisul pentru a înregistra anumite modificări ale mediului. Vrei să-ți intensifici jocul? Atunci când Pi detectează mișcări, utilizați o cameră pentru a captura imagini și puneți textul Pi pe fotografii. Încercați, de asemenea, să utilizați un algoritm de viziune computerizată pentru a recunoaște fețele. dacă este fața unei persoane pe care o cunoști, poți primi o notificare! A se distra!

Recomandat: