Sadržaj:

R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis: 8 koraka (sa slikama)
R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis: 8 koraka (sa slikama)

Video: R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis: 8 koraka (sa slikama)

Video: R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis: 8 koraka (sa slikama)
Video: Web Development - Computer Science for Business Leaders 2016 2024, Novembar
Anonim
Image
Image
R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis
R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis
R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis
R-PiAlerts: Izgradite sigurnosni sistem zasnovan na WiFi-u sa Raspberry Pis

Dok radite za svojim stolom, odjednom čujete udaljenu buku. Da li je neko upravo došao kući? Moj auto je parkiran ispred moje kuće, je li neko provalio u moj auto? Zar ne želite da imate obavijest na telefonu ili za radnim stolom kako biste mogli odlučiti hoćete li istražiti ili ne? Pa ne postavljaj više pitanja! R-PiAlerts je ovdje!

Šta su R-PiAlerts? R-PiAlerts je sigurnosni sistem zasnovan na Raspberry Pi3 izgrađen oko Firebase Cloud-a. Ako se otkrije kretanje, sistem će obavijestiti korisnika o potencijalnom upadu tekstualnom porukom i trepćućim LED ekranom (svojevrsni tihi vizuelni alarm). Kada korisnik primi obavijest, može istražiti. Svi otkriveni pokreti bit će evidentirani u Firebase bazi podataka. Osim pregledavanja dnevnika kretanja na web pregledniku, korisnik može pristupiti zapisniku kretanja i putem iOS aplikacije. Odlučio sam ovo izgraditi zbog nedavnog porasta provala u vozila i domove u mom području.

Zašto Pi3? Trebalo mi je nešto malo što može otkriti kretanje i isprazniti bateriju ako je potrebno. Zatim mogu sakriti jedinicu iza vrata ili u automobilu. Takođe, jedinica mora biti u mogućnosti da mi šalje obavještenja ili upozorenja. Pi3 može raditi sve ove stvari s ugrađenim WiFi -jem i sposobnošću da se napaja iz USB baterije. Drugi razlozi zašto sam odabrao Pi3:

  • Pi je relativno jeftin
  • Lako se postavlja i povećava
  • Može se konfigurirati sa stanovišta softvera
  • Mogućnost upotrebe ekrana i senzora. Ovaj projekt će koristiti SenseHat
  • Rad bez glave (bez monitora, tastature ili miša)

Kako to radi

  • U idealnom slučaju korisniku će trebati 2 Raspberry Pis povezana s Firebase bazom podataka, ali će raditi i jedan Pi.
  • Koristeći SenseHat, prvi Pi (Pi1) će otkriti kretanje akcelerometrom, dok će drugi Pi (Pi2) prikazati obavijesti o kretanju.
  • Kada Pi1 detektira kretanje, čini 3 stvari

    • dnevnik kretanja u bazu podataka
    • stvorite unos obavijesti u bazi podataka za prikaz Pi2
    • pošaljite korisniku tekstualnu poruku koja obavještava korisnika o kretanju.
  • Kada Pi2 otkrije obavijest za prikaz iz baze podataka, događaju se dvije stvari

    • Pi2 LED zaslon će neprestano prikazivati obavijest
    • Korisnik može izbrisati obavijest pritiskom na dugme Pi2 SenseHat. Ovo će također izbrisati unos obavijesti u bazi podataka.
  • Pomoću aplikacije iOS korisnik može

    • pristupiti bazi podataka; čita i briše dnevnik kretanja
    • korisnik može poslati Pi1 da prikaže poruku na Pi1 LED ekranu.

Praktične aplikacije

  1. Ako parkirate automobil na ulici u dometu WiFi -ja. Priključite bateriju na Pi1 (vidi sliku). Sakrij Pi1 u svom automobilu. Postavite Pi2 na mjesto koje se lako može vidjeti, primjerice pored vašeg stola (vidi sliku).
  2. Druga aplikacija je postavljanje Pi1 u vašu kuću sa strane vrata. Pi je toliko sićušan da ga većina ljudi neće primijetiti, posebno ako se nalazi iza šarki (vidi sliku). Zatim postavite svoj Pi2 na radni sto.
  3. Pas ulazi u mjesto u kući za koje se ne pretpostavlja? Postavite Pi1 u to područje. Stavite Pi u čvrstu kutiju kako ga vaš pas ne bi žvakao.

Sve dok su vaši Pis u dometu WiFi -ja, mogu vas upozoriti ili obavijestiti o kretanju. Ako nemate drugi Pi, možete samo upotrijebiti Pi1 za otkrivanje kretanja i primanje SMS obavijesti putem mobilnog telefona.

Bill of Materials

  • Dva (2) Raspberry Pi 3 -a koji pokreću Raspbian (Raspberry Pi 2 će raditi i sa wifi ključem)
  • Dva (2) SenseHat -a
  • Mac i iOS uređaj

Potreban softver

  • Biblioteka Pyrebase (povezivanje sa Firebaseom)
  • SenseHat biblioteka (za pristup akcelerometru i LED ekranu)
  • Twilio biblioteka (za slanje SMS -a)
  • Python 3, ugrađen sa najnovijim Raspbian -om
  • Raspbian sa IDLE
  • Xcode8 i Cocoapods na vašem Macu
  • Spremnost na učenje i istraživanje

Sporedna napomenaOvo nije jedino sigurnosno rješenje zasnovano na Pi. Ako imate bilo kakvih ideja, prijedloga ili samo želite preraditi moj kôd, ostavite komentar ispod! =)

Korak 1: Postavite Firebase i Twilio račune

Postavite Firebase i Twilio račune
Postavite Firebase i Twilio račune
Postavite Firebase i Twilio račune
Postavite Firebase i Twilio račune

Prije svega, prije nego što počnemo petljati s našim Pisom, moramo postaviti Firebase i Twilio. Firebase je Googleova pozadina kao usluga. Firebase uključuje takve značajke kao što su baza podataka, slanje poruka u oblaku, provjera autentičnosti, pohrana itd. Za ovaj projekt trebat će nam samo koristiti Firebaseovu bazu podataka u stvarnom vremenu i provjeru autentičnosti. Za čitanje i pisanje u vašu Firebase bazu podataka bit će potrebna autentifikacija. Za postavljanje Firebasea:

  1. Registrirajte se za besplatni Firebase račun
  2. Idite na konzolu. Kreirajte novi projekat i dajte mu ime.
  3. U lijevom izborniku kliknite na "Pregled"
  4. Kliknite "Dodaj Firebase u svoju web aplikaciju", kopirajte svoj APIKey i projectid (ne url). ID projekta nalazi se u različitim URL -ovima, poput baze podataka:
  5. U lijevom izborniku kliknite na "Autentifikacija". Idite na "Način prijave" i omogućite "E -pošta/lozinka"
  6. Pod "Korisnik" stvorite novi korisnički račun s e -poštom/lozinkom po vašem izboru. Ove vjerodajnice ćete koristiti za prijavu u bazu podataka.
  7. U lijevom izborniku idite na "Baza podataka"
  8. Ovo je vaša baza podataka. Trenutno je prazan. Kada se ispuni, bit će u JSON formatu. URL bi trebao biti isti kao onaj koji ste vidjeli ranije.

Twilio omogućava programerima da šalju poruke svojim korisnicima. Koristit ćemo ga za slanje SMS -a na vaš telefon kada Pi detektira kretanje. Twilio će vam dati telefonski broj za slanje SMS -a. Da biste postavili Twilio:

  1. Prijavite se za besplatni račun na web stranici Twilio
  2. Kopirajte vaš accountSID i authToken
  3. Kliknite na "Probna ograničenja" i odaberite "preuzmite svoj prvi Twilio telefonski broj"
  4. Kopirajte svoj novi telefonski broj

Korak 2: Postavite svoju Pis

Namjesti svoju pišku
Namjesti svoju pišku
Namjesti svoju pišku
Namjesti svoju pišku

Prije nego što počnemo programirati Pis, moramo izvršiti određena podešavanja. Provjerite imate li lozinku za prijavu za svoj Pis. Prvo ćemo fizički spojiti SenseHat ploče na Pis. Zatim ćemo instalirati potrebne biblioteke SenseHat, Twilio i Pyrebase. Firebase baza podataka u stvarnom vremenu dizajnirana je za mobilne uređaje ili web stranice. Međutim, bazu podataka u oblaku možemo čitati i pisati putem Rest API -ja s pomoćnom bibliotekom poput Pyrebase.

Povežite SenseHatUvjerite se da su SenseHat spojeni na vaš Pis. Ako imate neobičan slučaj, možda ćete morati ukloniti Pi prije povezivanja SenseHat -a.

Instaliranje biblioteka Sve instalacije biblioteke bit će izvedene u terminalu

  • Pokrenite svoj Pis ako već niste.
  • Nakon pokretanja, dobit ćete ovu šarenu LED dugu na svom SenseHat -u! (vidi sliku)
  • Idite na terminal i ažurirajte/dist-upgrade, upišite:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Nakon nadogradnje upišite sljedeće za instaliranje SenseHat biblioteka:

    sudo apt-get install sense-hat

  • Da biste instalirali Pyrebase, upišite:

    sudo pip install pyrebase

  • Na kraju, instalirajte Twilio

    sudo pip install twilio

Korak 3: Python skripta za Pi1

Kao što smo ranije spomenuli, Pi1 će biti Pi koji će se koristiti za detekciju kretanja. Vrijednosti akcelerometra SenseHat -a će se koristiti za određivanje kretanja. Dakle, kôd za Pi1 bit će oko pristupa vrijednostima g sile akcelerometra i bilježenja otkrivenih pokreta u Firebase bazu podataka. Evo pregleda toka procesa:

  • Ako Pi1 detektira kretanje, dodat će unos djetetu "upozorenja" u Firebase DB.
  • Pi1 će također ažurirati dijete "notifypi2" s porukom obavijesti o kretanju.
  • Pi2, zatim čita "notifypi2" i prikazuje obavijest na svom LED matričnom ekranu.

Uključio sam Pi1 Python skriptu koju možete slijediti. Komentari u skripti objašnjavaju šta kod radi.

Dodatne napomene i uvidi u Pi1 skriptu

  • Za postavljanje Firebase i Twilio. Unesite odgovarajuće API ključeve, ID -ove, lozinke itd. Koje ste kopirali iz prethodnih koraka.
  • Što se tiče Firebase provjere autentičnosti, radi dodatne sigurnosti, možete zatražiti unos korisnika umjesto hard kodiranja ovih vjerodajnica. Svaki put kad budemo pisali ili čitali iz baze podataka, morat ćemo ih uključiti

    korisnik ['idtoken'] sa th

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

  • Temperatura procesora je potrebna kako bismo mogli intervenirati u slučaju da se Pi pregrije u automobilu ili zatvorenom okruženju.
  • Uzimamo i apsolutnu vrijednost G sila jer ne moramo znati negativne vrijednosti. Trebamo samo znati postoje li G sile.
  • Ako naredba provjeri vrijednosti akcelerometra. Ako su sile G veće od 1 u bilo kojem smjeru, Pi1 će zabilježiti vrijeme kretanja i prikazati uskličnik na svom LED zaslonu. Također će ažurirati podređeno "notifypi2". Kada se "notifypi2" ažurira, Pi2 će ga pročitati i prikazati "!!!" na svom LED displeju da obavijesti korisnika o mogućem kretanju/provaljivanju. Pi1 će korisniku poslati i SMS obavijest o kretanju.
  • Kada koristite metodu push (), Firebase će automatski generirati dijete s novim unosom. To je potrebno kako bi zabilježeni podaci o kretanju bili jedinstveni. metoda set () će s druge strane prebrisati prethodne podatke.
  • Potrebna je petlja od 10 sekundi za provjeru baze podataka kako vaš Pi ne bi stalno tražio podatke od Firebase. Ako stalno šaljete neželjenu poštu na Firebase, Google će vas odjaviti za otprilike 10 minuta.
  • Firebase će također izbaciti korisnika svakih 60 minuta ako se token ne osvježi. Imam osvježavanje postavljeno na 1800 sekundi (30 minuta).

Korak 4: Python skripta za Pi2

Python skripta za Pi2
Python skripta za Pi2

Ako pogledate fotografiju, to je Pi2 koji prikazuje obavijest o mogućem kretanju.

Pi2 skripta je skoro potpuno ista kao Pi1, osim što skripta ne detektuje kretanje. Pi2 prikazuje ili resetira samo poruke obavijesti od "notifypi2" djeteta. Budući da je to jedina razlika, to ću objasniti u nastavku.

  • Svakih 10 sekundi Pi2 će provjeravati "notifypi2" za prikaz. Ako se prikaže poruka obavijesti za prikaz, Pi2 će je neprestano prikazivati tako da je korisnik vidi.
  • Samo korisnička intervencija pritiskom na tipku joystick će poruku izbrisati i resetirati na strani baze podataka.

Korak 5: Testirajte Pis

Image
Image
Testirajte Pis
Testirajte Pis

Vreme je za testiranje Pis.

  • Pokrenite skripte za Pis.
  • Prijavite se na Firebase i idite na odjeljak baze podataka vaših projekata.
  • Protresite svoj Pi1, na Pi1 LED ekranu trebali biste vidjeti crveni uskličnik. Trebali biste dobiti i SMS poruku.
  • Provjerite bazu podataka, unosi upozorenja bi se trebali početi pojavljivati. "notifypi2" takođe treba ažurirati.
  • Pogledajte Pi2. Također biste trebali listati "!!!" Da biste obrisali ovu poruku obavijesti, samo pritisnite navigacijsku tipku. "notifypi2" treba resetirati. Provjerite svoj Firebase da biste potvrdili.
  • Ako smatrate da je Pi1 previše osjetljiv na kretanje, povećajte prag na više od 1G u Pi1 skripti.

Ako sve prođe dobro, vaše se skripte neće srušiti. Sada imate funkcionalan sistem obavještavanja. Kada Pi1 otkrije kretanja ili vibracije, dobit ćete obavijest SMS porukom i vizualnu LED obavijest na Pi2.

Korak 6: Izgradnja ROS-ove aplikacije za iOS

Izgradnja ROS-ove aplikacije za iOS
Izgradnja ROS-ove aplikacije za iOS

Vrijeme je za izradu iOS aplikacije! Aplikacija će biti prilično jednostavna. Imat će LoginViewController i ItemsTableViewController. ItemsTableViewController će prikazati obavještenja o upozorenjima od podređenog "upozorenja". Također se mogu izbrisati unosi u bazu podataka iz aplikacije. Da biste si uštedjeli glavobolju, ako planirate pogledati internetske vodiče za Firebase, svakako potražite vodiče datirane nakon ožujka 2016. jer je u to vrijeme došlo do velikih promjena. Sve prije marta 2016. bit će naslijeđeno. Zanimaju me brze datoteke. Pregledajte komentare u kodu. Ako želite detaljan vodič o tome kako izgraditi Firebase aplikaciju koja čita bazu podataka, pogledajte vodič Ray Wunderlicha.

Postavite pregled svog iOS projekta

  • Kreirajte iOS projekt s jednim prikazom u Xcode -u.
  • Kopirajte identifikator paketa
  • Idite na svoj Firebase projekt na web stranici i kreirajte datoteku info.plist s identifikatorom snopa.
  • Dodajte datoteku GoogleService-info.plist u svoj projekt. Ova info.plist radi samo s određenim Firebase projektom koji ste kreirali.
  • Zatvorite Xcode i instalirajte Firebase putem Cocoapodsa. Obavezno instalirajte Auth i Database.
  • Ponovo pokrenite Xcode, a zatim konfigurirajte svoj AppDelegate.swift za Firebase. Potrebne su samo 2 linije koda.

    Uvezite Firebase an

    FIRApp.configure (). Opcionalno, Firebase ima funkciju postojanosti koja zauzima samo 1 redak koda

    FIRDatabase.database (). PersistenceEnabled = true

  • Detaljne korake instalacije možete pronaći na Firebase web stranici

Kako aplikacija komunicira s Firebase bazom podataka:

  • Aplikacija će morati potvrditi autentičnost korisnika.
  • Nakon provjere autentičnosti, aplikacija snima snimku Firebase baze podataka i pohranjuje je kao objekt "Stavka".
  • Navedeni objekt će ispuniti niz. Navedeni niz će se koristiti za popunjavanje prikaza tablice.
  • Posmatrač će pratiti promjene u Firebase bazi podataka i stvoriti snimak.
  • Kada se promjene otkriju, niz će se dodati iz nove snimke.
  • Tableview će se tada ponovo učitati kako bi se prikazale promjene.

Opći pregled načina izgradnje aplikacije

  • Pogledajte sliku o tome kako je aplikacija postavljena u Xcode -ovom alatu za izradu sučelja.
  • Kreirajte ViewController u graditelju sučelja i usmjerite prilagođenu klasu na LoginViewController.swift.
  • Dodajte tekstualna polja za e -poštu i lozinku. Ne zaboravite uključiti "Sigurni unos teksta" za polje lozinke. Dodajte dugme za prijavu.
  • Povežite tekstualna polja i dugme sa LoginViewController.swift. LoginViewController.swift će rukovati autentifikacijom.
  • Dodajte kontroler navigacije u graditelj sučelja. Kreirajte segu od LoginViewController do Navigation Controller. Pobrinite se da segu date identifikator.
  • Prilagođenu klasu novog prikaza tablice koju ste dobili s navigacijskim kontrolerom postavite na točku ItemsTableViewController.swift. Takođe imam 2 dugmeta na ItemsTableViewController: Odjava i dugme Dodaj. Povežite dugmad sa ItemsTableViewController.swift.
  • Što se tiče koda LoginViewController.swift. Korisnik će unijeti vjerodajnice za prijavu, a Firebase će vratiti korisnika. Ako je korisnik prisutan, izvršit će pregled sa identifikatorom. (pogledajte kôd u prilogu)
  • Dodajte klasu Item.swift (pogledajte priloženi kôd)
  • Što se tiče koda ItemsTableViewController, to je prilično standardni kod za prikaz stola. Postojat će promatrač koji će pratiti promjene u vašoj bazi podataka spremljene kao snimak kao objekt Item. Tada će objekt Item dodati niz kako bi ispunio prikaz tablice. Dugme Dodaj postavlja unos u Firebase bazi podataka za čitanje i prikaz Pi1. Za hihotanje sam dodao i kod (vidi priloženi kod)

Korak 7: Testirajte aplikaciju

Testirajte aplikaciju
Testirajte aplikaciju
Testirajte aplikaciju
Testirajte aplikaciju
Testirajte aplikaciju
Testirajte aplikaciju

Pokrenite svoju aplikaciju

  • Prijavite se i protresite svoj Pi1. Trebali biste vidjeti da se pojavljuju nova obavještenja o upozorenjima.
  • Dodirnite dugme za dodavanje i gledajte kako vaš Pi1 prikazuje vašu poruku.
  • Prevucite lijevo, pogledajte stavke "Upozorenja" kako se uklanjaju.
  • Brzo primate previše obavijesti? podesite prag akcelerometra ili povećajte vrijeme mirovanja u Pi1 skripti.

Korak 8: Zaključak

Zaključak
Zaključak
Zaključak
Zaključak

Awesome! Sada imamo Pis koji može detektirati kretanje i slati vam obavijesti o pokretima. Povrh toga, možete upravljati zapisnikom poruka upozorenja sa svojim iOS uređajem! Vreme je za raspoređivanje Pis. Stavite Pi1 pored vrata i Pi2 oko radnog područja. Sljedeći put kada neko dođe, možete provjeriti situaciju! Ili još bolje, pokušajte se sakriti u Pi u svom automobilu s baterijom. Zalupi vratima nekoliko puta, vidi što će se dogoditi!

Ovo je samo početak mogućnosti o tome što možete učiniti s Raspberry Pi i Firebaseom. SenseHat takođe uključuje ekološke senzore, žiroskope i kompas. Možete postaviti svoj Pis da bilježi određene promjene u okruženju. Želite pojačati svoju igru? Kad vaš Pi detektira pokrete, upotrijebite kameru za snimanje slika i neka Pi tekst pošalje fotografije. Također pokušajte koristiti algoritam računarskog vida za prepoznavanje lica. ako je to lice nekoga koga poznajete, možete biti obaviješteni! Zabavi se!

Preporučuje se: