Taula de continguts:

R-PiAlerts: Creeu un sistema de seguretat basat en WiFi amb Raspberry Pis: 8 passos (amb imatges)
R-PiAlerts: Creeu un sistema de seguretat basat en WiFi amb Raspberry Pis: 8 passos (amb imatges)

Vídeo: R-PiAlerts: Creeu un sistema de seguretat basat en WiFi amb Raspberry Pis: 8 passos (amb imatges)

Vídeo: R-PiAlerts: Creeu un sistema de seguretat basat en WiFi amb Raspberry Pis: 8 passos (amb imatges)
Vídeo: Все осталось позади! - Невероятный заброшенный викторианский особняк в Бельгии 2024, De novembre
Anonim
Image
Image
R-PiAlerts: creeu un sistema de seguretat basat en WiFi amb Raspberry Pis
R-PiAlerts: creeu un sistema de seguretat basat en WiFi amb Raspberry Pis
R-PiAlerts: creeu un sistema de seguretat basat en WiFi amb Raspberry Pis
R-PiAlerts: creeu un sistema de seguretat basat en WiFi amb Raspberry Pis

Mentre treballa a l’escriptori, de sobte se sent un soroll llunyà. Algú acaba de tornar a casa? El meu cotxe està aparcat davant de casa, algú em va irrompre? No voleu que rebeu una notificació al telèfon o al taulell perquè pugueu decidir si voleu investigar o no? Doncs ja no es qüestiona més! R-PiAlerts ja és aquí!

R-PiAlerts és un sistema de seguretat basat en Raspberry Pi3 construït al voltant del núvol de Firebase. Si es detecta moviment, el sistema notificarà a l’usuari un possible trencament amb un missatge de text i una pantalla LED parpellejant (tipus d’alarma visual silenciosa). Un cop l'usuari rep una notificació, pot investigar. Tots els moviments detectats es registraran a la base de dades de Firebase. A més de visualitzar el registre de moviments en un navegador web, l’usuari també pot accedir al registre de moviments a través d’una aplicació per a iOS. Vaig decidir construir-ho a causa del recent augment de trencaments tant a vehicles com a cases de la meva zona.

Per què el Pi3? Necessitava alguna cosa petita que pogués detectar el moviment i fugir d’una bateria si calia. Llavors, puc amagar la unitat darrere d’una porta o en un cotxe. A més, la unitat ha de poder enviar-me notificacions o alertes. El Pi3 pot fer totes aquestes coses amb el wifi integrat i la seva capacitat per executar una bateria USB. Altres motius pels quals he escollit el Pi3:

  • El Pi és relativament econòmic
  • És fàcil de desplegar i ampliar
  • Es pot configurar des del punt de vista del programari
  • Possibilitat d'utilitzar pantalles i sensors. Aquest projecte utilitzarà el SenseHat
  • Funciona sense cap (sense monitor, teclat ni ratolí)

Com funciona

  • Idealment, l'usuari necessitarà 2 Raspberry Pis connectats a la base de dades de Firebase, però també funcionarà un sol Pi.
  • Utilitzant el SenseHat, el primer Pi (Pi1) detectarà el moviment amb l’acceleròmetre mentre que el segon Pi (Pi2) mostrarà notificacions de moviment.
  • Quan el Pi1 detecta moviment, fa 3 coses

    • registre del moviment a la base de dades
    • creeu una entrada de notificació a la base de dades perquè es mostri Pi2
    • envieu a l’usuari un missatge de text notificant-li el moviment.
  • Quan Pi2 detecta una notificació que es mostra a la base de dades, passen dues coses

    • La pantalla LED de Pi2 mostrarà la notificació contínuament
    • L'usuari pot esborrar la notificació prement el botó Pi2 SenseHat. Això també esborrarà l'entrada de notificació a la base de dades.
  • Amb l’app iOS, l’usuari pot

    • accedir a la base de dades; llegeix i suprimeix el registre de moviments
    • l'usuari pot enviar Pi1 per mostrar un missatge a la pantalla LED de Pi1.

Aplicacions pràctiques

  1. Si aparqueu el cotxe al carrer a l’abast de wifi. Connecteu una bateria a Pi1 (vegeu la imatge). Amaga Pi1 al cotxe. Col·loqueu Pi2 en algun lloc fàcilment visible, com ara al costat del vostre escriptori (vegeu la imatge).
  2. Una altra aplicació és col·locar Pi1 a casa al costat d’una porta. El Pi és tan petit que la majoria de la gent no ho notarà sobretot si es troba darrere de la part frontal (veure foto). A continuació, col·loqueu el Pi2 al taulell de treball.
  3. Gos ficant-se en un lloc de la casa, no és així? Col·loqueu un Pi1 en aquesta zona. Assegureu-vos que poseu el Pi en una caixa resistent perquè el vostre gos no el mastegui.

Mentre els vostres Pis estiguin al rang de wifi, poden avisar-vos o avisar-vos del moviment. Si no teniu un segon Pi, només podeu utilitzar Pi1 per detectar moviments i rebre notificacions per SMS a través del telèfon mòbil.

Factura de materials

  • Dos (2) Raspberry Pi 3 amb Raspbian (Raspberry Pi 2 també funcionarà amb un dongle wifi)
  • Dos (2) SenseHats
  • Dispositiu Mac i iOS

Cal programari

  • Biblioteca Pyrebase (connectant-se a Firebase)
  • Biblioteca SenseHat (per accedir a l’acceleròmetre i a la pantalla LED)
  • Biblioteca Twilio (per enviar SMS)
  • Python 3, integrat amb l'última versió de Raspbian
  • Raspbian amb IDLE
  • Xcode8 i Cocoapods al vostre Mac
  • Disposició a aprendre i explorar

Nota lateral Aquesta no és l’única solució de seguretat basada en Pi. Si teniu alguna idea, suggeriment o simplement voleu refactoritzar el meu codi, deixeu un comentari a continuació. =)

Pas 1: configureu els comptes de Firebase i Twilio

Configureu els comptes de Firebase i Twilio
Configureu els comptes de Firebase i Twilio
Configureu els comptes de Firebase i Twilio
Configureu els comptes de Firebase i Twilio

En primer lloc, abans de començar a jugar amb el nostre Pis, hem de configurar Firebase i Twilio. Firebase és el backend de Google com a servei. Firebase inclou funcions com ara bases de dades, missatgeria al núvol, autenticació, emmagatzematge, etc. Per a aquest projecte, només caldrà utilitzar la base de dades i l'autenticació en temps real de Firebase. Es necessitarà autenticació per llegir i escriure a la base de dades de Firebase. Per configurar Firebase:

  1. Registreu-vos per obtenir un compte gratuït de Firebase
  2. Aneu a la consola. Creeu un projecte nou i doneu-li un nom.
  3. Al menú esquerre, feu clic a "Visió general"
  4. Feu clic a "Afegeix Firebase a la vostra aplicació web", copieu l'APIKey i projectid (no l'URL). L'identificador del projecte es troba als diferents URL, com ara la base de dades:
  5. Al menú esquerre, feu clic a "Autenticació". Aneu a "Mètode d'inici de sessió" i activeu "Correu electrònic / contrasenya"
  6. A "Usuari", creeu un compte d'usuari nou amb el correu electrònic / contrasenya que trieu. Utilitzarà aquesta credencial per iniciar la sessió a la base de dades.
  7. Al menú esquerre, aneu a la "Base de dades"
  8. Aquesta és la vostra base de dades. Ara mateix està buit. Quan s'ompli, serà en format JSON. L'URL hauria de ser el mateix que el que heu vist anteriorment.

Twilio permet als desenvolupadors enviar missatges als seus clients. L’utilitzarem per enviar SMS al vostre telèfon quan el Pi detecti moviment. Twilio us proporcionarà un número de telèfon per enviar SMS. Per configurar Twilio:

  1. Registreu-vos per obtenir un compte gratuït al lloc de Twilio
  2. Copieu el compte SID i authToken
  3. Feu clic a "Restriccions de prova" i seleccioneu "Obteniu el vostre primer número de telèfon Twilio"
  4. Copieu el número de telèfon nou

Pas 2: configureu el Pis

Configureu el vostre Pis
Configureu el vostre Pis
Configureu el vostre Pis
Configureu el vostre Pis

Abans de començar a programar el Pis, hem de fer algunes configuracions. Assegureu-vos que teniu un inici de sessió de contrasenya per al vostre Pis. Primer connectarem físicament les plaques SenseHat al Pis. A continuació, instal·larem les biblioteques necessàries SenseHat, Twilio i Pyrebase. La base de dades en temps real de Firebase es va dissenyar per a dispositius mòbils o llocs web. Tot i això, podem llegir i escriure la base de dades del núvol a través de l’API Rest amb una biblioteca auxiliar com Pyrebase.

Connecteu el SenseHat Assegureu-vos que els SenseHats estiguin connectats al vostre Pis. Si teniu un cas inusual, és possible que hàgiu de treure el Pi abans de connectar el SenseHat.

Instal·lació de biblioteques Totes les instal·lacions de la biblioteca es faran al terminal

  • Arrenca el Pis si encara no ho has fet.
  • En arrencar, obtindreu aquest colorit arc de Sant Martí LED al SenseHat. (veure foto)
  • Aneu al terminal i actualitzeu / dist-upgrade, escriviu:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Després de fer les actualitzacions, escriviu el següent per instal·lar les biblioteques SenseHat:

    sudo apt-get install sense-hat

  • Per instal·lar Pyrebase, escriviu:

    sudo pip instal·lar pyrebase

  • Per últim, instal·leu Twilio

    sudo pip instal·lar twilio

Pas 3: Python Script per a Pi1

Com hem esmentat anteriorment, Pi1 serà el Pi que s’utilitzarà per detectar el moviment. Els valors de l’acceleròmetre del SenseHat s’utilitzaran per determinar el moviment. Per tant, el codi de Pi1 serà al voltant d’accedir als valors de força de l’acceleròmetre g i registrar els moviments detectats a la base de dades de Firebase. Aquí teniu una visió general del flux de processos:

  • Si Pi1 detecta moviment, afegirà una entrada al fill "Alertes" del DB de Firebase.
  • Pi1 també actualitzarà el fill "notificationpi2" amb un missatge de notificació sobre el moviment.
  • Pi2, després llegeix "notificationpi2" i mostra la notificació a la pantalla de matriu de LED.

He inclòs l'script Python Pi1 perquè el pugueu seguir. Els comentaris de l'script expliquen què fa el codi.

Notes i estadístiques addicionals per a l’escriptura Pi1

  • Per a la configuració de Firebase i Twilio. Empleneu les claus, identificadors, contrasenyes, etc. de l’API adequades que heu copiat dels passos anteriors.
  • Pel que fa a l'autenticació Firebase, per obtenir més seguretat, podeu sol·licitar l'entrada de l'usuari en lloc de codificar aquestes credencials. Cada vegada que escrivim o llegim des de la base de dades, haurem d’incloure

    usuari ['idtoken'] amb th

    get (), push (), set () mètodes.

  • Es necessita la temperatura de la CPU per poder intervenir en cas que el Pi s’escalfi en un cotxe o en un entorn tancat.
  • També prenem el valor absolut de les forces G ja que no necessitem conèixer valors negatius. Només cal saber si hi ha forces G.
  • If statement comprovarà els valors de l’acceleròmetre. Si les forces G són superiors a 1 en qualsevol direcció, Pi1 registrarà el temps de moviment i mostrarà un signe d’exclamació a la seva pròpia pantalla LED. També actualitzarà el fill "notificationpi2". Quan s'actualitzi "notificationpi2", Pi2 el llegirà i mostrarà "!!!" a la seva pantalla LED per notificar a l'usuari els possibles moviments / trencaments. Pi1 també enviarà a l'usuari una notificació per SMS del moviment.
  • En utilitzar el mètode push (), Firebase generarà automàticament un nen amb una entrada nova. Això era necessari, de manera que les dades de moviment registrades seran úniques. en canvi, el mètode set () sobreescriurà les dades anteriors.
  • És necessari un bucle de 10 segons per comprovar la base de dades, de manera que el vostre Pi no sol·liciti dades de Firebase repetidament. Si feu contingut brossa contínuament a Firebase, Google tancarà la sessió d'aquí a uns 10 minuts.
  • Firebase també expulsarà l'usuari cada 60 minuts si el testimoni no s'actualitza. Tinc l'actualització configurada a 1800 segons (30 minuts).

Pas 4: Python Script per a Pi2

Script Python per a Pi2
Script Python per a Pi2

Si mireu la foto, es tracta de que Pi2 mostri una notificació de possible moviment.

El guió de Pi2 és pràcticament el mateix que el Pi1, tret que el guió no detecta cap moviment. Pi2 només mostra o restableix els missatges de notificació del fill "notificationpi2". Com que aquesta és l'única diferència, ho explicaré a continuació.

  • Cada 10 segons, Pi2 marcarà "notificationpi2" per mostrar-lo. Si hi ha un missatge de notificació per mostrar, el Pi2 el mostrarà contínuament perquè l’usuari el vegi.
  • Només la intervenció de l'usuari en prémer el botó del joystick eliminarà i restablirà el missatge a la base de dades.

Pas 5: proveu el Pis

Image
Image
Posa a prova el Pis
Posa a prova el Pis

És hora de provar el Pis.

  • Executeu els scripts del Pis, respectivament.
  • Inicieu sessió a Firebase i aneu a la secció de base de dades de projectes.
  • Agiteu el Pi1, hauríeu de veure un signe d'exclamació vermell a la pantalla LED del Pi1. També heu de rebre un missatge SMS.
  • Comproveu la base de dades, les entrades d'alerta haurien de començar a aparèixer. "notificationpi2" també s'hauria d'actualitzar.
  • Mireu Pi2. També heu de desplaçar-vos a "!!!" Per esborrar aquest missatge de notificació, només cal que premeu el joystick. "notificationpi2" s'ha de restablir. Comproveu Firebase per confirmar-ho.
  • Si el Pi1 és massa sensible al moviment, augmenteu el llindar a més de 1G a l’escriptura Pi1.

Si tot va bé, els vostres scripts no fallaran. Ara teniu un sistema de notificacions que funciona. Un cop Pi1 detecti moviments o vibracions, rebreu una notificació de missatge SMS i una notificació visual LED a Pi2.

Pas 6: crear l'aplicació iOS de R-PiAlerts

Creació de l'aplicació iOS de R-PiAlerts
Creació de l'aplicació iOS de R-PiAlerts

És hora de construir l’app iOS. L'aplicació serà bastant senzilla. Tindrà un LoginViewController i un ItemsTableViewController. ItemsTableViewController mostrarà notificacions d'alerta del fill "alertes". També es poden esborrar les entrades de la base de dades de l'aplicació. Per estalviar-vos algun mal de cap, si teniu previst consultar tutorials en línia per a Firebase, assegureu-vos de cercar tutorials amb data posterior al març del 2016, ja que l'any passat hi va haver canvis importants. Qualsevol cosa abans del març del 2016 serà llegat. Estic interessat en els fitxers ràpids, reviseu els comentaris del codi. Si voleu un tutorial detallat sobre com construir una aplicació de Firebase que llegeixi la base de dades, consulteu el tutorial de Ray Wunderlich.

Configureu la descripció general del vostre projecte iOS

  • Creeu un projecte iOS de visualització única a Xcode.
  • Copieu l'identificador del paquet
  • Aneu al vostre projecte de Firebase al lloc web i creeu un fitxer info.plist amb l’identificador del paquet.
  • Afegiu el fitxer GoogleService-info.plist al vostre projecte. Aquesta informació.plist només funciona amb el projecte específic de Firebase que heu creat.
  • Tanqueu Xcode i instal·leu Firebase mitjançant Cocoapods. Assegureu-vos d’instal·lar Auth i Database.
  • Reinicieu Xcode i, a continuació, configureu AppDelegate.swift per a Firebase. Només cal 2 línies de codi.

    Importa Firebase un

    FIRApp.configure (). Opcionalment, Firebase té una característica de persistència que només requereix una línia de codi

    FIRDatabase.database (). PersistenceEnabled = true

  • Podeu trobar els passos d’instal·lació detallats al lloc web de Firebase

Com interactua l'aplicació amb la base de dades de Firebase:

  • L'aplicació haurà d'autenticar l'usuari.
  • Un cop autenticada, l'aplicació fa una instantània de la base de dades de Firebase i la desa com a objecte "Element".
  • Aquest objecte omplirà una matriu. Aquesta matriu s'utilitzarà per omplir la vista de taula.
  • Un observador observarà els canvis a la base de dades de Firebase i en crearà una instantània.
  • Un cop detectats els canvis, la matriu s'afegirà a la nova instantània.
  • A continuació, es tornarà a carregar Tableview per mostrar els canvis.

Esquema general sobre com crear l'aplicació

  • Feu un cop d'ull a la imatge de com es distribueix l'aplicació al creador d'interfícies de Xcode.
  • Creeu un ViewController al creador d’interfícies i apunteu la classe personalitzada a LoginViewController.swift.
  • Afegiu camps de text per al correu electrònic i la contrasenya. No oblideu activar "Entrada segura de text" al camp de la contrasenya. Afegiu un botó d'inici de sessió.
  • Enllaceu els camps de text i el botó a LoginViewController.swift. LoginViewController.swift gestionarà l'autenticació.
  • Afegiu un controlador de navegació al creador d'interfícies. Creeu un segue des del LoginViewController fins al Navigation Controller. Assegureu-vos de donar al seguidor un identificador.
  • Establiu la classe personalitzada de la nova vista de taula que s'inclou amb el controlador de navegació perquè apunti ItemsTableViewController.swift. També tinc 2 botons a ItemsTableViewController: tancar la sessió i un botó Afegeix. Enllaceu els botons a ItemsTableViewController.swift.
  • Respecte al codi LoginViewController.swift. L'usuari introduirà les credencials d'inici de sessió i Firebase retornarà un usuari. Si hi ha un usuari, realitzarà un segue amb l’identificador. (veure codi adjunt)
  • Afegiu la classe Item.swift (vegeu el codi adjunt)
  • Pel que fa al codi ItemsTableViewController, és un codi tableview bastant estàndard. Hi haurà un observador que supervisarà els canvis a la vostra base de dades desats com a instantània com a objecte Item. A continuació, l'objecte Item afegirà la matriu per omplir la vista de taula. El botó Afegeix defineix una entrada a la base de dades de Firebase perquè Pi1 pugui llegir-la i mostrar-la. Per a rialles, també he afegit codi (vegeu el codi adjunt)

Pas 7: proveu l'aplicació

Proveu l'aplicació
Proveu l'aplicació
Proveu l'aplicació
Proveu l'aplicació
Proveu l'aplicació
Proveu l'aplicació

Executeu la vostra aplicació

  • Inicieu la sessió i sacsegeu el vostre Pi1. Hauríeu de començar a veure noves notificacions d'alertes.
  • Toqueu el botó Afegeix i observeu com el vostre Pi1 mostra el vostre missatge.
  • Feu lliscar el dit cap a l’esquerra i consulteu les entrades “Alertes”.
  • Vols rebre massa notificacions ràpidament? ajusteu el llindar de l’acceleròmetre o augmenteu el temps de son a l’escriptura Pi1.

Pas 8: Conclusió

Conclusió
Conclusió
Conclusió
Conclusió

Increïble! Ara tenim Pis que pot detectar moviments i enviar-vos notificacions de moviments. A més, podeu gestionar el registre de missatges d’alerta amb el dispositiu iOS. És hora de desplegar el Pis. Poseu Pi1 al costat de la porta i Pi2 al voltant de la vostra zona de treball. La propera vegada que algú entri, podeu comprovar la situació. O millor encara, intenteu amagar-vos a Pi al cotxe amb una bateria. Obriu les portes unes quantes vegades, a veure què passa!

Això només és un començament de les possibilitats que podeu fer amb Raspberry Pi i Firebase. El SenseHat també inclou sensors ambientals, giroscopis i brúixola. Podeu configurar el Pis per registrar certs canvis a l’entorn. Voleu intensificar el joc? Quan el Pi detecti moviments, utilitzeu una càmera per capturar imatges i feu que el Pi us enviï les fotos. També intenteu utilitzar un algorisme de visió per computador per reconèixer les cares. si és una cara d'algú que coneixeu, podeu rebre una notificació. Diverteix-te!

Recomanat: