Indholdsfortegnelse:

R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med hindbærpis: 8 trin (med billeder)
R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med hindbærpis: 8 trin (med billeder)

Video: R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med hindbærpis: 8 trin (med billeder)

Video: R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med hindbærpis: 8 trin (med billeder)
Video: По следам древней цивилизации? 🗿 Что, если мы ошиблись в своем прошлом? 2024, November
Anonim
Image
Image
R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med Raspberry Pis
R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med Raspberry Pis
R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med Raspberry Pis
R-PiAlerts: Byg et WiFi-baseret sikkerhedssystem med Raspberry Pis

Mens du arbejder ved dit skrivebord, hører du pludselig en fjern støj. Kom nogen lige hjem? Min bil står parkeret foran mit hus, er der nogen, der har brudt ind i min bil? Ønsker du ikke, at du fik besked på din telefon eller ved dit skrivebord, så du kan beslutte, om du vil undersøge det eller ej? Spørg ikke mere! R-PiAlerts er her!

Hvad er R-PiAlerts? R-PiAlerts er et Raspberry Pi3-baseret sikkerhedssystem bygget op omkring Firebase's Cloud. Hvis der registreres bevægelse, underretter systemet brugeren om et potentielt indbrud med en tekstbesked og et blinkende LED-display (slags visuel alarm). Når brugeren modtager en meddelelse, kan han eller hun undersøge. Al detekteret bevægelse logges til Firebase -databasen. Udover at se bevægelsesloggen i en webbrowser kan brugeren også få adgang til bevægelsesloggen via en iOS -app. Jeg besluttede at bygge dette på grund af den seneste stigning i indbrud til både køretøjer og boliger i mit område.

Hvorfor Pi3? Jeg havde brug for noget lille, der kan registrere bevægelse og løbe tør for et batteri, hvis det er nødvendigt. Derefter kan jeg skjule enheden bag en dør eller i en bil. Enheden skal også kunne sende mig notifikationer eller advarsler. Pi3 kan alle disse ting med den indbyggede wifi og dens evne til at køre et USB -batteri. Andre grunde til, hvorfor jeg valgte Pi3:

  • Pi’en er relativt billig
  • Det er let at installere og skalere op
  • Den kan konfigureres ud fra softwarens synspunkt
  • Evne til at bruge displays og sensorer. Dette projekt vil bruge SenseHat
  • Betjen hovedløs (uden skærm, tastatur eller mus)

Hvordan virker det

  • Ideelt set har brugeren brug for 2 Raspberry Pis tilsluttet Firebase -databasen, men en enkelt Pi fungerer også.
  • Ved hjælp af SenseHat registrerer den første Pi (Pi1) bevægelse med accelerometeret, mens den anden Pi (Pi2) viser meddelelser om bevægelse.
  • Når Pi1 registrerer bevægelse, gør den 3 ting

    • log bevægelse til databasen
    • opret en notifikationspost på databasen, så Pi2 kan vises
    • sende brugeren en tekstbesked, der underretter brugeren om bevægelse.
  • Når Pi2 registrerer en meddelelse, der skal vises fra databasen, sker der to ting

    • Pi2s LED -display viser meddelelsen løbende
    • Bruger kan slette meddelelsen ved at trykke på knappen Pi2 SenseHat. Dette vil også slette meddelelsesposten på databasen.
  • Med iOS -appen kan brugeren

    • få adgang til databasen; læse og slette bevægelsesloggen
    • brugeren kan sende Pi1 for at vise en besked på Pi1s LED -display.

Praktiske applikationer

  1. Hvis du gadeparkerer din bil inden for wifi -rækkevidde. Sæt en batteripakke til Pi1 (se billede). Skjul Pi1 i din bil. Placer Pi2 et sted, der let kan ses, f.eks. Ved siden af dit skrivebord (se billede).
  2. En anden applikation er at placere Pi1 i dit hus på siden af en dør. Pi er så lille, at de fleste mennesker ikke vil bemærke det, især hvis det er bag hængselsiden (se billede). Placer derefter din Pi2 ved dit skrivebord.
  3. Hund kommer ind på et sted i huset, det er ikke formodet at? Placer en Pi1 i dette område. Sørg for at lægge Pi'en i en robust æske, så din hund ikke tygger den.

Så længe dine Pis er inden for wifi -område, kan de advare eller underrette dig om bevægelse. Hvis du ikke har en anden Pi, kan du bare bruge Pi1 til at registrere bevægelse og modtage SMS -beskeder via din mobiltelefon.

Materialeseddel

  • To (2) Raspberry Pi 3'er, der kører Raspbian (Raspberry Pi 2 fungerer også med en wifi -dongle)
  • To (2) SenseHats
  • Mac og iOS -enhed

Software påkrævet

  • Pyrebase -bibliotek (forbindelse til Firebase)
  • SenseHat -bibliotek (til adgang til accelerometer og LED -display)
  • Twilio bibliotek (til afsendelse af SMS)
  • Python 3, indbygget med nyeste Raspbian
  • Raspbian med tomgang
  • Xcode8 og Cocoapods på din Mac
  • Villighed til at lære og udforske

Sidebemærkning Dette er ikke den eneste Pi -baserede sikkerhedsløsning. Hvis du har ideer, forslag eller bare ønsker at omarbejde min kode, kan du efterlade en kommentar herunder! =)

Trin 1: Konfigurer Firebase- og Twilio -konti

Konfigurer Firebase- og Twilio -konti
Konfigurer Firebase- og Twilio -konti
Konfigurer Firebase- og Twilio -konti
Konfigurer Firebase- og Twilio -konti

Først, før vi begynder at rode med vores Pis, skal vi konfigurere Firebase og Twilio. Firebase er Googles backend som en tjeneste. Firebase indeholder sådanne funktioner som database, cloud -beskeder, godkendelse, lagring osv. Til dette projekt skal vi kun bruge Firebases database i realtid og godkendelse. Godkendelse er nødvendig for at læse og skrive til din Firebase -database. Sådan konfigureres Firebase:

  1. Tilmeld dig en gratis Firebase -konto
  2. Gå til konsollen. Opret et nyt projekt og giv det et navn.
  3. Klik på "Oversigt" under menuen til venstre
  4. Klik på "Tilføj Firebase til din webapp", kopier din APIKey og projektid (ikke url). Projekt -id findes i de forskellige webadresser, f.eks. Databasen:
  5. Klik på "Godkendelse" under menuen til venstre. Gå til "Log ind metode" og aktiver "E -mail/adgangskode"
  6. Under "Bruger" skal du oprette en ny brugerkonto med din e -mail/adgangskode efter eget valg. Du vil bruge denne legitimationsoplysninger til at logge ind på databasen.
  7. Gå til "Database" under menuen til venstre
  8. Dette er din database. Det er tomt lige nu. Når den er udfyldt, vil den være i JSON -format. Webadressen skal være den samme som den, du så tidligere.

Twilio giver udviklere mulighed for at sende beskeder til deres kunder. Vi vil bruge den til at sende SMS til din telefon, når Pi registrerer bevægelse. Twilio giver dig et telefonnummer til afsendelse af SMS. Sådan konfigureres Twilio:

  1. Tilmeld dig en gratis konto på Twilios websted
  2. Kopiér din accountSID og authToken
  3. Klik på "Prøvebegrænsninger", og vælg "Få dit første Twilio -telefonnummer"
  4. Kopiér dit nye telefonnummer

Trin 2: Konfigurer din Pis

Opsæt din Pis
Opsæt din Pis
Opsæt din Pis
Opsæt din Pis

Inden vi kan begynde at programmere Pis, skal vi lave noget opsætning. Sørg for at have et password -login til din Pis. Først vil vi fysisk forbinde SenseHat -kortene med Pis'erne. Dernæst installerer vi de nødvendige SenseHat-, Twilio- og Pyrebase -biblioteker. Firebase real -time database blev designet til mobile enheder eller websteder. Vi kan dog læse og skrive clouddatabasen gennem Rest API med et hjælperbibliotek som Pyrebase.

Tilslut SenseHat Sørg for, at SenseHats er forbundet til din Pis. Hvis du har en usædvanlig sag, skal du muligvis fjerne Pi, før du tilslutter SenseHat.

Installation af biblioteker Alle bibliotekinstallationer udføres i terminalen

  • Start din Pis, hvis du ikke allerede har det.
  • Ved opstart får du denne farverige LED -regnbue på din SenseHat! (se billede)
  • Gå til terminal og opdater/dist-opgradering, skriv:

    • sudo apt-get opdatering
    • sudo apt-get dist-upgrade
  • Når opgraderingerne er udført, skal du skrive følgende for at installere SenseHat -biblioteker:

    sudo apt-get install sense-hat

  • For at installere Pyrebase skal du skrive:

    sudo pip installer pyrebase

  • Til sidst skal du installere Twilio

    sudo pip installer twilio

Trin 3: Python Script til Pi1

Som vi nævnte tidligere, vil Pi1 være Pi, der vil blive brugt til at registrere bevægelse. SenseHats accelerometer -værdier bruges til at bestemme bevægelse. Koden for Pi1 vil således være omkring adgang til accelerometerets g -kraftværdier og logning af de registrerede bevægelser til Firebase -databasen. Her er en oversigt over procesforløb:

  • Hvis Pi1 registrerer bevægelse, tilføjer den en post til "advarsler" -barnet i Firebase DB.
  • Pi1 vil også opdatere barnet "notifypi2" med en meddelelsesmeddelelse om bevægelsen.
  • Pi2, læser derefter "notifypi2" og viser meddelelsen på dens LED -matrixdisplay.

Jeg har inkluderet Pi1 Python -scriptet, som du kan følge. Kommentarer i scriptet forklarer, hvad koden gør.

Yderligere noter og indsigt til Pi1 -scriptet

  • Til opsætning af Firebase og Twilio. Udfyld de relevante API -nøgler, id'er, adgangskoder osv., Som du kopierede fra de foregående trin.
  • Med hensyn til Firebase -godkendelse kan du for ekstra sikkerhed bede om brugerinput i stedet for hård kodning af disse legitimationsoplysninger. Hver gang vi skriver eller læser fra databasen, skal vi inkludere

    bruger ['idtoken'] med th

    get (), push (), sæt () metoder.

  • CPU -temperatur er nødvendig, så vi kan gribe ind, hvis Pi overophedes i en bil eller et lukket miljø.
  • Vi tager også den absolutte værdi af G -kræfterne, da vi ikke behøver at kende negative værdier. Vi behøver kun at vide, om der er G -kræfter.
  • Hvis udsagn vil kontrollere accelerometerets værdier. Hvis G -kræfter er større end 1 i en hvilken som helst retning, logger Pi1 bevægelsestiden og viser et udråbstegn på sit eget LED -display. Det vil også opdatere barnet "notifypi2". Når "notifypi2" er opdateret, læser Pi2 det og viser "!!!" på dets LED-display for at underrette brugeren om mulig bevægelse/indbrud. Pi1 sender også brugeren en SMS -meddelelse om bevægelse.
  • Når du bruger metoden push (), vil Firebase automatisk generere et barn med en ny post. Dette var nødvendigt, så de loggede bevægelsesdata vil være unikke. set () -metoden på den anden side vil overskrive tidligere data.
  • 10 sekunders loop for at kontrollere databasen er nødvendig, så din Pi ikke gentagne gange anmoder om data fra Firebase. Hvis du løbende spam Firebase, logger Google dig ud på cirka 10 minutter.
  • Firebase sparker også brugeren ud hvert 60. minut, hvis tokenet ikke opdateres. Jeg har opdateringen indstillet til 1800 sekunder (30 minutter).

Trin 4: Python -script til Pi2

Python Script til Pi2
Python Script til Pi2

Hvis du ser på billedet, er det, at Pi2 viser en meddelelse om mulig bevægelse.

Pi2s script er stort set det samme som Pi1, undtagen at scriptet ikke registrerer bevægelse. Pi2 viser eller nulstiller kun meddelelsesmeddelelser fra barnet "notifypi2". Da det er den eneste forskel, vil jeg forklare det nedenfor.

  • Hvert 10. sekund kontrollerer Pi2 "notifypi2" for at blive vist. Hvis der er en meddelelsesmeddelelse, der skal vises, viser Pi2 den kontinuerligt, så brugeren kan se den.
  • Kun brugerinterventionen ved at trykke på joystick -knappen vil beskeden slettes og nulstilles på databasesiden.

Trin 5: Test Pis

Image
Image
Test Pis
Test Pis

Tid til at teste Pis.

  • Kør scripts for henholdsvis Pis.
  • Log ind på Firebase, og gå til sektionen for dine projekters database.
  • Ryst din Pi1, du skal se et rødt udråbstegn på Pi1 LED -displayet. Du bør også få en sms.
  • Tjek databasen, advarselposter skal begynde at dukke op. "notifypi2" bør også opdateres.
  • Tag et kig på Pi2. Du skal også rulle "!!!" For at slette denne meddelelse skal du bare trykke på joysticket. "notifypi2" skal nulstilles. Tjek din Firebase for at bekræfte.
  • Hvis du finder Pi1 for følsom over for bevægelse, skal du øge tærsklen til større end 1G i Pi1 -scriptet.

Hvis alt går godt, går dine scripts ikke ned. Nu har du et fungerende notifikationssystem. Når Pi1 registrerer bevægelser eller vibrationer, får du en SMS -besked og en visuel LED -meddelelse på Pi2.

Trin 6: Opbygning af R-PiAlerts IOS-appen

Opbygning af R-PiAlerts IOS App
Opbygning af R-PiAlerts IOS App

Tid til at bygge iOS -appen! Appen vil være temmelig enkel. Det vil have en LoginViewController og en ItemsTableViewController. ItemsTableViewController viser advarselsmeddelelser fra barnet "alarmer". Man kan også slette databaseposter fra appen. For at spare dig for lidt hovedpine, hvis du planlægger at kigge på online -selvstudier til Firebase, skal du sørge for at lede efter selvstudier dateret efter marts 2016, da der sidste år var store ændringer omkring det tidspunkt. Alt inden marts 2016 vil være arv. Jeg er interesseret i de hurtige filer. Gennemgå venligst kommentarerne i koden. Hvis du vil have en detaljeret vejledning i, hvordan du opbygger en Firebase -app, der læser databasen, kan du tjekke Ray Wunderlichs tutorial.

Opsæt dit iOS -projektoversigt

  • Opret et enkelt view iOS -projekt i Xcode.
  • Kopiér bundt -id'et
  • Gå til dit Firebase -projekt på webstedet, og opret en info.plist -fil med bundt -id'et.
  • Føj filen GoogleService-info.plist til dit projekt. Denne info.plist fungerer kun med det specifikke Firebase -projekt, du har oprettet.
  • Luk ud af Xcode, og installer Firebase via Cocoapods. Sørg for at installere Auth og Database.
  • Genstart Xcode, og konfigurer derefter din AppDelegate.swift til Firebase. Det tager kun 2 linjer kode.

    Importer Firebase en

    FIRApp.configure (). Eventuelt har Firebase en persistensfunktion, der kun tager 1 linje kode

    FIRDatabase.database (). PersistenceEnabled = true

  • Detaljerede installationstrin kan findes på Firebases websted

Sådan interagerer appen med Firebase -databasen:

  • Appen skal godkende brugeren.
  • Når den er godkendt, tager appen et øjebliksbillede af Firebase -databasen og gemmer den som et "element" -objekt.
  • Objektet vil fylde et array. Nævnte array vil blive brugt til at udfylde tabelvisningen.
  • En observatør vil se efter ændringer i Firebase -databasen og oprette et øjebliksbillede.
  • Når ændringer er registreret, tilføjes array fra det nye øjebliksbillede.
  • Tableview genindlæses derefter for at vise ændringerne.

Generel oversigt over, hvordan man bygger appen

  • Tag et kig på billedet om, hvordan appen er lagt op i Xcodes grænsefladebygger.
  • Opret en ViewController i interface builder og peg den tilpassede klasse til LoginViewController.swift.
  • Tilføj tekstfelter til e -mail og adgangskode. Glem ikke at slå "Sikker tekstindtastning" til for adgangskodefeltet. Tilføj en login -knap.
  • Link tekstfelterne og knappen til LoginViewController.swift. LoginViewController.swift håndterer godkendelsen.
  • Tilføj en navigationskontroller i grænsefladebyggeren. Opret en segue fra LoginViewController til Navigation Controller. Sørg for at give segue en identifikator.
  • Indstil den brugerdefinerede klasse for den nye tabelvisning, der fulgte med navigationskontrollen, til at pege ItemsTableViewController.swift. Jeg har også 2 knapper på ItemsTableViewController: Logout og en Add -knap. Link knapperne op til ItemsTableViewController.swift.
  • Med hensyn til LoginViewController.swift -koden. Brugeren indtaster loginoplysningerne, og Firebase returnerer en bruger. Hvis en bruger er til stede, udfører den en segue med identifikatoren. (se vedhæftet kode)
  • Tilføj klassen Item.swift (se vedhæftet kode)
  • Med hensyn til ItemsTableViewController -kode er det temmelig standard tabelvisningskode. Der vil være en observatør til at overvåge ændringer i din database gemt som et øjebliksbillede som et objektobjekt. Derefter tilføjer objektobjektet arrayet til at udfylde tabelvisningen. Knappen Tilføj indstiller en post i Firebase -databasen, så Pi1 kan læse og vise. Til fnis tilføjede jeg også kode (se vedhæftede kode)

Trin 7: Test appen

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

Kør din app

  • Log ind og ryst din Pi1. Du skal begynde at se nye advarselsmeddelelser.
  • Tryk på knappen Tilføj, og se din Pi1 vise din besked.
  • Stryg til venstre, se "Advarsler" poster fjernes.
  • Modtager du for mange underretninger hurtigt efter hinanden? juster accelerometerets tærskel eller øg dvaletiden i Pi1 -scriptet.

Trin 8: Konklusion

Konklusion
Konklusion
Konklusion
Konklusion

Fantastisk! Nu har vi Pis, der kan registrere bevægelse og sende dig beskeder om bevægelser. Derudover kan du administrere på din advarselslog med din iOS -enhed! Tid til at implementere Pis. Sæt Pi1 ved siden af din dør og Pi2 omkring dit arbejdsområde. Næste gang nogen kommer ind, kan du tjekke situationen! Eller endnu bedre, prøv at skjule dig for Pi i din bil med en batteripakke. Slam dørene et par gange, se hvad der sker!

Dette er kun en begyndelse på mulighederne for, hvad du kan gøre med en Raspberry Pi og Firebase. SenseHat indeholder også miljøsensorer, gyroer og et kompas. Du kan konfigurere din Pis til at logge visse ændringer i miljøet. Vil du intensivere dit spil? Når din Pi registrerer bevægelser, skal du bruge et kamera til at tage billeder og få Pi -teksten til at tage billederne. Prøv også at bruge en computer vision algoritme til at genkende ansigter. Hvis det er ansigtet på en, du kender, kan du få besked! Hav det sjovt!

Anbefalede: