Sommario:

R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis: 8 passaggi (con immagini)
R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis: 8 passaggi (con immagini)

Video: R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis: 8 passaggi (con immagini)

Video: R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis: 8 passaggi (con immagini)
Video: Cómo usar NMAP para Descubrir HOSTS en Tu RED + WIRESHARK (en Kali Linux) - Escanea tu Red Local 😮✅ 2024, Dicembre
Anonim
Image
Image
R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis
R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis
R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis
R-PiAlerts: crea un sistema di sicurezza basato su WiFi con Raspberry Pis

Mentre lavori alla tua scrivania, improvvisamente senti un rumore lontano. Qualcuno è appena tornato a casa? La mia macchina è parcheggiata davanti a casa mia, qualcuno è entrato nella mia macchina? Non vorresti ricevere una notifica sul tuo telefono o alla tua scrivania in modo da poter decidere se indagare o meno? Beh, non fare più domande! R-PiAlerts è qui!

Cos'è R-PiAlerts?R-PiAlerts è un sistema di sicurezza basato su Raspberry Pi3 costruito attorno al cloud di Firebase. Se viene rilevato un movimento, il sistema avviserà l'utente di una potenziale effrazione con un messaggio di testo e un display LED lampeggiante (una sorta di allarme visivo silenzioso). Una volta che l'utente riceve una notifica, può indagare. Tutti i movimenti rilevati verranno registrati nel database Firebase. Oltre a visualizzare il registro dei movimenti su un browser web, l'utente può anche accedere al registro dei movimenti tramite un'app iOS. Ho deciso di costruirlo a causa del recente aumento delle effrazioni sia nei veicoli che nelle case nella mia zona.

Perché il Pi3? Avevo bisogno di qualcosa di piccolo in grado di rilevare il movimento e scaricare la batteria, se necessario. Quindi, posso nascondere l'unità dietro una porta o in un'auto. Inoltre, l'unità deve essere in grado di inviarmi notifiche o avvisi. Il Pi3 può fare tutte queste cose con il wifi integrato e la sua capacità di funzionare con una batteria USB. Altri motivi per cui ho scelto il Pi3:

  • Il Pi è relativamente poco costoso
  • È facile da implementare e scalare
  • È configurabile dal punto di vista del software
  • Capacità di utilizzare display e sensori. Questo progetto utilizzerà SenseHat
  • Funziona senza testa (senza monitor, tastiera o mouse)

Come funziona

  • Idealmente l'utente avrà bisogno di 2 Raspberry Pi collegati al database Firebase, ma funzionerà anche un singolo Pi.
  • Utilizzando il SenseHat, il primo Pi (Pi1) rileverà il movimento con l'accelerometro mentre il secondo Pi (Pi2) visualizzerà le notifiche di movimento.
  • Quando il Pi1 rileva il movimento, fa 3 cose

    • registra lo spostamento nel database
    • creare una voce di notifica nel database per visualizzare Pi2
    • inviare all'utente un sms di avviso all'utente del movimento.
  • Quando Pi2 rileva una notifica da visualizzare dal database, accadono due cose

    • Il display LED di Pi2 mostrerà continuamente la notifica
    • L'utente può cancellare la notifica premendo il pulsante di Pi2 SenseHat. Ciò cancellerà anche la voce di notifica nel database.
  • Con l'app iOS, l'utente può

    • accedere alla banca dati; leggere e cancellare il registro dei movimenti
    • l'utente può inviare Pi1 per visualizzare un messaggio sul display LED di Pi1.

Applicazioni pratiche

  1. Se parcheggi la tua auto in strada nel raggio d'azione del wifi. Collegare un pacco batteria a Pi1 (vedi foto). Nascondi Pi1 nella tua auto. Posiziona Pi2 in un posto facilmente visibile, ad esempio vicino alla tua scrivania (vedi foto).
  2. Un'altra applicazione consiste nel posizionare Pi1 in casa a lato di una porta. Il Pi è così piccolo che la maggior parte delle persone non lo noterà, specialmente se si trova dietro il lato della cerniera (vedi foto). Quindi posiziona il tuo Pi2 sulla scrivania.
  3. Cane che entra in un punto della casa non dovrebbe? Metti un Pi1 in quell'area. Assicurati di mettere il Pi in una scatola robusta in modo che il tuo cane non lo mastichi.

Finché i tuoi Pis sono nel raggio del wifi, possono avvisarti o avvisarti del movimento. Se non disponi di un secondo Pi, puoi semplicemente utilizzare Pi1 per rilevare i movimenti e ricevere notifiche SMS tramite il tuo telefono cellulare.

Distinta materiali

  • Due (2) Raspberry Pi 3 con Raspbian (Raspberry Pi 2 funzionerà anche con un dongle wifi)
  • Due (2) SenseHats
  • Mac e dispositivo iOS

Software necessario

  • Libreria Pyrebase (connessione a Firebase)
  • Libreria SenseHat (per accedere all'accelerometro e al display LED)
  • Libreria Twilio (per l'invio di SMS)
  • Python 3, integrato con l'ultima versione di Raspbian
  • Raspbian con IDLE
  • Xcode8 e Cocoapods sul tuo Mac
  • Volontà di imparare ed esplorare

Nota a margineQuesta non è l'unica soluzione di sicurezza basata su Pi. Se hai idee, suggerimenti o vuoi semplicemente rifattorizzare il mio codice, lascia un commento qui sotto! =)

Passaggio 1: configura gli account Firebase e Twilio

Configura account Firebase e Twilio
Configura account Firebase e Twilio
Configura account Firebase e Twilio
Configura account Firebase e Twilio

Prima di tutto, prima di iniziare a giocherellare con il nostro Pis, dobbiamo configurare Firebase e Twilio. Firebase è il backend come servizio di Google. Firebase include funzionalità come database, messaggistica cloud, autenticazione, archiviazione, ecc. Per questo progetto, dovremo solo utilizzare il database e l'autenticazione in tempo reale di Firebase. Sarà necessaria l'autenticazione per leggere e scrivere nel database Firebase. Per configurare Firebase:

  1. Registrati per un account Firebase gratuito
  2. Vai alla console. Crea un nuovo progetto e dagli un nome.
  3. Sotto il menu a sinistra, fai clic su "Panoramica"
  4. Fai clic su "Aggiungi Firebase alla tua app web", copia la tua APIKey e il projectid (non l'URL). L'ID progetto si trova nei diversi URL come il database:
  5. Nel menu a sinistra, fai clic su "Autenticazione". Vai su "Metodo di accesso" e abilita "Email/Password"
  6. In "Utente" crea un nuovo account utente con e-mail/password di tua scelta. Utilizzerai questa credenziale per accedere al database.
  7. Sotto il menu a sinistra, vai su "Database"
  8. Questo è il tuo database. È vuoto in questo momento. Una volta compilato, sarà in formato JSON. L'URL dovrebbe essere lo stesso di quello che hai visto prima.

Twilio consente agli sviluppatori di inviare messaggi ai propri clienti. Lo useremo per inviare SMS al tuo telefono quando il Pi rileva un movimento. Twilio ti fornirà un numero di telefono per inviare SMS. Per configurare Twilio:

  1. Registrati per un account gratuito sul sito di Twilio
  2. Copia il tuo accountSID e authToken
  3. Fai clic su "Limitazioni di prova" e seleziona "ottieni il tuo primo numero di telefono Twilio"
  4. Copia il tuo nuovo numero di telefono

Passaggio 2: imposta il tuo pis

Configura la tua pis
Configura la tua pis
Configura la tua pis
Configura la tua pis

Prima di poter iniziare a programmare il Pis, dobbiamo fare un po' di setup. Assicurati di avere una password di accesso per il tuo Pis. Per prima cosa collegheremo fisicamente le schede SenseHat al Pis. Successivamente, installeremo le librerie SenseHat, Twilio e Pyrebase necessarie. Il database in tempo reale di Firebase è stato progettato per dispositivi mobili o siti Web. Tuttavia, possiamo leggere e scrivere il database cloud tramite l'API Rest con una libreria di supporto come Pyrebase.

Collega il SenseHatAssicurati che i SenseHat siano collegati al tuo Pis. Se hai un caso insolito, potrebbe essere necessario rimuovere il Pi prima di collegare il SenseHat.

Installazione di librerieTutte le installazioni di librerie verranno eseguite nel Terminale

  • Avvia il tuo Pis se non l'hai già fatto.
  • All'avvio, ottieni questo colorato arcobaleno a LED sul tuo SenseHat! (vedi foto)
  • Vai al terminale e aggiorna/dist-upgrade, digita:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Al termine degli aggiornamenti, digitare quanto segue per installare le librerie SenseHat:

    sudo apt-get install sense-hat

  • Per installare Pyrebase, digita:

    sudo pip install pyrebase

  • Infine, installa Twilio

    sudo pip install twilio

Passaggio 3: script Python per Pi1

Come accennato in precedenza, Pi1 sarà il Pi che verrà utilizzato per rilevare il movimento. I valori dell'accelerometro del SenseHat verranno utilizzati per determinare il movimento. Pertanto, il codice per Pi1 riguarderà l'accesso ai valori di forza g dell'accelerometro e la registrazione dei movimenti rilevati nel database Firebase. Ecco una panoramica del flusso di processo:

  • Se Pi1 rileva un movimento, aggiungerà una voce al figlio "avvisi" nel DB Firebase.
  • Pi1 aggiornerà anche il bambino "notifypi2" con un messaggio di notifica relativo al movimento.
  • Pi2, quindi legge "notifypi2" e visualizza la notifica sul suo display a matrice di LED.

Ho incluso lo script Python Pi1 da seguire. I commenti nello script spiegano cosa sta facendo il codice.

Note e approfondimenti aggiuntivi per lo script Pi1

  • Per la configurazione di Firebase e Twilio. Inserisci le chiavi API, gli ID, le password e così via appropriati che hai copiato dai passaggi precedenti.
  • Per quanto riguarda l'autenticazione Firebase, per una maggiore sicurezza, puoi chiedere l'input dell'utente invece di codificare queste credenziali. Ogni volta che scriviamo o leggiamo dal database, dovremo includere

    utente['idtoken'] con th

    get(), push(), set() metodi.

  • La temperatura della CPU è necessaria per poter intervenire nel caso in cui il Pi si surriscaldi in un'auto o in un ambiente chiuso.
  • Prendiamo anche il valore assoluto delle forze G poiché non abbiamo bisogno di conoscere valori negativi. Abbiamo solo bisogno di sapere se ci sono forze G.
  • L'istruzione If controllerà i valori dell'accelerometro. Se le forze G sono maggiori di 1 in qualsiasi direzione, Pi1 registrerà il tempo di movimento e visualizzerà un punto esclamativo sul proprio display a LED. Aggiornerà anche il figlio "notifypi2". Quando "notifypi2" viene aggiornato, Pi2 lo leggerà e visualizzerà "!!!" sul suo display a LED per avvisare l'utente di un possibile movimento/effrazione. Pi1 invierà inoltre all'utente un SMS di notifica del movimento.
  • Quando si utilizza il metodo push(), Firebase genererà automaticamente un figlio con una nuova voce. Ciò è necessario in modo che i dati di movimento registrati siano unici. il metodo set() invece sovrascriverà i dati precedenti.
  • È necessario un ciclo di 10 secondi per controllare il database in modo che il tuo Pi non richieda ripetutamente dati da Firebase. Se invii continuamente spam a Firebase, Google ti disconnetterà in circa 10 minuti.
  • Firebase espellerà anche l'utente ogni 60 minuti se il token non viene aggiornato. Ho l'aggiornamento impostato su 1800 secondi (30 minuti).

Passaggio 4: script Python per Pi2

Script Python per Pi2
Script Python per Pi2

Se guardi la foto, cioè di Pi2 che mostra una notifica di possibile movimento.

Lo script di Pi2 è praticamente identico a Pi1 tranne che lo script non rileva il movimento. Pi2 visualizza o ripristina solo i messaggi di notifica dal figlio "notifypi2". Poiché questa è l'unica differenza, la spiegherò di seguito.

  • Ogni 10 secondi, Pi2 controllerà "notifypi2" per visualizzare. Se è presente un messaggio di notifica da visualizzare, il Pi2 lo visualizzerà continuamente in modo che l'utente lo veda.
  • Solo l'intervento dell'utente premendo il pulsante del joystick cancellerà e reimposterà il messaggio sul lato database.

Passaggio 5: prova il pis

Image
Image
prova il piscio
prova il piscio

È ora di testare il Pis.

  • Esegui gli script per rispettivamente Pis.
  • Accedi a Firebase e vai alla sezione del database dei tuoi progetti.
  • Scuoti il tuo Pi1, dovresti vedere un punto esclamativo rosso sul display LED del Pi1. Dovresti anche ricevere un messaggio SMS.
  • Controlla il database, le voci di avviso dovrebbero iniziare a essere visualizzate. Anche "notifypi2" dovrebbe essere aggiornato.
  • Dai un'occhiata a Pi2. Dovresti anche scorrere "!!!" Per cancellare questo messaggio di notifica, basta premere sul joystick. "notifypi2" dovrebbe essere reimpostato. Controlla il tuo Firebase per confermare.
  • Se trovi che il Pi1 è troppo sensibile al movimento, aumenta la soglia a un valore maggiore di 1G nello script Pi1.

Se tutto va bene, i tuoi script non andranno in crash. Ora hai un sistema di notifica funzionante. Una volta che Pi1 rileva movimenti o vibrazioni, riceverai una notifica di messaggio SMS e una notifica LED visiva su Pi2.

Passaggio 6: creazione dell'app IOS R-PiAlerts

Creazione dell'app IOS R-PiAlerts
Creazione dell'app IOS R-PiAlerts

È ora di creare l'app iOS! L'app sarà abbastanza semplice. Avrà un LoginViewController e un ItemsTableViewController. ItemsTableViewController visualizzerà notifiche di avviso dal figlio "avvisi". Si possono anche eliminare le voci del database dall'app. Per risparmiarti un po' di mal di testa, se hai intenzione di guardare i tutorial online per Firebase, assicurati di cercare tutorial datati dopo marzo 2016 poiché ci sono stati importanti cambiamenti l'anno scorso in quel periodo. Qualsiasi cosa prima di marzo 2016 sarà eredità. Se sei interessato ai file Swift, controlla i commenti nel codice. Se desideri un tutorial dettagliato su come creare un'app Firebase che legga il database, dai un'occhiata al tutorial di Ray Wunderlich.

Configura il tuo progetto iOS Panoramica

  • Crea un progetto iOS a vista singola in Xcode.
  • Copia l'identificatore del pacchetto
  • Vai al tuo progetto Firebase sul sito web e crea un file info.plist con l'identificatore del bundle.
  • Aggiungi il file GoogleService-info.plist al tuo progetto. Questo info.plist funziona solo con il progetto Firebase specifico che hai creato.
  • Chiudi Xcode e installa Firebase tramite Cocoapods. Assicurati di installare Auth e Database.
  • Riavvia Xcode, quindi configura il tuo AppDelegate.swift per Firebase. Richiede solo 2 righe di codice.

    Importa Firebase un

    FIRApp.configura(). Facoltativamente, Firebase ha una funzione di persistenza che richiede solo 1 riga di codice

    FIRDatabase.database().persistenceEnabled = vero

  • I passaggi di installazione dettagliati sono disponibili sul sito Web di Firebase

Come l'app interagisce con il database Firebase:

  • L'app dovrà autenticare l'utente.
  • Una volta autenticata, l'app acquisisce un'istantanea del database Firebase e la memorizza come oggetto "Elemento".
  • Detto oggetto riempirà un array. Tale array verrà utilizzato per riempire la tableview.
  • Un osservatore osserverà le modifiche al database Firebase e creerà uno snapshot.
  • Una volta rilevate le modifiche, l'array verrà aggiunto dalla nuova istantanea.
  • Tableview verrà quindi ricaricato per mostrare le modifiche.

Schema generale su come costruire l'app

  • Dai un'occhiata all'immagine su come è strutturata l'app nel generatore di interfacce di Xcode.
  • Crea un ViewController nel generatore di interfacce e punta la classe personalizzata a LoginViewController.swift.
  • Aggiungi campi di testo per email e password. Non dimenticare di attivare "Inserimento testo protetto" per il campo della password. Aggiungi un pulsante di accesso.
  • Collega i campi di testo e il pulsante a LoginViewController.swift. LoginViewController.swift gestirà l'autenticazione.
  • Aggiungi un controller di navigazione nel generatore di interfacce. Creare un segue da LoginViewController al controller di navigazione. Assicurati di dare al segue un identificatore.
  • Imposta la classe personalizzata della nuova vista tabella fornita con il controller di navigazione in modo che punti ItemsTableViewController.swift. Ho anche 2 pulsanti su ItemsTableViewController: Logout e un pulsante Aggiungi. Collega i pulsanti a ItemsTableViewController.swift.
  • Per quanto riguarda il codice LoginViewController.swift. L'utente inserirà le credenziali di accesso e Firebase restituirà un utente. Se è presente un utente, eseguirà un seguito con l'identificatore. (vedi codice allegato)
  • Aggiungi la classe Item.swift (vedi codice allegato)
  • Per quanto riguarda il codice ItemsTableViewController, è un codice tableview piuttosto standard. Ci sarà un osservatore per monitorare le modifiche al tuo database salvato come snapshot come oggetto Item. Quindi l'oggetto Item aggiungerà l'array per riempire la tableview. Il pulsante Aggiungi imposta una voce nel database Firebase per Pi1 da leggere e visualizzare. Per le risatine, ho anche aggiunto il codice (vedi codice allegato)

Passaggio 7: testare l'app

Prova l'app
Prova l'app
Prova l'app
Prova l'app
Prova l'app
Prova l'app

Esegui la tua app

  • Accedi e scuoti il tuo Pi1. Dovresti iniziare a vedere apparire nuove notifiche di avviso.
  • Tocca il pulsante Aggiungi e guarda il tuo Pi1 visualizzare il tuo messaggio.
  • Scorri verso sinistra, vedi che le voci "Avvisi" vengono rimosse.
  • Ricevi troppe notifiche in rapida successione? regolare la soglia dell'accelerometro o aumentare il tempo di sospensione nello script Pi1.

Passaggio 8: conclusione

Conclusione
Conclusione
Conclusione
Conclusione

Stupendo! Ora abbiamo Pis in grado di rilevare i movimenti e inviarti notifiche di movimenti. Inoltre, puoi gestire il registro dei messaggi di avviso con il tuo dispositivo iOS! È ora di schierare il Pis. Metti Pi1 vicino alla tua porta e Pi2 intorno alla tua area di lavoro. La prossima volta che entra qualcuno, puoi controllare la situazione! O meglio ancora, prova a nasconderti a Pi nella tua auto con un pacco batteria. Sbatti le porte un paio di volte, guarda cosa succede!

Questo è solo l'inizio delle possibilità su cosa puoi fare con un Raspberry Pi e Firebase. Il SenseHat include anche sensori ambientali, giroscopi e una bussola. Puoi configurare il tuo Pis per registrare determinate modifiche all'ambiente. Vuoi intensificare il tuo gioco? Quando il tuo Pi rileva i movimenti, usa una fotocamera per acquisire immagini e avere il testo Pi per le foto. Prova anche a utilizzare un algoritmo di visione artificiale per riconoscere i volti. se è il volto di qualcuno che conosci, puoi essere avvisato! Divertiti!

Consigliato: