Innehållsförteckning:

R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis: 8 steg (med bilder)
R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis: 8 steg (med bilder)

Video: R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis: 8 steg (med bilder)

Video: R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis: 8 steg (med bilder)
Video: R-PiAlerts 2024, Juli
Anonim
Image
Image
R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis
R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis
R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis
R-PiAlerts: Bygg ett WiFi-baserat säkerhetssystem med hallonpis

När du arbetar vid ditt skrivbord hör du plötsligt ett avlägset ljud. Kom någon nyss hem? Min bil står parkerad framför mitt hus, har någon brutit sig in i min bil? Önskar du inte att du fick aviseringar på din telefon eller vid skrivbordet så att du kan bestämma om du vill undersöka eller inte? Tja fråga inte mer! R-PiAlerts är här!

Vad är R-PiAlerts? R-PiAlerts är ett Raspberry Pi3-baserat säkerhetssystem byggt kring Firebases moln. Om rörelse upptäcks kommer systemet att meddela användaren om ett potentiellt inbrott med ett textmeddelande och en blinkande LED-display (tyst visuellt larm av olika slag). När användaren får ett meddelande kan han eller hon undersöka. All upptäckt rörelse loggas till Firebase -databasen. Förutom att visa rörelseloggen i en webbläsare kan användaren också komma åt rörelseloggen via en iOS -app. Jag bestämde mig för att bygga detta på grund av den senaste ökningen av inbrott i både fordon och hem i mitt område.

Varför Pi3? Jag behövde något litet som kan upptäcka rörelser och ta slut på ett batteri om det behövs. Sedan kan jag gömma enheten bakom en dörr eller i en bil. Enheten måste också kunna skicka aviseringar eller varningar till mig. Pi3 kan göra allt detta med den inbyggda wifi och dess förmåga att köra bort ett USB -batteri. Andra skäl till varför jag valde Pi3:

  • Pi är relativt billig
  • Det är enkelt att distribuera och skala upp
  • Dess konfigurerbara från programvarans synvinkel
  • Möjlighet att använda displayer och sensorer. Detta projekt kommer att använda SenseHat
  • Använd Headless (utan bildskärm, tangentbord eller mus)

Hur fungerar det

  • Helst behöver användaren 2 Raspberry Pis anslutna till Firebase -databasen, men en enda Pi fungerar också.
  • Med hjälp av SenseHat kommer den första Pi (Pi1) att upptäcka rörelse med accelerometern medan den andra Pi (Pi2) visar meddelanden om rörelse.
  • När Pi1 upptäcker rörelse gör den 3 saker

    • logga rörelse till databasen
    • skapa en meddelandepost i databasen för Pi2 att visa
    • skicka användaren ett textmeddelande som meddelar användaren om rörelse.
  • När Pi2 upptäcker ett meddelande att visa från databasen händer två saker

    • Pi2s LED -display visar meddelandet kontinuerligt
    • Användaren kan rensa meddelandet genom att trycka ner Pi2 SenseHats knapp. Detta kommer också att rensa meddelandeposten i databasen.
  • Med iOS -appen kan användaren

    • komma åt databasen; läsa och radera rörelseloggen
    • användaren kan skicka Pi1 för att visa ett meddelande på Pi1s LED -display.

Praktiska tillämpningar

  1. Om du parkerar din bil inom wifi -området. Fäst ett batteri på Pi1 (se bild). Dölj Pi1 i din bil. Placera Pi2 någonstans lätt att se, till exempel bredvid ditt skrivbord (se bild).
  2. En annan applikation är att placera Pi1 i ditt hus vid sidan av en dörr. Pi är så liten att de flesta inte kommer att märka det särskilt om det ligger bakom gångjärnssidan (se bild). Placera sedan din Pi2 vid ditt skrivbord.
  3. Hund att komma in på en plats i huset är det inte antagligen? Placera en Pi1 i det området. Se till att du lägger Pi i en robust låda så att din hund inte tuggar upp den.

Så länge din Pis är inom wifi -området kan de varna eller meddela dig om rörelse. Om du inte har en andra Pi kan du bara använda Pi1 för att upptäcka rörelse och ta emot SMS -meddelanden via din mobiltelefon.

Materialförteckning

  • Två (2) Raspberry Pi 3s som kör Raspbian (Raspberry Pi 2 fungerar också med en wifi -dongel)
  • Två (2) SenseHats
  • Mac- och iOS -enhet

Programvara som behövs

  • Pyrebase -bibliotek (anslutning till Firebase)
  • SenseHat -bibliotek (för åtkomst till accelerometer och LED -display)
  • Twilio -bibliotek (för att skicka SMS)
  • Python 3, inbyggd med senaste Raspbian
  • Raspbian med IDLE
  • Xcode8 och Cocoapods på din Mac
  • Villighet att lära och utforska

Detta är inte den enda Pi -baserade säkerhetslösningen. Om du har några idéer, förslag eller bara vill ändra min kod, vänligen lämna en kommentar nedan! =)

Steg 1: Konfigurera Firebase- och Twilio -konton

Konfigurera Firebase- och Twilio -konton
Konfigurera Firebase- och Twilio -konton
Konfigurera Firebase- och Twilio -konton
Konfigurera Firebase- och Twilio -konton

Först och främst, innan vi börjar busa med våra Pis, måste vi konfigurera Firebase och Twilio. Firebase är Googles backend som en tjänst. Firebase innehåller sådana funktioner som databas, molnmeddelanden, autentisering, lagring etc. För detta projekt behöver vi bara använda Firebases databas och autentisering i realtid. Autentisering krävs för att läsa och skriva till din Firebase -databas. Så här konfigurerar du Firebase:

  1. Registrera dig för ett gratis Firebase -konto
  2. Gå till konsolen. Skapa ett nytt projekt och ge det ett namn.
  3. Under den vänstra menyn, klicka på "Översikt"
  4. Klicka på "Lägg till Firebase i din webbapp", kopiera din APIKey och projektid (inte webbadressen). Projekt -ID finns i de olika webbadresserna, till exempel databasen:
  5. Under den vänstra menyn, klicka på "Autentisering". Gå till "Inloggningsmetod" och aktivera "E -post/lösenord"
  6. Under "Användare" skapar du ett nytt användarkonto med din valda e -postadress/lösenord. Du kommer att använda denna referens för att logga in på databasen.
  7. Under den vänstra menyn, gå till "Databas"
  8. Detta är din databas. Det är tomt just nu. När den är fylld kommer den att vara i JSON -format. Webbadressen ska vara densamma som den du såg tidigare.

Twilio låter utvecklare skicka meddelanden till sina kunder. Vi kommer att använda den för att skicka SMS till din telefon när Pi upptäcker rörelse. Twilio kommer att ge dig ett telefonnummer för att skicka ut SMS. Så här ställer du in Twilio:

  1. Registrera dig för ett gratis konto på Twilios webbplats
  2. Kopiera ditt accountSID och authToken
  3. Klicka på "Prövningsbegränsningar" och välj "få ditt första Twilio -telefonnummer"
  4. Kopiera ditt nya telefonnummer

Steg 2: Konfigurera din Pis

Ställ in din Pis
Ställ in din Pis
Ställ in din Pis
Ställ in din Pis

Innan vi kan börja programmera Pis måste vi göra några inställningar. Se till att du har ett lösenord för din Pis. Först kommer vi fysiskt att ansluta SenseHat -korten till Pis. Därefter kommer vi att installera de nödvändiga SenseHat-, Twilio- och Pyrebase -biblioteken. Firebase realtidsdatabas har utformats för mobila enheter eller webbplatser. Vi kan dock läsa och skriva molndatabasen via Rest API med ett hjälpbibliotek som Pyrebase.

Anslut SenseHat Se till att SenseHats är anslutna till din Pis. Om du har ett ovanligt fall kan du behöva ta bort Pi innan du ansluter SenseHat.

Installera bibliotek Alla biblioteksinstallationer görs i terminalen

  • Starta upp din Pis om du inte redan har gjort det.
  • Vid uppstart får du den här färgglada LED -regnbågen på din SenseHat! (se bild)
  • Gå till terminalen och uppdatera/dist-uppgradera, skriv:

    • sudo apt-get uppdatering
    • sudo apt-get dist-upgrade
  • När uppgraderingarna har gjorts skriver du följande för att installera SenseHat -bibliotek:

    sudo apt-get install sense-hat

  • För att installera Pyrebase, skriv:

    sudo pip installera pyrebase

  • Slutligen installerar du Twilio

    sudo pip installera twilio

Steg 3: Python -skript för Pi1

Som vi nämnde tidigare är Pi1 Pi som kommer att användas för att upptäcka rörelse. SenseHats accelerometervärden kommer att användas för att bestämma rörelse. Således kommer koden för Pi1 att vara runt åtkomst till accelerometerns g -kraftvärden och logga de rörelser som detekteras i Firebase -databasen. Här är en översikt över processflödet:

  • Om Pi1 upptäcker rörelse kommer den att lägga till en post i "varningar" -barnet i Firebase DB.
  • Pi1 kommer också att uppdatera barnet "notifypi2" med ett meddelande om rörelsen.
  • Pi2, läser sedan "notifypi2" och visar meddelandet på dess LED -matrisdisplay.

Jag har inkluderat Pi1 Python -skriptet som du kan följa. Kommentarer i manuset förklarar vad koden gör.

Ytterligare anteckningar och insikter för Pi1 -skriptet

  • För installation av Firebase och Twilio. Fyll i lämpliga API -nycklar, ID, lösenord osv. Som du kopierade från föregående steg.
  • När det gäller Firebase -autentisering, för extra säkerhet, kan du be om användarinmatning istället för att hårdkoda dessa referenser. Varje gång vi skriver eller läser från databasen måste vi inkludera

    användare ['idtoken'] med TH

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

  • CPU -temperatur behövs så att vi kan ingripa om Pi överhettas i en bil eller en stängd miljö.
  • Vi tar också G -krafternas absoluta värde eftersom vi inte behöver känna till negativa värden. Vi behöver bara veta om det finns G -krafter.
  • If -sats kommer att kontrollera accelerometerns värden. Om G -krafterna är större än 1 i någon riktning, loggar Pi1 rörelsetiden och visar ett utropstecken på sin egen LED -display. Det kommer också att uppdatera barnet "notifypi2". När "notifypi2" uppdateras kommer Pi2 att läsa det och visa "!!!" på dess LED-display för att meddela användaren om eventuell rörelse/inbrott. Pi1 skickar också användaren ett SMS -meddelande om rörelse.
  • När du använder metoden push () genererar Firebase ett barn automatiskt med en ny post. Detta behövdes så att de loggade rörelsedata blir unika. set () -metoden kommer å andra sidan att skriva över tidigare data.
  • 10 sekunders loop för att kontrollera databasen är nödvändig så att din Pi inte upprepade gånger begär data från Firebase. Om du kontinuerligt skräppost i Firebase loggar Google ut dig på cirka 10 minuter.
  • Firebase sparkar också ut användaren var 60: e minut om token inte uppdateras. Jag har uppdateringen inställd på 1800 sekunder (30 minuter).

Steg 4: Python -skript för Pi2

Python Script för Pi2
Python Script för Pi2

Om du tittar på fotot, det är av Pi2 som visar ett meddelande om möjlig rörelse.

Pi2s manus är i stort sett samma sak som Pi1 förutom att manuset inte upptäcker rörelse. Pi2 visar eller återställer bara aviseringsmeddelanden från barnet "notifypi2". Eftersom det är den enda skillnaden kommer jag att förklara det nedan.

  • Var 10: e sekund kontrollerar Pi2 "notifypi2" för att visas. Om det finns ett aviseringsmeddelande att visa kommer Pi2 att visa det kontinuerligt så att användaren ser det.
  • Endast användarens ingripande genom att trycka på joystick -knappen kommer meddelandet att rensas och återställas på databassidan.

Steg 5: Testa Pis

Image
Image
Testa Pis
Testa Pis

Dags att testa Pis.

  • Kör skripten för respektive Pis.
  • Logga in på Firebase och gå till din projekts databas.
  • Skaka din Pi1, du bör se ett rött utropstecken på Pi1 LED -displayen. Du bör också få ett SMS.
  • Kontrollera databasen, varningsposter bör börja dyka upp. "notifypi2" bör också uppdateras.
  • Ta en titt på Pi2. Du bör också rulla "!!!" För att rensa detta meddelande, tryck bara på joysticken. "notifypi2" bör återställas. Kontrollera din Firebase för att bekräfta.
  • Om du tycker att Pi1 är för känslig för rörelse kan du öka tröskeln till mer än 1G i Pi1 -skriptet.

Om allt går bra kommer dina skript inte att krascha. Nu har du ett fungerande aviseringssystem. När Pi1 upptäcker rörelser eller vibrationer får du ett SMS -meddelande och en visuell LED -avisering på Pi2.

Steg 6: Bygga R-PiAlerts IOS-appen

Bygga R-PiAlerts IOS App
Bygga R-PiAlerts IOS App

Dags att bygga iOS -appen! App kommer att vara ganska enkel. Den kommer att ha en LoginViewController och en ItemsTableViewController. ItemsTableViewController visar varningsmeddelanden från barnet "varningar". Man kan också ta bort databasposter från appen. För att spara dig lite huvudvärk, om du planerar att titta på onlinehandledning för Firebase, se till att du letar efter självstudier daterade efter mars 2016 eftersom det skedde stora förändringar förra året kring den tiden. Allt före mars 2016 är ett arv. Jag är intresserad av de snabba filerna, läs kommentarerna i koden. Om du vill ha en detaljhandledning om hur du bygger en Firebase -app som läser databasen, kolla in Ray Wunderlichs handledning.

Konfigurera din iOS -projektöversikt

  • Skapa ett iOS -projekt med en enda vy i Xcode.
  • Kopiera paketidentifieraren
  • Gå till ditt Firebase -projekt på webbplatsen och skapa en info.plist -fil med paketidentifieraren.
  • Lägg till filen GoogleService-info.plist i ditt projekt. Denna info.plist fungerar bara med det specifika Firebase -projekt du har skapat.
  • Stäng av Xcode och installera Firebase via Cocoapods. Se till att installera Auth och Database.
  • Starta om Xcode och konfigurera sedan din AppDelegate.swift för Firebase. Det tar bara 2 rader kod.

    Importera Firebase ett

    FIRApp.configure (). Alternativt har Firebase en uthållighetsfunktion som bara tar en rad kod

    FIRDatabase.database (). PersistenceEnabled = true

  • Detaljerade installationssteg finns på Firebases webbplats

Hur appen interagerar med Firebase -databasen:

  • Appen måste autentisera användaren.
  • När den är autentiserad tar appen en ögonblicksbild av Firebase -databasen och lagrar den som ett "objekt" -objekt.
  • Nämnda objekt fyller en array. Nämnda matris kommer att användas för att fylla i tabellvyn.
  • En observatör kommer att titta efter ändringar i Firebase -databasen och skapa en ögonblicksbild.
  • När ändringar upptäcks kommer matrisen att läggas till från den nya ögonblicksbilden.
  • Tableview laddas sedan om för att visa ändringarna.

Allmän översikt över hur man bygger appen

  • Ta en titt på bilden om hur appen är utformad i Xcodes gränssnittsbyggare.
  • Skapa en ViewController i gränssnittsbyggaren och peka den anpassade klassen på LoginViewController.swift.
  • Lägg till textfält för e -post och lösenord. Glöm inte att aktivera "Säker textinmatning" för lösenordsfältet. Lägg till en inloggningsknapp.
  • Länka upp textfälten och knappen till LoginViewController.swift. LoginViewController.swift hanterar autentiseringen.
  • Lägg till en navigationskontroller i gränssnittsbyggaren. Skapa en segue från LoginViewController till Navigation Controller. Se till att ge segue en identifierare.
  • Ställ in den anpassade klassen för den nya tabellvyn som medföljde navigeringskontrollen för att peka ItemsTableViewController.swift. Jag har också 2 knappar på ItemsTableViewController: Logga ut och en Lägg till -knapp. Länka upp knapparna till ItemsTableViewController.swift.
  • Angående LoginViewController.swift -koden. Användaren anger inloggningsuppgifterna och Firebase returnerar en användare. Om en användare är närvarande utför den en segue med identifieraren. (se bifogad kod)
  • Lägg till klassen Item.swift (se bifogad kod)
  • När det gäller ItemsTableViewController -kod är det en ganska vanlig tabellvyskod. Det kommer att finnas en observatör för att övervaka ändringar i din databas som sparats som en ögonblicksbild som ett objektobjekt. Sedan kommer objektobjektet att lägga till matrisen för att fylla i tabellvyn. Knappen Lägg till anger en post i Firebase -databasen för Pi1 att läsa och visa. För fnissar har jag också lagt till kod (se bifogad kod)

Steg 7: Testa appen

Testa appen
Testa appen
Testa appen
Testa appen
Testa appen
Testa appen

Kör din app

  • Logga in och skaka din Pi1. Du bör börja se nya varningsmeddelanden.
  • Tryck på knappen Lägg till och se din Pi1 visa ditt meddelande.
  • Svep åt vänster, se "Varningar" -poster tas bort.
  • Få för många aviseringar i snabb följd? justera accelerometertröskeln eller öka sömntiden i Pi1 -skriptet.

Steg 8: Slutsats

Slutsats
Slutsats
Slutsats
Slutsats

Grymt bra! Nu har vi Pis som kan upptäcka rörelser och skicka meddelanden om rörelser. Utöver det kan du hantera din varningslogg med din iOS -enhet! Dags att distribuera Pis. Sätt Pi1 bredvid din dörr och Pi2 runt ditt arbetsområde. Nästa gång någon kommer in kan du kolla läget! Eller ännu bättre, försök att gömma dig för Pi i din bil med ett batteri. Släng dörrarna några gånger, se vad som händer!

Detta är bara en början på möjligheterna till vad du kan göra med en Raspberry Pi och Firebase. SenseHat innehåller också miljösensorer, gyros och en kompass. Du kan konfigurera din Pis för att logga vissa ändringar i miljön. Vill du öka ditt spel? När din Pi upptäcker rörelser använder du en kamera för att ta bilder och låter Pi -texten ta bilderna. Försök också att använda en datorsynalgoritm för att känna igen ansikten. Om det är ansiktet på någon du känner kan du få ett meddelande! Ha så kul!

Rekommenderad: