Satura rādītājs:

R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zizli: 8 soļi (ar attēliem)
R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zizli: 8 soļi (ar attēliem)

Video: R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zizli: 8 soļi (ar attēliem)

Video: R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zizli: 8 soļi (ar attēliem)
Video: Веб-разработка – информатика для руководителей бизнеса 2016 2024, Novembris
Anonim
Image
Image
R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zivīm
R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zivīm
R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zivīm
R-PiAlerts: izveidojiet uz WiFi balstītu drošības sistēmu ar aveņu zivīm

Strādājot pie sava galda, pēkšņi jūs dzirdat tālu troksni. Vai kāds tikko atnāca mājās? Mana automašīna ir novietota manas mājas priekšā, vai kāds ielauzās manā automašīnā? Vai nevēlaties saņemt paziņojumu savā tālrunī vai pie sava galda, lai jūs varētu izlemt, vai veikt izmeklēšanu? Nu jautājumu vairs nav! R-PiAlerts ir klāt!

Kas ir R-PiAlerts? R-PiAlerts ir uz Raspberry Pi3 balstīta drošības sistēma, kas veidota ap Firebase mākoni. Ja tiek konstatēta kustība, sistēma ar īsziņu un mirgojošu LED displeju (sava veida kluss vizuāls trauksmes signāls) paziņos lietotājam par iespējamu ielaušanos. Kad lietotājs ir saņēmis paziņojumu, viņš var izmeklēt. Visa atklātā kustība tiks reģistrēta Firebase datu bāzē. Papildus kustību žurnāla skatīšanai tīmekļa pārlūkprogrammā lietotājs var piekļūt kustību žurnālam, izmantojot arī iOS lietotni. Es nolēmu to izveidot, jo nesen palielinājās ielaušanās gan transportlīdzekļos, gan mājās manā apkārtnē.

Kāpēc Pi3? Man vajadzēja kaut ko mazu, kas varētu noteikt kustību un vajadzības gadījumā izlādēt akumulatoru. Tad es varu slēpt ierīci aiz durvīm vai automašīnā. Arī vienībai jāspēj man nosūtīt paziņojumus vai brīdinājumus. Pi3 var darīt visas šīs lietas, izmantojot iebūvēto wifi un spēju darboties ar USB akumulatoru. Citi iemesli, kāpēc es izvēlējos Pi3:

  • Pi ir salīdzinoši lēts
  • To ir viegli izvietot un palielināt
  • To var konfigurēt no programmatūras viedokļa
  • Spēja izmantot displejus un sensorus. Šis projekts izmantos SenseHat
  • Darbojas bez galvas (bez monitora, tastatūras vai peles)

Kā tas darbojas

  • Ideālā gadījumā lietotājam būs nepieciešami 2 Raspberry Pis savienojumi ar Firebase datu bāzi, taču darbosies arī viens Pi.
  • Izmantojot SenseHat, pirmais Pi (Pi1) noteiks kustību ar akselerometru, bet otrais Pi (Pi2) parādīs paziņojumus par kustību.
  • Kad Pi1 nosaka kustību, tas veic 3 lietas

    • reģistrēt kustību datu bāzē
    • izveidojiet paziņojuma ierakstu datu bāzē, lai to parādītu Pi2
    • nosūtīt lietotājam īsziņu ar paziņojumu par pārvietošanos.
  • Kad Pi2 atklāj paziņojumu, ko parādīt no datu bāzes, notiek divas lietas

    • Pi2 LED displejs nepārtraukti rādīs paziņojumu
    • Lietotājs var notīrīt paziņojumu, nospiežot pogu Pi2 SenseHat. Tas arī notīrīs paziņojuma ierakstu datu bāzē.
  • Izmantojot iOS lietotni, lietotājs var

    • piekļūt datu bāzei; lasīt un dzēst kustību žurnālu
    • lietotājs var nosūtīt Pi1, lai parādītu ziņojumu Pi1 LED displejā.

Praktiskie pielietojumi

  1. Ja ielu novietojat automašīnu wifi diapazonā. Pievienojiet akumulatoru pie Pi1 (skatiet attēlu). Paslēpiet Pi1 savā automašīnā. Novietojiet Pi2 viegli redzamā vietā, piemēram, blakus rakstāmgaldam (skatīt attēlu).
  2. Vēl viens pielietojums ir novietot Pi1 savā mājā pie durvīm. Pi ir tik niecīgs, ka lielākā daļa cilvēku to nepamanīs, it īpaši, ja tas atrodas aiz eņģes puses (skat. Attēlu). Pēc tam novietojiet savu Pi2 pie darba galda.
  3. Suns nokļūst kādā vietā mājā, kā tas nav paredzēts? Ievietojiet Pi1 šajā apgabalā. Noteikti ievietojiet Pi izturīgā kastē, lai jūsu suns to nesakošļātu.

Kamēr jūsu Pis atrodas Wi -Fi diapazonā, viņi var brīdināt vai paziņot par kustību. Ja jums nav otra Pi, varat vienkārši izmantot Pi1, lai noteiktu kustību un saņemtu SMS paziņojumus, izmantojot mobilo tālruni.

Materiālu rēķins

  • Divi (2) Raspberry Pi 3, kas darbojas ar Raspbian (Raspberry Pi 2 darbosies arī ar wifi dongle)
  • Divi (2) SenseHats
  • Mac un iOS ierīce

Nepieciešama programmatūra

  • Pyrebase bibliotēka (tiek izveidots savienojums ar Firebase)
  • SenseHat bibliotēka (lai piekļūtu akselerometram un LED displejam)
  • Twilio bibliotēka (īsziņu sūtīšanai)
  • Python 3, iebūvēts ar jaunāko Raspbian
  • Raspietis ar IDLE
  • Xcode8 un Cocoapods jūsu Mac datorā
  • Vēlme mācīties un izpētīt

Sānu piezīme Šis nav vienīgais uz Pi balstītais drošības risinājums. Ja jums ir kādas idejas, ieteikumi vai vienkārši vēlaties pārveidot manu kodu, lūdzu, atstājiet komentāru zemāk! =)

1. darbība: iestatiet Firebase un Twilio kontus

Iestatiet Firebase un Twilio kontus
Iestatiet Firebase un Twilio kontus
Iestatiet Firebase un Twilio kontus
Iestatiet Firebase un Twilio kontus

Pirmkārt, pirms sākam izklaidēties ar mūsu Pis, mums ir jāiestata Firebase un Twilio. Firebase ir Google aizmugure kā pakalpojums. Firebase ietver tādas funkcijas kā datu bāze, mākonis ziņojumapmaiņa, autentifikācija, krātuve utt. Šim projektam mums būs jāizmanto tikai Firebase reāllaika datu bāze un autentifikācija. Lai lasītu un rakstītu Firebase datu bāzē, būs nepieciešama autentifikācija. Lai iestatītu Firebase:

  1. Reģistrējieties bezmaksas Firebase kontam
  2. Dodieties uz konsoli. Izveidojiet jaunu projektu un piešķiriet tam nosaukumu.
  3. Kreisās puses izvēlnē noklikšķiniet uz "Pārskats"
  4. Noklikšķiniet uz "Pievienot Firebase savai tīmekļa lietotnei", nokopējiet APIKey un projectid (nevis URL). Projekta ID atrodas dažādos URL, piemēram, datu bāzē:
  5. Kreisajā izvēlnē noklikšķiniet uz "Autentifikācija". Dodieties uz "Pierakstīšanās metode" un iespējojiet "E -pasts/parole"
  6. Sadaļā “Lietotājs” izveidojiet jaunu lietotāja kontu ar izvēlētu e -pastu/paroli. Jūs izmantosit šos akreditācijas datus, lai pieteiktos datu bāzē.
  7. Kreisās puses izvēlnē dodieties uz "Datu bāze"
  8. Šī ir jūsu datu bāze. Pašlaik tas ir tukšs. Aizpildot, tas būs JSON formātā. Vietrādim URL jābūt tādam pašam kā iepriekš redzētajam.

Twilio ļauj izstrādātājiem sūtīt ziņojumus saviem klientiem. Mēs to izmantosim, lai nosūtītu īsziņas uz jūsu tālruni, kad Pi konstatēs kustību. Twilio sniegs jums tālruņa numuru SMS nosūtīšanai. Lai iestatītu Twilio:

  1. Reģistrējieties bezmaksas kontam Twilio vietnē
  2. Kopējiet savu kontuSID un authToken
  3. Noklikšķiniet uz "Izmēģinājuma ierobežojumi" un izvēlieties "iegūt savu pirmo Twilio tālruņa numuru"
  4. Kopējiet savu jauno tālruņa numuru

2. darbība: iestatiet Pis

Iestatiet savu Pis
Iestatiet savu Pis
Iestatiet savu Pis
Iestatiet savu Pis

Pirms mēs varam sākt programmēt Pis, mums ir jāveic daži iestatījumi. Pārliecinieties, vai jūsu Pis ir reģistrējies ar paroli. Vispirms fiziski savienosim SenseHat dēļus ar Pis. Tālāk mēs instalēsim nepieciešamās SenseHat, Twilio un Pyrebase bibliotēkas. Firebase reālā laika datu bāze tika izstrādāta mobilajām ierīcēm vai vietnēm. Tomēr mēs varam lasīt un rakstīt mākoņu datu bāzi, izmantojot Rest API ar palīgu bibliotēku, piemēram, Pyrebase.

Pārliecinieties, vai SenseHats ir savienots ar jūsu Pis. Ja jums ir neparasts gadījums, pirms SenseHat pievienošanas jums, iespējams, būs jānoņem Pi.

Bibliotēku instalēšana Visas bibliotēkas instalācijas tiks veiktas terminālī

  • Palaidiet savu Pis, ja vēl neesat to izdarījis.
  • Pēc palaišanas jūs savā SenseHat redzat šo krāsaino LED varavīksni! (skat. attēlu)
  • Dodieties uz termināli un atjauniniet/dist-upgrade, ierakstiet:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Pēc jaunināšanas pabeigšanas ierakstiet tālāk norādīto, lai instalētu SenseHat bibliotēkas.

    sudo apt-get install sense-hat

  • Lai instalētu Pyrebase, ierakstiet:

    sudo pip instalēt pyrebase

  • Visbeidzot, instalējiet Twilio

    sudo pip instalēt twilio

3. darbība: Python skripts Pi1

Kā jau minējām iepriekš, Pi1 būs Pi, kas tiks izmantots kustības noteikšanai. Kustības noteikšanai tiks izmantotas SenseHat akselerometra vērtības. Tādējādi Pi1 kods būs pieejams, lai piekļūtu akselerometra g spēka vērtībām un reģistrētu konstatētās kustības Firebase datu bāzē. Šeit ir pārskats par procesa gaitu:

  • Ja Pi1 atklāj kustību, tas pievienos ierakstu "brīdinājumu" bērnam Firebase DB.
  • Pi1 arī atjauninās "paziņotājs2" bērnu ar paziņojuma ziņojumu par kustību.
  • Pi2, pēc tam nolasa "paziņot2" un parāda paziņojumu savā LED matricas displejā.

Esmu pievienojis Pi1 Python skriptu, lai jūs varētu sekot. Skripta komentāri paskaidro, ko kods dara.

Papildu piezīmes un ieskats par Pi1 skriptu

  • Firebase un Twilio iestatīšanai. Aizpildiet atbilstošās API atslēgas, ID, paroles utt., Ko esat kopējis no iepriekšējām darbībām.
  • Runājot par Firebase autentifikāciju, papildu drošības labad varat pieprasīt lietotāja ievadi, nevis šo akreditācijas datu kodēšanu. Katru reizi, kad rakstām vai lasām no datu bāzes, mums būs jāiekļauj

    lietotājs ['idtoken'] ar th

    get (), push (), set () metodes.

  • Ir nepieciešama CPU temperatūra, lai mēs varētu iejaukties gadījumā, ja Pi pārkarst automašīnā vai slēgtā vidē.
  • Mēs ņemam vērā arī G spēku absolūto vērtību, jo mums nav jāzina negatīvās vērtības. Mums tikai jāzina, vai pastāv G spēki.
  • Ja paziņojums pārbaudīs akselerometra vērtības. Ja G spēki ir lielāki par 1 jebkurā virzienā, Pi1 reģistrēs kustības laiku un uz sava LED displeja parādīs izsaukuma zīmi. Tas arī atjauninās “paziņpi2” bērnu. Atjauninot "paziņpi2", Pi2 to nolasīs un parādīs "!!!" uz LED displeja, lai informētu lietotāju par iespējamu kustību/ielaušanos. Pi1 arī nosūtīs lietotājam SMS paziņojumu par pārvietošanos.
  • Izmantojot push () metodi, Firebase automātiski ģenerēs bērnu ar jaunu ierakstu. Tas bija nepieciešams, lai reģistrētie kustības dati būtu unikāli. no otras puses, metode set () pārrakstīs iepriekšējos datus.
  • Lai pārbaudītu datubāzi, ir nepieciešama 10 sekunžu cilpa, lai jūsu Pi atkārtoti nepieprasītu datus no Firebase. Ja nepārtraukti sūtāt surogātpastu ar Firebase, Google jūs izrakstīs apmēram pēc 10 minūtēm.
  • Firebase arī izraidīs lietotāju ik pēc 60 minūtēm, ja marķieris netiks atsvaidzināts. Man ir atsvaidzināšana iestatīta uz 1800 sekundēm (30 minūtes).

4. solis: Python skripts Pi2

Python skripts Pi2
Python skripts Pi2

Ja paskatās uz fotoattēlu, tas nozīmē, ka Pi2 parāda paziņojumu par iespējamu kustību.

Pi2 skripts ir gandrīz tāds pats kā Pi1, izņemot to, ka skripts neatklāj kustību. Pi2 parāda vai atiestata tikai paziņojuma ziņojumus no "paziņotājs2" bērna. Tā kā tā ir vienīgā atšķirība, es to paskaidrošu tālāk.

  • Ik pēc 10 sekundēm Pi2 atzīmēs, lai tiktu parādīts paziņojums2. Ja ir jāparāda paziņojuma ziņojums, Pi2 to parādīs nepārtraukti, lai lietotājs to redzētu.
  • Tikai lietotāja iejaukšanās, nospiežot kursorsviru pogu, ziņojums tiks dzēsts un atiestatīts datu bāzes pusē.

5. darbība: pārbaudiet Pis

Image
Image
Pārbaudiet Pis
Pārbaudiet Pis

Laiks pārbaudīt Pis.

  • Palaidiet skriptus attiecīgi Pis.
  • Piesakieties Firebase un dodieties uz savu projektu datu bāzes sadaļu.
  • Sakratiet savu Pi1, uz Pi1 LED displeja vajadzētu redzēt sarkanu izsaukuma zīmi. Jums vajadzētu saņemt arī īsziņu.
  • Pārbaudiet datu bāzi, jāsāk parādīties brīdinājuma ierakstiem. Būtu jāatjaunina arī paziņojums2.
  • Apskatiet Pi2. Jums vajadzētu arī ritināt "!!!" Lai notīrītu šo paziņojuma ziņojumu, vienkārši nospiediet kursorsviru. "paziņpi2" ir jāatiestata. Lai apstiprinātu, pārbaudiet Firebase.
  • Ja uzskatāt, ka Pi1 ir pārāk jutīgs pret kustību, Pi1 skriptā palieliniet slieksni līdz lielākam par 1G.

Ja viss noritēs labi, jūsu skripti neizdosies. Tagad jums ir strādājoša paziņojumu sistēma. Tiklīdz Pi1 nosaka kustības vai vibrācijas, jūs saņemsiet SMS paziņojumu un vizuālu LED paziņojumu uz Pi2.

6. darbība. R-PiAlerts IOS lietotnes izveide

R-PiAlerts IOS lietotnes izveide
R-PiAlerts IOS lietotnes izveide

Laiks izveidot iOS lietotni! Lietotne būs diezgan vienkārša. Tam būs LoginViewController un ItemsTableViewController. ItemsTableViewController parādīs brīdinājumu paziņojumus no "brīdinājumu" bērna. Var arī izdzēst datu bāzes ierakstus no lietotnes. Lai ietaupītu galvassāpes, ja plānojat aplūkot Firebase tiešsaistes apmācības, noteikti meklējiet pamācības, kas datētas pēc 2016. gada marta, jo pagājušajā gadā tajā laikā bija lielas izmaiņas. Viss, kas ir līdz 2016. gada martam, būs mantojums. Mani interesē ātrie faili, lūdzu, pārskatiet koda komentārus. Ja vēlaties detalizētu apmācību par to, kā izveidot Firebase lietotni, kas lasa datu bāzi, skatiet Reja Vunderliha apmācību.

Iestatiet iOS projekta pārskatu

  • Izveidojiet viena skata iOS projektu Xcode.
  • Kopējiet saišķa identifikatoru
  • Dodieties uz savu Firebase projektu vietnē un izveidojiet failu info.plist ar paketes identifikatoru.
  • Pievienojiet savam projektam failu GoogleService-info.plist. Šis info.plist darbojas tikai ar konkrētu jūsu izveidoto Firebase projektu.
  • Aizveriet Xcode un instalējiet Firebase, izmantojot Cocoapods. Noteikti instalējiet Auth un Database.
  • Restartējiet Xcode un pēc tam konfigurējiet savu AppDelegate.swift platformai Firebase. Tas aizņem tikai 2 koda rindas.

    Importēt Firebase an

    FIRApp.configure (). Pēc izvēles Firebase ir noturības funkcija, kas aizņem tikai 1 koda rindu

    FIRDatabase.database (). PersistenceEnabled = true

  • Detalizētas instalēšanas darbības var atrast Firebase vietnē

Kā lietotne mijiedarbojas ar Firebase datu bāzi:

  • Lietotnei būs jāautentificē lietotājs.
  • Pēc autentificēšanas lietotne uzņem Firebase datu bāzes momentuzņēmumu un saglabā to kā objektu "Vienums".
  • Minētais objekts aizpildīs masīvu. Tabulas attēla aizpildīšanai tiks izmantots minētais masīvs.
  • Novērotājs uzraudzīs izmaiņas Firebase datu bāzē un izveidos momentuzņēmumu.
  • Pēc izmaiņu noteikšanas masīvs tiks pievienots jaunajam momentuzņēmumam.
  • Pēc tam tabulas skats tiks atkārtoti ielādēts, lai parādītu izmaiņas.

Vispārīgs izklāsts par lietotnes izveidi

  • Apskatiet attēlu par to, kā lietotne ir izvietota Xcode saskarnes veidotājā.
  • Izveidojiet ViewController saskarnes veidotājā un norādiet pielāgoto klasi uz LoginViewController.swift.
  • Pievienojiet e -pasta un paroles teksta laukus. Neaizmirstiet paroles laukā ieslēgt "Droša teksta ievadīšana". Pievienot pieteikšanās pogu.
  • Saistiet teksta laukus un pogu ar LoginViewController.swift. LoginViewController.swift apstrādās autentifikāciju.
  • Pievienojiet navigācijas kontrolieri saskarnes veidotājā. Izveidojiet segmentu no LoginViewController līdz navigācijas kontrolierim. Noteikti piešķiriet segmentam identifikatoru.
  • Iestatiet jaunā tabulas skata pielāgoto klasi, kas tika piegādāta kopā ar navigācijas kontrolieri, uz punktu ItemsTableViewController.swift. Man ir arī 2 pogas uz ItemsTableViewController: Izrakstīties un poga Pievienot. Saistiet pogas ar ItemsTableViewController.swift.
  • Attiecībā uz kodu LoginViewController.swift. Lietotājs ievadīs pieteikšanās akreditācijas datus, un Firebase atgriezīs lietotāju. Ja lietotājs ir klāt, tas veiks segmentu ar identifikatoru. (skatiet pievienoto kodu)
  • Pievienojiet Class.swift klasi (skatiet pievienoto kodu)
  • Kas attiecas uz ItemsTableViewController kodu, tas ir diezgan standarta tabulas skata kods. Būs novērotājs, kurš uzraudzīs izmaiņas jūsu datu bāzē, kas saglabāta kā momentuzņēmums kā vienuma objekts. Pēc tam objekts Prece pievienos masīvu, lai aizpildītu tabulas skatu. Poga Pievienot Firebase datu bāzē iestata ierakstu Pi1 lasīšanai un parādīšanai. Ķiķināšanai es pievienoju arī kodu (skat. Pievienoto kodu)

7. darbība: pārbaudiet lietotni

Pārbaudiet lietotni
Pārbaudiet lietotni
Pārbaudiet lietotni
Pārbaudiet lietotni
Pārbaudiet lietotni
Pārbaudiet lietotni

Palaidiet savu lietotni

  • Piesakieties un sakratiet savu Pi1. Jums vajadzētu sākt redzēt jaunus brīdinājumu paziņojumus.
  • Pieskarieties pogai Pievienot un skatieties, kā Pi1 parāda jūsu ziņojumu.
  • Velciet pa kreisi, skatiet sadaļu Brīdinājumi.
  • Vai ātri saņemat pārāk daudz paziņojumu? pielāgojiet akselerometra slieksni vai palieliniet miega laiku Pi1 skriptā.

8. solis. Secinājums

Secinājums
Secinājums
Secinājums
Secinājums

Satriecošs! Tagad mums ir Pis, kas var noteikt kustību un nosūtīt jums paziņojumus par kustībām. Turklāt jūs varat pārvaldīt brīdinājumu ziņojumu žurnālā, izmantojot savu iOS ierīci! Laiks izvietot Pis. Novietojiet Pi1 blakus durvīm un Pi2 ap savu darba zonu. Nākamreiz, kad kāds ienāks, jūs varat pārbaudīt situāciju! Vai vēl labāk, mēģiniet paslēpties pie Pi automašīnā ar akumulatoru. Dažas reizes aizcirtiet durvis, paskatieties, kas notiks!

Tas ir tikai sākums iespējām, ko varat darīt ar Raspberry Pi un Firebase. SenseHat ietver arī vides sensorus, žiroskopus un kompasu. Jūs varat iestatīt savu Pis, lai reģistrētu noteiktas izmaiņas vidē. Vai vēlaties uzlabot savu spēli? Kad jūsu Pi konstatē kustības, izmantojiet kameras attēlus un ļaujiet Pi attēlot fotoattēlus. Mēģiniet arī izmantot datora redzes algoritmu, lai atpazītu sejas. ja tā ir kāda pazīstama seja, jūs varat saņemt paziņojumu! Izklaidējieties!

Ieteicams: