Inhoudsopgave:

R-PiAlerts: bouw een wifi-gebaseerd beveiligingssysteem met Raspberry Pis - Ajarnpa
R-PiAlerts: bouw een wifi-gebaseerd beveiligingssysteem met Raspberry Pis - Ajarnpa

Video: R-PiAlerts: bouw een wifi-gebaseerd beveiligingssysteem met Raspberry Pis - Ajarnpa

Video: R-PiAlerts: bouw een wifi-gebaseerd beveiligingssysteem met Raspberry Pis - Ajarnpa
Video: R-PiAlerts 2024, November
Anonim
Image
Image
R-PiAlerts: bouw een op wifi gebaseerd beveiligingssysteem met Raspberry Pis
R-PiAlerts: bouw een op wifi gebaseerd beveiligingssysteem met Raspberry Pis
R-PiAlerts: bouw een op wifi gebaseerd beveiligingssysteem met Raspberry Pis
R-PiAlerts: bouw een op wifi gebaseerd beveiligingssysteem met Raspberry Pis

Terwijl je aan je bureau werkt, hoor je plotseling een geluid in de verte. Is er net iemand thuisgekomen? Mijn auto staat voor mijn huis geparkeerd, heeft iemand ingebroken in mijn auto? Wil je niet dat je een melding op je telefoon of op je bureau krijgt, zodat je kunt beslissen of je het onderzoekt of niet? Nou vraag niet meer! R-PiAlerts is er!

Wat is R-PiAlerts? R-PiAlerts is een op Raspberry Pi3 gebaseerd beveiligingssysteem dat is gebouwd rond Firebase's Cloud. Als er beweging wordt gedetecteerd, zal het systeem de gebruiker op de hoogte stellen van een mogelijke inbraak met een sms-bericht en een knipperend LED-display (soort stil visueel alarm). Zodra de gebruiker een melding ontvangt, kan hij of zij dit onderzoeken. Alle gedetecteerde bewegingen worden vastgelegd in de Firebase-database. Naast het bekijken van het bewegingslogboek op een webbrowser, heeft de gebruiker ook toegang tot het bewegingslogboek via een iOS-app. Ik besloot dit te bouwen vanwege de recente toename van inbraken in zowel voertuigen als huizen in mijn omgeving.

Waarom de Pi3? Ik had iets kleins nodig dat beweging kan detecteren en indien nodig van een batterij kan lopen. Dan kan ik de unit achter een deur of in een auto verbergen. Het apparaat moet me ook meldingen of waarschuwingen kunnen sturen. De Pi3 kan al deze dingen doen met de ingebouwde wifi en het vermogen om op een USB-batterijpakket te werken. Andere redenen waarom ik voor de Pi3 heb gekozen:

  • De Pi is relatief goedkoop
  • Het is eenvoudig te implementeren en op te schalen
  • Het is configureerbaar vanuit het softwarestandpunt
  • Mogelijkheid om displays en sensoren te gebruiken. Dit project gebruikt de SenseHat
  • Operate Headless (zonder monitor, toetsenbord of muis)

Hoe werkt het

  • Idealiter heeft de gebruiker 2 Raspberry Pi's nodig die zijn aangesloten op de Firebase-database, maar een enkele Pi werkt ook.
  • Met behulp van de SenseHat detecteert de eerste Pi (Pi1) beweging met de versnellingsmeter, terwijl de tweede Pi (Pi2) bewegingsmeldingen weergeeft.
  • Wanneer de Pi1 beweging detecteert, doet hij 3 dingen:

    • log beweging naar de database
    • maak een meldingsvermelding in de database zodat Pi2 kan worden weergegeven
    • stuur de gebruiker een sms om de gebruiker op de hoogte te stellen van beweging.
  • Wanneer Pi2 een melding detecteert om weer te geven vanuit de database, gebeuren er twee dingen:

    • Het LED-display van de Pi2 toont de melding continu
    • De gebruiker kan de melding wissen door op de knop van Pi2 SenseHat te drukken. Hiermee wordt ook de melding in de database gewist.
  • Met de iOS-app kan de gebruiker

    • toegang krijgen tot de database; lees en verwijder het bewegingslogboek
    • de gebruiker kan Pi1 sturen om een bericht weer te geven op het LED-display van Pi1.

Praktische toepassingen

  1. Als u op straat parkeert, parkeert u uw auto binnen wifi-bereik. Bevestig een batterijpakket aan Pi1 (zie foto). Verberg Pi1 in uw auto. Plaats Pi2 ergens gemakkelijk zichtbaar, zoals naast uw bureau (zie foto).
  2. Een andere toepassing is om Pi1 in je huis naast een deur te plaatsen. De Pi is zo klein dat de meeste mensen hem niet zullen opmerken, vooral niet als hij achter de scharnierzijde zit (zie foto). Plaats dan je Pi2 op je bureau.
  3. Hond die op een plek in huis komt waar het niet hoort? Plaats een Pi1 in dat gebied. Zorg ervoor dat je de Pi in een stevige doos doet, zodat je hond er niet op kauwt.

Zolang je Pi's binnen wifi-bereik zijn, kunnen ze je waarschuwen of op de hoogte stellen van beweging. Als je geen tweede Pi hebt, kun je Pi1 gewoon gebruiken om beweging te detecteren en sms-meldingen te ontvangen via je mobiele telefoon.

Stuklijst

  • Twee (2) Raspberry Pi 3s met Raspbian (Raspberry Pi 2 werkt ook met een wifi-dongle)
  • Twee (2) Sense Hats
  • Mac- en iOS-apparaat

Software nodig

  • Pyrebase-bibliotheek (verbinden met Firebase)
  • SenseHat-bibliotheek (voor toegang tot versnellingsmeter en LED-display)
  • Twilio-bibliotheek (voor het verzenden van sms)
  • Python 3, ingebouwd met de nieuwste Raspbian
  • Raspbian met IDLE
  • Xcode8 en Cocoapods op je Mac
  • Bereidheid om te leren en te ontdekken

Kanttekening Dit is niet de enige op Pi gebaseerde beveiligingsoplossing. Als je ideeën, suggesties hebt of gewoon mijn code wilt refactoren, laat dan hieronder een reactie achter! =)

Stap 1: Firebase- en Twilio-accounts instellen

Firebase- en Twilio-accounts instellen
Firebase- en Twilio-accounts instellen
Firebase- en Twilio-accounts instellen
Firebase- en Twilio-accounts instellen

Allereerst, voordat we met onze Pis gaan spelen, moeten we Firebase en Twilio instellen. Firebase is de backend as a service van Google. Firebase bevat functies zoals database, cloudberichten, authenticatie, opslag, enz. Voor dit project hoeven we alleen de realtime database en authenticatie van Firebase te gebruiken. Verificatie is nodig om te kunnen lezen en schrijven naar uw Firebase-database. Firebase instellen:

  1. Registreer voor een gratis Firebase-account
  2. Ga naar de console. Maak een nieuw project en geef het een naam.
  3. Klik in het linkermenu op "Overzicht"
  4. Klik op "Firebase toevoegen aan uw web-app", kopieer uw APIKey en projectid (niet de url). Project-ID bevindt zich in de verschillende URL's zoals de database:
  5. Klik in het linkermenu op de "Authenticatie". Ga naar "Aanmeldmethode" en schakel "E-mail/Wachtwoord" in
  6. Maak onder "Gebruiker" een nieuw gebruikersaccount aan met e-mailadres/wachtwoord naar keuze. Met deze inloggegevens logt u in op de database.
  7. Ga onder het linkermenu naar de "Database"
  8. Dit is uw databank. Het is nu leeg. Wanneer deze is ingevuld, is deze in JSON-indeling. De URL moet dezelfde zijn als degene die je eerder hebt gezien.

Met Twilio kunnen ontwikkelaars berichten naar hun klanten sturen. We zullen het gebruiken om sms'jes naar je telefoon te sturen wanneer de Pi beweging detecteert. Twilio zal je een telefoonnummer geven om sms'jes te versturen. Twilio instellen:

  1. Meld u aan voor een gratis account op de site van Twilio
  2. Kopieer uw accountSID en authToken
  3. Klik op "Proefbeperkingen" en selecteer "krijg je eerste Twilio-telefoonnummer"
  4. Kopieer je nieuwe telefoonnummer

Stap 2: Stel uw Pis in

Stel je pis in
Stel je pis in
Stel je pis in
Stel je pis in

Voordat we kunnen beginnen met het programmeren van de Pis, moeten we een aantal instellingen uitvoeren. Zorg ervoor dat je een wachtwoord hebt om in te loggen voor je Pis. Eerst zullen we de SenseHat-borden fysiek verbinden met de Pis. Vervolgens installeren we de benodigde SenseHat-, Twilio- en Pyrebase-bibliotheken. De realtime-database van Firebase is ontworpen voor mobiele apparaten of websites. We kunnen de clouddatabase echter lezen en schrijven via de Rest API met een helperbibliotheek zoals Pyrebase.

Verbind de SenseHatZorg ervoor dat de SenseHats verbonden zijn met je Pis. Als u een ongebruikelijk geval heeft, moet u mogelijk de Pi verwijderen voordat u de SenseHat aansluit.

Bibliotheken installerenAlle bibliotheekinstallaties worden gedaan in de Terminal

  • Start je Pis op als je dat nog niet hebt gedaan.
  • Bij het opstarten krijg je deze kleurrijke LED-regenboog op je SenseHat! (zie foto)
  • Ga naar terminal en update/dist-upgrade, typ:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Nadat de upgrades zijn uitgevoerd, typt u het volgende om SenseHat-bibliotheken te installeren:

    sudo apt-get install sense-hat

  • Om Pyrebase te installeren, typt u:

    sudo pip installeer pyrebase

  • Installeer ten slotte Twilio

    sudo pip install twilio

Stap 3: Python-script voor Pi1

Zoals we eerder vermeldden, zal Pi1 de Pi zijn die zal worden gebruikt om beweging te detecteren. De waarden van de versnellingsmeter van de SenseHat worden gebruikt om beweging te bepalen. De code voor Pi1 zal dus rond toegang zijn tot de g-krachtwaarden van de accelerometer en het loggen van de gedetecteerde bewegingen in de Firebase-database. Hier is een overzicht van de processtroom:

  • Als Pi1 beweging detecteert, voegt het een item toe aan het kind "waarschuwingen" in de Firebase DB.
  • Pi1 zal ook het "notifypi2"-kind updaten met een meldingsbericht met betrekking tot de beweging.
  • Pi2 leest dan "notifypi2" en geeft de melding weer op het LED-matrixdisplay.

Ik heb het Pi1 Python-script toegevoegd dat u kunt volgen. Opmerkingen in het script leggen uit wat de code doet.

Aanvullende opmerkingen en inzichten voor het Pi1-script

  • Voor Firebase- en Twilio-configuratie. Vul de juiste API-sleutels, ID's, wachtwoorden, enz. in die u uit de vorige stappen hebt gekopieerd.
  • Met betrekking tot Firebase-authenticatie kunt u voor extra beveiliging om gebruikersinvoer vragen in plaats van deze inloggegevens hard te coderen. Elke keer dat we uit de database schrijven of lezen, moeten we opnemen:

    gebruiker['idtoken'] met Th

    get(), push(), set() methoden.

  • CPU-temperatuur is nodig zodat we kunnen ingrijpen als de Pi oververhit raakt in een auto of een gesloten omgeving.
  • We nemen ook de absolute waarde van de G-krachten, omdat we geen negatieve waarden hoeven te kennen. We hoeven alleen te weten of er G-krachten zijn.
  • Als de instructie de waarden van de versnellingsmeter controleert. Als G-krachten groter zijn dan 1 in een willekeurige richting, zal Pi1 de bewegingstijd registreren en een uitroepteken weergeven op zijn eigen LED-display. Het zal ook het "notifypi2"-kind bijwerken. Wanneer "notifypi2" is bijgewerkt, zal Pi2 het lezen en "!!!" weergeven op het LED-display om de gebruiker op de hoogte te stellen van mogelijke beweging/inbraak. Pi1 stuurt de gebruiker ook een sms-melding van beweging.
  • Bij gebruik van de methode push() genereert Firebase automatisch een onderliggend item met een nieuw item. Dit was nodig zodat de gelogde bewegingsgegevens uniek zijn. de methode set() daarentegen zal eerdere gegevens overschrijven.
  • Een lus van 10 seconden om de database te controleren is nodig, zodat uw Pi niet herhaaldelijk om gegevens van Firebase vraagt. Als u Firebase voortdurend spamt, logt Google u binnen ongeveer 10 minuten uit.
  • Firebase schopt de gebruiker ook elke 60 minuten eruit als het token niet wordt vernieuwd. Ik heb de verversing ingesteld op 1800 seconden (30 minuten).

Stap 4: Python-script voor Pi2

Python-script voor Pi2
Python-script voor Pi2

Als je naar de foto kijkt, is dat van Pi2 met een melding van mogelijke beweging.

Het script van Pi2 is vrijwel precies hetzelfde als Pi1 behalve dat het script geen beweging detecteert. Pi2 toont of reset alleen meldingsberichten van het "notifypi2" kind. Aangezien dat het enige verschil is, zal ik dat hieronder uitleggen.

  • Elke 10 seconden controleert Pi2 "notifypi2" om weer te geven. Als er een meldingsbericht moet worden weergegeven, zal de Pi2 dit continu weergeven, zodat de gebruiker het kan zien.
  • Alleen de tussenkomst van de gebruiker door op de joystickknop te drukken, zal het bericht wissen en resetten aan de databasezijde.

Stap 5: Test de Pis

Image
Image
Test de Pis
Test de Pis

Tijd om de Pis te testen.

  • Voer de scripts uit voor de respectievelijke Pis.
  • Log in op Firebase en ga naar het gedeelte met uw projectendatabase.
  • Schud je Pi1, je zou een rood uitroepteken moeten zien op het Pi1 LED-display. Je zou ook een sms-bericht moeten krijgen.
  • Controleer de database, waarschuwingsitems zouden moeten verschijnen. "notifypi2" moet ook worden bijgewerkt.
  • Kijk eens naar Pi2. Je zou ook met "!!!" moeten scrollen. Om dit meldingsbericht te wissen, drukt u gewoon op op de joystick. "notifypi2" moet opnieuw worden ingesteld. Controleer uw Firebase om te bevestigen.
  • Als u de Pi1 te gevoelig vindt voor beweging, verhoog dan de drempel tot meer dan 1G in het Pi1-script.

Als alles goed gaat, zullen je scripts niet crashen. Nu heb je een werkend meldingssysteem. Zodra Pi1 bewegingen of trillingen detecteert, ontvang je een sms-bericht en een visuele LED-melding op Pi2.

Stap 6: De R-PiAlerts IOS-app bouwen

De R-PiAlerts IOS-app bouwen
De R-PiAlerts IOS-app bouwen

Tijd om de iOS-app te bouwen! App zal vrij eenvoudig zijn. Het heeft een LoginViewController en een ItemsTableViewController. ItemsTableViewController geeft waarschuwingsmeldingen weer van het kind "waarschuwingen". Men kan ook database-items uit de app verwijderen. Als u van plan bent om online tutorials voor Firebase te bekijken, zorg er dan voor dat u, om u hoofdpijn te besparen, zoekt naar tutorials van na maart 2016, aangezien er vorig jaar rond die tijd grote veranderingen waren. Alles vóór maart 2016 zal legacy zijn. Ik heb je geïnteresseerd in de snelle bestanden, bekijk de opmerkingen in de code. Als je een gedetailleerde tutorial wilt over het bouwen van een Firebase-app die de database leest, bekijk dan de tutorial van Ray Wunderlich.

Uw iOS-projectoverzicht instellen

  • Maak een iOS-project met één weergave in Xcode.
  • Kopieer de bundel-ID
  • Ga naar uw Firebase-project op de website en maak een info.plist-bestand met de bundel-ID.
  • Voeg het bestand GoogleService-info.plist toe aan uw project. Deze info.plist werkt alleen met het specifieke Firebase-project dat u heeft gemaakt.
  • Sluit Xcode af en installeer Firebase via Cocoapods. Zorg ervoor dat u Auth en Database installeert.
  • Start Xcode opnieuw en configureer vervolgens uw AppDelegate.swift voor Firebase. Er zijn maar 2 regels code voor nodig.

    Firebase importeren een

    FIRApp.configure(). Optioneel heeft Firebase een persistentiefunctie waarvoor slechts 1 regel code nodig is

    FIRDatabase.database().persistenceEnabled = true

  • Gedetailleerde installatiestappen zijn te vinden op de website van Firebase

Hoe de app samenwerkt met de Firebase-database:

  • De app moet de gebruiker authenticeren.
  • Eenmaal geverifieerd, maakt de app een momentopname van de Firebase-database en slaat deze op als een "item" -object.
  • Dit object zal een array vullen. Deze array zal worden gebruikt om de tabelweergave te vullen.
  • Een waarnemer let op wijzigingen in de Firebase-database en maakt een momentopname.
  • Zodra er wijzigingen zijn gedetecteerd, wordt de array toegevoegd vanuit de nieuwe momentopname.
  • Tableview wordt dan opnieuw geladen om de wijzigingen weer te geven.

Algemeen overzicht over het bouwen van de app

  • Bekijk de afbeelding over hoe de app is ingedeeld in de interfacebuilder van Xcode.
  • Maak een ViewController in interfacebuilder en verwijs de aangepaste klasse naar LoginViewController.swift.
  • Voeg tekstvelden toe voor e-mail en wachtwoord. Vergeet niet "Beveiligde tekstinvoer" in te schakelen voor het wachtwoordveld. Voeg een inlogknop toe.
  • Koppel de tekstvelden en de knop aan de LoginViewController.swift. LoginViewController.swift zal de authenticatie afhandelen.
  • Voeg een navigatiecontroller toe in interfacebuilder. Maak een segue van de LoginViewController naar de Navigation Controller. Zorg ervoor dat u de segue een identificatie geeft.
  • Stel de aangepaste klasse van de nieuwe tableview die bij de navigatiecontroller is geleverd in op ItemsTableViewController.swift. Ik heb ook 2 knoppen op de ItemsTableViewController: Uitloggen en een knop Toevoegen. Koppel de knoppen aan ItemsTableViewController.swift.
  • Met betrekking tot de LoginViewController.swift-code. De gebruiker voert de inloggegevens in en Firebase retourneert een gebruiker. Als een gebruiker aanwezig is, voert deze een segue uit met de identifier. (zie bijgevoegde code)
  • Voeg de Item.swift-klasse toe (zie bijgevoegde code)
  • Wat betreft ItemsTableViewController-code, het is vrij standaard tableview-code. Er zal een waarnemer zijn om wijzigingen in uw database te volgen die als een momentopname zijn opgeslagen als een itemobject. Vervolgens voegt het object Item de array toe om de tabelweergave te vullen. Met de knop Toevoegen wordt een vermelding in de Firebase-database ingesteld die Pi1 kan lezen en weergeven. Om te giechelen heb ik ook code toegevoegd (zie bijgevoegde code)

Stap 7: Test de app

Test de app
Test de app
Test de app
Test de app
Test de app
Test de app

Voer je app uit

  • Log in en schud je Pi1. U zou nieuwe waarschuwingsmeldingen moeten zien verschijnen.
  • Tik op de knop Toevoegen en kijk hoe uw Pi1 uw bericht weergeeft.
  • Veeg naar links, zie "Alerts"-items worden verwijderd.
  • Te veel meldingen achter elkaar ontvangen? pas de drempel van de versnellingsmeter aan of verhoog de slaaptijd in het Pi1-script.

Stap 8: Conclusie

Conclusie
Conclusie
Conclusie
Conclusie

Geweldig! Nu hebben we Pis die beweging kan detecteren en u meldingen van bewegingen kan sturen. Bovendien kunt u uw waarschuwingsberichtenlogboek beheren met uw iOS-apparaat! Tijd om de Pis in te zetten. Zet Pi1 naast je deur en Pi2 rond je werkgebied. De volgende keer dat er iemand binnenkomt, kun je de situatie bekijken! Of beter nog, probeer je bij Pi in je auto te verstoppen met een batterijpakket. Sla de deuren een paar keer dicht, kijk wat er gebeurt!

Dit is slechts een begin van de mogelijkheden van wat u kunt doen met een Raspberry Pi en Firebase. De SenseHat bevat ook omgevingssensoren, gyroscopen en een kompas. U kunt uw Pis instellen om bepaalde wijzigingen in de omgeving vast te leggen. Wil je je spel opvoeren? Wanneer je Pi bewegingen detecteert, gebruik dan een camera om afbeeldingen vast te leggen en laat de Pi je de foto's sturen. Probeer ook een computer vision-algoritme te gebruiken om gezichten te herkennen. als het een gezicht is van iemand die je kent, kun je een melding krijgen! Veel plezier!

Aanbevolen: