Innholdsfortegnelse:

R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis: 8 trinn (med bilder)
R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis: 8 trinn (med bilder)

Video: R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis: 8 trinn (med bilder)

Video: R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis: 8 trinn (med bilder)
Video: По следам древней цивилизации? 🗿 Что, если мы ошиблись в своем прошлом? 2024, November
Anonim
Image
Image
R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis
R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis
R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis
R-PiAlerts: Bygg et WiFi-basert sikkerhetssystem med bringebærpis

Mens du jobber ved skrivebordet ditt, hører du plutselig en fjern støy. Kom noen akkurat hjem? Bilen min står parkert foran huset mitt, har noen brutt seg inn i bilen min? Ønsker du ikke at du har fått beskjed på telefonen eller på skrivebordet ditt, slik at du kan bestemme om du vil undersøke det eller ikke? Spør ikke mer! R-PiAlerts er her!

Hva er R-PiAlerts? R-PiAlerts er et Raspberry Pi3-basert sikkerhetssystem bygget rundt Firebase's Cloud. Hvis det oppdages bevegelse, vil systemet varsle brukeren om et mulig innbrudd med en tekstmelding og et blinkende LED-display (slags lydløs visuell alarm). Når brukeren mottar et varsel, kan han eller hun undersøke. All oppdaget bevegelse logges til Firebase -databasen. I tillegg til å se bevegelsesloggen i en nettleser, kan brukeren også få tilgang til bevegelsesloggen via en iOS -app. Jeg bestemte meg for å bygge dette på grunn av den siste økningen i innbrudd i både biler og boliger rundt området mitt.

Hvorfor Pi3? Jeg trengte noe lite som kan oppdage bevegelse og gå tom for et batteri om nødvendig. Deretter kan jeg gjemme enheten bak en dør eller i en bil. Enheten må også kunne sende meg varsler eller varsler. Pi3 kan gjøre alle disse tingene med den innebygde wifi og evnen til å kjøre av et USB -batteri. Andre grunner til hvorfor jeg valgte Pi3:

  • Pi er relativt billig
  • Det er enkelt å distribuere og skalere opp
  • Den kan konfigureres fra programvarens synspunkt
  • Evne til å bruke skjermer og sensorer. Dette prosjektet vil bruke SenseHat
  • Betjen hodeløs (uten skjerm, tastatur eller mus)

Hvordan virker det

  • Ideelt sett trenger brukeren 2 Raspberry Pis koblet til Firebase -databasen, men en enkelt Pi vil også fungere.
  • Ved å bruke SenseHat, vil den første Pi (Pi1) oppdage bevegelse med akselerometeret, mens den andre Pi (Pi2) vil vise varsler om bevegelse.
  • Når Pi1 oppdager bevegelse, gjør den 3 ting

    • loggbevegelse til databasen
    • opprett en varslingsoppføring i databasen for Pi2 å vise
    • send brukeren en tekstmelding som varsler brukeren om bevegelse.
  • Når Pi2 oppdager et varsel som skal vises fra databasen, skjer det to ting

    • Pi2s LED -skjerm vil vise varselet kontinuerlig
    • Brukeren kan slette varselet ved å trykke ned knappen på Pi2 SenseHat. Dette vil også slette varseloppføringen på databasen.
  • Med iOS -appen kan brukeren

    • få tilgang til databasen; lese og slette bevegelsesloggen
    • brukeren kan sende Pi1 for å vise en melding på Pi1s LED -skjerm.

Praktiske applikasjoner

  1. Hvis du parkerer bilen din innenfor wifi -området. Fest en batteripakke til Pi1 (se bilde). Skjul Pi1 i bilen din. Plasser Pi2 et sted som er lett å se, for eksempel ved siden av skrivebordet ditt (se bilde).
  2. En annen applikasjon er å plassere Pi1 i huset ditt på siden av en dør. Pi er så liten at de fleste ikke vil legge merke til den, spesielt hvis den er bak hengselsiden (se bilde). Plasser deretter din Pi2 ved skrivebordet.
  3. Hunden kommer inn på et sted i huset det er ikke antatt å? Plasser en Pi1 i dette området. Sørg for at du legger Pi i en solid eske slik at hunden din ikke tygger den.

Så lenge Pisene dine er innenfor wifi -område, kan de varsle eller varsle deg om bevegelse. Hvis du ikke har en annen Pi, kan du bare bruke Pi1 til å oppdage bevegelse og motta SMS -varsler via mobiltelefonen.

Stykklister

  • To (2) Raspberry Pi 3s som kjører Raspbian (Raspberry Pi 2 fungerer også med en wifi -dongle)
  • To (2) SenseHats
  • Mac og iOS -enhet

Programvare som trengs

  • Pyrebase -bibliotek (koble til Firebase)
  • SenseHat -bibliotek (for tilgang til akselerometer og LED -skjerm)
  • Twilio bibliotek (for sending av SMS)
  • Python 3, innebygd med siste Raspbian
  • Raspbian med IDLE
  • Xcode8 og Cocoapods på din Mac
  • Villighet til å lære og utforske

Dette er ikke den eneste Pi -baserte sikkerhetsløsningen. Hvis du har noen ideer, forslag eller bare ønsker å omarbeide koden min, vennligst legg igjen en kommentar nedenfor! =)

Trinn 1: Konfigurer Firebase- og Twilio -kontoer

Konfigurer Firebase- og Twilio -kontoer
Konfigurer Firebase- og Twilio -kontoer
Konfigurer Firebase- og Twilio -kontoer
Konfigurer Firebase- og Twilio -kontoer

Først må vi sette opp Firebase og Twilio før vi begynner å fikle med Pis. Firebase er Googles backend som en tjeneste. Firebase inkluderer slike funksjoner som database, skymeldinger, autentisering, lagring, etc. For dette prosjektet trenger vi bare å bruke Firebases sanntidsdatabase og autentisering. Godkjenning vil være nødvendig for å lese og skrive til Firebase -databasen din. Slik konfigurerer du Firebase:

  1. Registrer deg for en gratis Firebase -konto
  2. Gå til konsollen. Lag et nytt prosjekt og gi det et navn.
  3. Klikk på "Oversikt" under menyen til venstre.
  4. Klikk på "Legg til Firebase i nettappen din", kopier APIKey og prosjektid (ikke nettadressen). Prosjekt -ID ligger i de forskjellige nettadressene, for eksempel databasen:
  5. Klikk på "Autentisering" under menyen til venstre. Gå til "Logg inn metode" og aktiver "E -post/passord"
  6. Under "Bruker" opprett en ny brukerkonto med e -postadresse/passord du ønsker. Du vil bruke denne legitimasjonen for å logge deg på databasen.
  7. Gå til "Database" under menyen til venstre
  8. Dette er din database. Det er tomt akkurat nå. Når den er fylt ut, vil den være i JSON -format. Nettadressen skal være den samme som den du så tidligere.

Twilio lar utviklere sende meldinger til sine kunder. Vi vil bruke den til å sende SMS til telefonen din når Pi oppdager bevegelse. Twilio vil gi deg et telefonnummer for å sende ut SMS. Slik konfigurerer du Twilio:

  1. Registrer deg for en gratis konto på Twilios nettsted
  2. Kopiér kontoen dinSID og authToken
  3. Klikk på "Prøvebegrensninger" og velg "få ditt første Twilio -telefonnummer"
  4. Kopier det nye telefonnummeret ditt

Trinn 2: Sett opp din Pis

Sett opp din Pis
Sett opp din Pis
Sett opp din Pis
Sett opp din Pis

Før vi kan begynne å programmere Pis, må vi gjøre noen oppsett. Sørg for at du har et passord pålogget for Pis. Først vil vi fysisk koble SenseHat -kortene til Pis. Deretter vil vi installere de nødvendige SenseHat-, Twilio- og Pyrebase -bibliotekene. Firebase sanntidsdatabase ble designet for mobile enheter eller nettsteder. Imidlertid kan vi lese og skrive skydatabasen gjennom Rest API med et hjelperbibliotek som Pyrebase.

Koble til SenseHat Sørg for at SenseHats er koblet til din Pis. Hvis du har et uvanlig tilfelle, må du kanskje fjerne Pi før du kobler til SenseHat.

Installere biblioteker Alle bibliotekinstallasjonene vil bli utført i terminalen

  • Start opp Pis hvis du ikke allerede har det.
  • Ved oppstart får du denne fargerike LED -regnbuen på SenseHat! (se bilde)
  • Gå til terminalen og oppdater/dist-oppgradering, skriv:

    • sudo apt-get oppdatering
    • sudo apt-get dist-upgrade
  • Etter at oppgraderingene er utført, skriver du inn følgende for å installere SenseHat -biblioteker:

    sudo apt-get install sense-hat

  • For å installere Pyrebase, skriv inn:

    sudo pip installer pyrebase

  • Til slutt installerer du Twilio

    sudo pip installer twilio

Trinn 3: Python -skript for Pi1

Som vi nevnte tidligere, vil Pi1 være Pi som vil bli brukt til å oppdage bevegelse. SenseHats akselerometerverdier vil bli brukt til å bestemme bevegelse. Dermed vil koden for Pi1 være rundt tilgang til akselerometerets g -kraftverdier og logging av bevegelsene som er oppdaget til Firebase -databasen. Her er en oversikt over prosessflyten:

  • Hvis Pi1 oppdager bevegelse, vil den legge til en oppføring i "varsler" -barnet i Firebase DB.
  • Pi1 vil også oppdatere "notifypi2" -barnet med en varslingsmelding om bevegelsen.
  • Pi2, leser deretter "notifypi2" og viser varselet på LED -matriseskjermen.

Jeg har inkludert Pi1 Python -skriptet som du kan følge. Kommentarer i skriptet forklarer hva koden gjør.

Ytterligere notater og innsikt for Pi1 -skriptet

  • For oppsett av Firebase og Twilio. Fyll ut de riktige API -nøklene, ID -ene, passordene osv. Som du kopierte fra de foregående trinnene.
  • Når det gjelder Firebase -godkjenning, kan du be om brukerinngang for ekstra sikkerhet i stedet for hardkoding av disse legitimasjonene. Hver gang vi skriver eller leser fra databasen, må vi inkludere

    bruker ['idtoken'] med th

    get (), push (), set () metoder.

  • CPU -temperaturen er nødvendig, slik at vi kan gripe inn hvis Pi overopphetes i en bil eller et lukket miljø.
  • Vi tar også den absolutte verdien av G -kreftene siden vi ikke trenger å kjenne negative verdier. Vi trenger bare å vite om det er G -krefter.
  • Hvis uttalelsen vil kontrollere akselerometerets verdier. Hvis G -kreftene er større enn 1 i en hvilken som helst retning, logger Pi1 bevegelsestiden og viser et utropstegn på sin egen LED -skjerm. Det vil også oppdatere "notifypi2" -barnet. Når "notifypi2" er oppdatert, vil Pi2 lese den og vise "!!!" på LED-displayet for å varsle brukeren om mulig bevegelse/innbrudd. Pi1 vil også sende brukeren en SMS -melding om bevegelse.
  • Når du bruker metoden push (), vil Firebase automatisk generere et barn med en ny oppføring. Dette var nødvendig for at de loggede bevegelsesdataene skal være unike. set () -metoden vil derimot overskrive tidligere data.
  • 10 sekunders sløyfe for å sjekke databasen er nødvendig, slik at Pi ikke gjentatte ganger ber om data fra Firebase. Hvis du kontinuerlig spam Firebase, logger Google deg ut på omtrent 10 minutter.
  • Firebase vil også sparke brukeren ut hvert 60. minutt hvis tokenet ikke oppdateres. Jeg har oppdateringen satt til 1800 sekunder (30 minutter).

Trinn 4: Python -skript for Pi2

Python Script for Pi2
Python Script for Pi2

Hvis du ser på bildet, er det av Pi2 som viser et varsel om mulig bevegelse.

Skriptet til Pi2 er stort sett det samme som Pi1, bortsett fra at skriptet ikke oppdager bevegelse. Pi2 viser eller tilbakestiller varslingsmeldinger fra "notifypi2" -barnet. Siden det er den eneste forskjellen, vil jeg forklare det nedenfor.

  • Hvert 10. sekund vil Pi2 sjekke "notifypi2" for å vises. Hvis det er en varslingsmelding som skal vises, vil Pi2 vise den kontinuerlig slik at brukeren ser den.
  • Bare brukerintervensjonen ved å trykke på joystick -knappen vil meldingen slettes og tilbakestilles på databasesiden.

Trinn 5: Test Pis

Image
Image
Test Pis
Test Pis

På tide å teste Pis.

  • Kjør skriptene for henholdsvis Pis.
  • Logg deg på Firebase og gå til prosjektdatabasen din.
  • Rist Pi1, du skal se et rødt utropstegn på Pi1 LED -skjermen. Du bør også få en SMS -melding.
  • Sjekk databasen, varseloppføringer bør begynne å dukke opp. "notifypi2" bør også oppdateres.
  • Ta en titt på Pi2. Du bør også rulle "!!!" For å fjerne denne varselmeldingen, bare trykk på joysticken. "notifypi2" bør tilbakestilles. Kontroller Firebase for å bekrefte.
  • Hvis du synes Pi1 er for følsom for bevegelse, kan du øke terskelen til større enn 1G i Pi1 -skriptet.

Hvis alt går bra, krasjer ikke skriptene dine. Nå har du et fungerende varslingssystem. Når Pi1 oppdager bevegelser eller vibrasjoner, får du en SMS -melding og et visuelt LED -varsel på Pi2.

Trinn 6: Bygg R-PiAlerts IOS-appen

Bygging av R-PiAlerts IOS-appen
Bygging av R-PiAlerts IOS-appen

På tide å bygge iOS -appen! Appen vil være ganske enkel. Den vil ha en LoginViewController og en ItemsTableViewController. ItemsTableViewController vil vise varslingsvarsler fra barnet "varsler". Man kan også slette databaseoppføringer fra appen. For å spare hodepine, hvis du planlegger å se på nettopplæringsprogrammer for Firebase, må du se etter opplæringer datert etter mars 2016, da det var store endringer i fjor rundt den tiden. Alt før mars 2016 vil være arv. Jeg er interessert i de raske filene. Vennligst les kommentarene i koden. Hvis du vil ha en detaljert opplæring om hvordan du bygger en Firebase -app som leser databasen, kan du sjekke opplæringen til Ray Wunderlich.

Sett opp din iOS -prosjektoversikt

  • Lag et enkelt visning iOS -prosjekt i Xcode.
  • Kopier pakkeidentifikatoren
  • Gå til Firebase -prosjektet ditt på nettstedet og lag en info.plist -fil med pakkeidentifikatoren.
  • Legg til filen GoogleService-info.plist i prosjektet ditt. Denne info.plist fungerer bare med det spesifikke Firebase -prosjektet du har opprettet.
  • Lukk Xcode og installer Firebase via Cocoapods. Sørg for å installere Auth og Database.
  • Start Xcode på nytt, og konfigurer deretter AppDelegate.swift for Firebase. Det tar bare 2 linjer med kode.

    Importer Firebase en

    FIRApp.configure (). Alternativt har Firebase en utholdenhetsfunksjon som bare tar 1 kodelinje

    FIRDatabase.database (). PersistenceEnabled = true

  • Du finner detaljerte installasjonstrinn på Firebases nettsted

Hvordan appen samhandler med Firebase -databasen:

  • Appen må godkjenne brukeren.
  • Når den er godkjent, tar appen et øyeblikksbilde av Firebase -databasen og lagrer den som et "element" -objekt.
  • Objektet vil fylle en matrise. Nevnte matrise vil bli brukt til å fylle tabellvisningen.
  • En observatør vil se etter endringer i Firebase -databasen og lage et øyeblikksbilde.
  • Når endringer er oppdaget, vil matrisen bli lagt til fra det nye øyeblikksbildet.
  • Tableview blir deretter lastet inn på nytt for å vise endringene.

Generell oversikt over hvordan du bygger appen

  • Ta en titt på bildet om hvordan appen er lagt opp i Xcodes grensesnittbygger.
  • Lag en ViewController i grensesnittbygger og pek den egendefinerte klassen på LoginViewController.swift.
  • Legg til tekstfelt for e -post og passord. Ikke glem å slå på "Sikker tekstoppføring" for passordfeltet. Legg til en påloggingsknapp.
  • Koble tekstfeltene og knappen til LoginViewController.swift. LoginViewController.swift vil håndtere autentiseringen.
  • Legg til en navigasjonskontroller i grensesnittbyggeren. Lag en segue fra LoginViewController til Navigation Controller. Sørg for å gi segue en identifikator.
  • Angi den egendefinerte klassen for den nye tabellvisningen som fulgte med navigasjonskontrolleren til å peke ItemsTableViewController.swift. Jeg har også 2 knapper på ItemsTableViewController: Logg ut og en Legg til -knapp. Koble knappene til ItemsTableViewController.swift.
  • Når det gjelder LoginViewController.swift -koden. Brukeren angir påloggingsinformasjonen, og Firebase returnerer en bruker. Hvis en bruker er tilstede, vil den utføre en segue med identifikatoren. (se vedlagt kode)
  • Legg til klassen Item.swift (se vedlagt kode)
  • Når det gjelder ItemsTableViewController -kode, er det ganske standard tabellvisningskode. Det vil være en observatør for å overvåke endringer i databasen som er lagret som et øyeblikksbilde som et elementobjekt. Deretter vil elementobjektet legge til matrisen for å fylle tabellvisningen. Legg til -knappen angir en oppføring i Firebase -databasen som Pi1 kan lese og vise. For fnis, la jeg også til kode (se vedlagte kode)

Trinn 7: Test appen

Test appen
Test appen
Test appen
Test appen
Test appen
Test appen

Kjør appen din

  • Logg inn og rist Pi1. Du bør begynne å se nye varslingsvarsler dukke opp.
  • Trykk på legg til -knappen og se hvordan Pi1 viser meldingen din.
  • Sveip til venstre, se "Varsler" -oppføringer blir fjernet.
  • Mottar du for mange varsler raskt etter hverandre? juster akselerometerterskelen eller øk søvntiden i Pi1 -skriptet.

Trinn 8: Konklusjon

Konklusjon
Konklusjon
Konklusjon
Konklusjon

Rått! Nå har vi Pis som kan oppdage bevegelse og sende deg varsler om bevegelser. På toppen av det kan du administrere varslingsloggen din med iOS -enheten din! På tide å distribuere Pis. Sett Pi1 ved siden av døren din og Pi2 rundt arbeidsområdet. Neste gang noen kommer inn, kan du sjekke situasjonen! Eller enda bedre, prøv å gjemme deg for Pi i bilen din med en batteripakke. Sleng dørene et par ganger, se hva som skjer!

Dette er bare en begynnelse på mulighetene for hva du kan gjøre med en Raspberry Pi og Firebase. SenseHat inkluderer også miljøsensorer, gyroer og et kompass. Du kan konfigurere Pis for å logge visse endringer i miljøet. Vil du øke spillet ditt? Når Pi oppdager bevegelser, bruk et kamera for å ta bilder og ha Pi -teksten til bildene. Prøv også å bruke en datasynsalgoritme for å gjenkjenne ansikter. hvis det er ansiktet til noen du kjenner, kan du bli varslet! Ha det gøy!

Anbefalt: