Tabla de contenido:

R-PiAlerts: Cree un sistema de seguridad basado en WiFi con Raspberry Pis: 8 pasos (con imágenes)
R-PiAlerts: Cree un sistema de seguridad basado en WiFi con Raspberry Pis: 8 pasos (con imágenes)

Video: R-PiAlerts: Cree un sistema de seguridad basado en WiFi con Raspberry Pis: 8 pasos (con imágenes)

Video: R-PiAlerts: Cree un sistema de seguridad basado en WiFi con Raspberry Pis: 8 pasos (con imágenes)
Video: Мини ПК на Intel N100 - AC8-N, мощная безвентиляторная платформа, установка Home Assistant OS 2024, Noviembre
Anonim
Image
Image
R-PiAlerts: cree un sistema de seguridad basado en WiFi con Raspberry Pis
R-PiAlerts: cree un sistema de seguridad basado en WiFi con Raspberry Pis
R-PiAlerts: cree un sistema de seguridad basado en WiFi con Raspberry Pis
R-PiAlerts: cree un sistema de seguridad basado en WiFi con Raspberry Pis

Mientras trabaja en su escritorio, de repente escucha un ruido distante. ¿Alguien acaba de llegar a casa? Mi auto está estacionado frente a mi casa, ¿alguien entró en mi auto? ¿No le gustaría recibir una notificación en su teléfono o en su escritorio para poder decidir si investigar o no? ¡Pues no preguntes más! ¡R-PiAlerts está aquí!

¿Qué es R-PiAlerts? R-PiAlerts es un sistema de seguridad basado en Raspberry Pi3 construido alrededor de la nube de Firebase. Si se detecta movimiento, el sistema notificará al usuario de un posible robo con un mensaje de texto y una pantalla LED parpadeante (una especie de alarma visual silenciosa). Una vez que el usuario recibe una notificación, puede investigar. Todo el movimiento detectado se registrará en la base de datos de Firebase. Además de ver el registro de movimiento en un navegador web, el usuario también puede acceder al registro de movimiento a través de una aplicación de iOS. Decidí construir esto debido al reciente aumento de robos en vehículos y hogares en mi área.

¿Por qué el Pi3? Necesitaba algo pequeño que pueda detectar movimiento y funcionar con una batería si es necesario. Luego, puedo esconder la unidad detrás de una puerta o en un automóvil. Además, la unidad debe poder enviarme notificaciones o alertas. El Pi3 puede hacer todas estas cosas con el wifi integrado y su capacidad para funcionar con una batería USB. Otras razones por las que elegí el Pi3:

  • El Pi es relativamente económico
  • Es fácil de implementar y escalar
  • Es configurable desde el punto de vista del software
  • Posibilidad de utilizar pantallas y sensores. Este proyecto utilizará SenseHat
  • Operar sin cabeza (sin monitor, teclado o mouse)

Como funciona

  • Idealmente, el usuario necesitará 2 Raspberry Pis conectados a la base de datos de Firebase, pero una sola Pi también funcionará.
  • Utilizando SenseHat, el primer Pi (Pi1) detectará movimiento con el acelerómetro mientras que el segundo Pi (Pi2) mostrará notificaciones de movimiento.
  • Cuando el Pi1 detecta movimiento, hace 3 cosas

    • registro de movimiento en la base de datos
    • crear una entrada de notificación en la base de datos para que Pi2 la muestre
    • enviar al usuario un mensaje de texto notificando al usuario del movimiento.
  • Cuando Pi2 detecta una notificación para mostrar desde la base de datos, suceden dos cosas

    • La pantalla LED de Pi2 mostrará la notificación de forma continua
    • El usuario puede borrar la notificación presionando el botón de Pi2 SenseHat. Esto también borrará la entrada de notificación en la base de datos.
  • Con la aplicación de iOS, el usuario puede

    • acceder a la base de datos; leer y borrar el registro de movimiento
    • el usuario puede enviar Pi1 para mostrar un mensaje en la pantalla LED de Pi1.

Aplicaciones prácticas

  1. Si aparcas tu coche en la calle dentro del alcance de wifi. Conecte un paquete de baterías a Pi1 (vea la imagen). Esconde Pi1 en tu coche. Coloque Pi2 en un lugar fácilmente visible, como al lado de su escritorio (vea la imagen).
  2. Otra aplicación es colocar Pi1 en tu casa al lado de una puerta. El Pi es tan pequeño que la mayoría de la gente no lo notará, especialmente si está detrás del lado de las bisagras (ver foto). Luego, coloque su Pi2 en su escritorio de trabajo.
  3. ¿El perro se mete en un lugar de la casa que se supone que no debe hacerlo? Coloque un Pi1 en esa área. Asegúrese de poner el Pi en una caja resistente para que su perro no lo muerda.

Siempre que su Pis esté dentro del alcance de wifi, puede alertarle o notificarle de movimiento. Si no tiene un segundo Pi, puede usar Pi1 para detectar movimiento y recibir notificaciones por SMS a través de su teléfono celular.

Lista de materiales

  • Dos (2) Raspberry Pi 3 con Raspbian (Raspberry Pi 2 también funcionará con un dongle wifi)
  • Dos (2) SenseHats
  • Dispositivo Mac e iOS

Software necesario

  • Biblioteca de Pyrebase (conectando a Firebase)
  • Biblioteca SenseHat (para acceder al acelerómetro y la pantalla LED)
  • Biblioteca Twilio (para enviar SMS)
  • Python 3, integrado con la última Raspbian
  • Raspbian con IDLE
  • Xcode8 y Cocoapods en tu Mac
  • Voluntad de aprender y explorar

Nota al margen Esta no es la única solución de seguridad basada en Pi. Si tiene alguna idea, sugerencia o simplemente desea refactorizar mi código, ¡deje un comentario a continuación! =)

Paso 1: Configura las cuentas de Firebase y Twilio

Configurar cuentas de Firebase y Twilio
Configurar cuentas de Firebase y Twilio
Configurar cuentas de Firebase y Twilio
Configurar cuentas de Firebase y Twilio

En primer lugar, antes de empezar a jugar con nuestro Pis, necesitamos configurar Firebase y Twilio. Firebase es el backend como servicio de Google. Firebase incluye características tales como base de datos, mensajería en la nube, autenticación, almacenamiento, etc. Para este proyecto, solo necesitaremos usar la base de datos y la autenticación en tiempo real de Firebase. Se necesitará autenticación para leer y escribir en su base de datos de Firebase. Para configurar Firebase:

  1. Regístrese para obtener una cuenta gratuita de Firebase
  2. Ve a la consola. Crea un nuevo proyecto y dale un nombre.
  3. En el menú de la izquierda, haga clic en "Descripción general"
  4. Haga clic en "Agregar Firebase a su aplicación web", copie su APIKey y projectid (no la URL). El ID del proyecto se encuentra en las diferentes URL, como la base de datos:
  5. En el menú de la izquierda, haga clic en "Autenticación". Vaya a "Método de inicio de sesión" y habilite "Correo electrónico / Contraseña"
  6. En "Usuario", cree una nueva cuenta de usuario con la dirección de correo electrónico / contraseña que elija. Utilizará esta credencial para iniciar sesión en la base de datos.
  7. En el menú de la izquierda, vaya a "Base de datos".
  8. Esta es su base de datos. Está vacío ahora mismo. Cuando esté lleno, estará en formato JSON. La URL debe ser la misma que vio anteriormente.

Twilio permite a los desarrolladores enviar mensajes a sus clientes. Lo usaremos para enviar SMS a su teléfono cuando el Pi detecte movimiento. Twilio le proporcionará un número de teléfono para enviar SMS. Para configurar Twilio:

  1. Regístrese para obtener una cuenta gratuita en el sitio de Twilio
  2. Copie su accountSID y authToken
  3. Haga clic en "Restricciones de prueba" y seleccione "obtenga su primer número de teléfono de Twilio"
  4. Copia tu nuevo número de teléfono

Paso 2: configura tu Pis

Configure su Pis
Configure su Pis
Configure su Pis
Configure su Pis

Antes de que podamos comenzar a programar el Pis, necesitamos hacer alguna configuración. Asegúrese de tener una contraseña de inicio de sesión para su Pis. Primero conectaremos físicamente las placas SenseHat al Pis. A continuación, instalaremos las bibliotecas necesarias de SenseHat, Twilio y Pyrebase. La base de datos en tiempo real de Firebase se diseñó para dispositivos móviles o sitios web. Sin embargo, podemos leer y escribir la base de datos en la nube a través de la API Rest con una biblioteca auxiliar como Pyrebase.

Conecte el SenseHat Asegúrese de que los SenseHats estén conectados a su Pis. Si tiene un caso inusual, es posible que deba quitar el Pi antes de conectar el SenseHat.

Instalación de Bibliotecas Todas las instalaciones de la biblioteca se realizarán en la Terminal

  • Enciende tu Pis si aún no lo has hecho.
  • Al arrancar, obtienes este colorido arcoíris LED en tu SenseHat. (ver foto)
  • Vaya a la terminal y actualice / dist-upgrade, escriba:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Una vez realizadas las actualizaciones, escriba lo siguiente para instalar las bibliotecas SenseHat:

    sudo apt-get install sense-hat

  • Para instalar Pyrebase, escriba:

    sudo pip instalar pyrebase

  • Por último, instale Twilio

    sudo pip instalar twilio

Paso 3: secuencia de comandos de Python para Pi1

Como mencionamos anteriormente, Pi1 será la Pi que se utilizará para detectar movimiento. Los valores del acelerómetro de SenseHat se utilizarán para determinar el movimiento. Por lo tanto, el código para Pi1 estará alrededor del acceso a los valores de fuerza g del acelerómetro y el registro de los movimientos detectados en la base de datos de Firebase. Aquí hay una descripción general del flujo del proceso:

  • Si Pi1 detecta movimiento, agregará una entrada al niño de "alertas" en Firebase DB.
  • Pi1 también actualizará el niño "notifypi2" con un mensaje de notificación sobre el movimiento.
  • Pi2, luego lee "notifypi2" y muestra la notificación en su pantalla de matriz LED.

He incluido el script Pi1 Python para que lo sigas. Los comentarios en el script explican lo que hace el código.

Notas e información adicional para el script Pi1

  • Para la configuración de Firebase y Twilio. Complete las claves de API, ID, contraseñas, etc. correspondientes que copió de los pasos anteriores.
  • Con respecto a la autenticación de Firebase, para mayor seguridad, puede solicitar la entrada del usuario en lugar de codificar estas credenciales. Cada vez que escribimos o leemos de la base de datos, necesitaremos incluir

    usuario ['idtoken'] con th

    obtener (), empujar (), establecer () métodos.

  • La temperatura de la CPU es necesaria para que podamos intervenir en caso de que el Pi se sobrecaliente en un automóvil o en un entorno cerrado.
  • También tomamos el valor absoluto de las fuerzas G ya que no necesitamos conocer valores negativos. Solo necesitamos saber si existen fuerzas G.
  • La declaración If comprobará los valores del acelerómetro. Si las fuerzas G son mayores que 1 en cualquier dirección, Pi1 registrará el tiempo de movimiento y mostrará un signo de exclamación en su propia pantalla LED. También actualizará el elemento secundario "notifypi2". Cuando se actualice "notifypi2", Pi2 lo leerá y mostrará "!!!" en su pantalla LED para notificar al usuario de un posible movimiento / robo. Pi1 también enviará al usuario una notificación de movimiento por SMS.
  • Al usar el método push (), Firebase generará automáticamente un niño con una nueva entrada. Esto es necesario para que los datos de movimiento registrados sean únicos. el método set (), por otro lado, sobrescribirá los datos anteriores.
  • Es necesario un ciclo de 10 segundos para verificar la base de datos para que su Pi no solicite datos repetidamente de Firebase. Si continuamente envía spam a Firebase, Google cerrará su sesión en aproximadamente 10 minutos.
  • Firebase también expulsará al usuario cada 60 minutos si el token no se actualiza. Tengo la actualización configurada en 1800 segundos (30 minutos).

Paso 4: secuencia de comandos de Python para Pi2

Script de Python para Pi2
Script de Python para Pi2

Si miras la foto, es de Pi2 mostrando una notificación de posible movimiento.

La secuencia de comandos de Pi2 es prácticamente la misma que la de Pi1, excepto que la secuencia de comandos no detecta movimiento. Pi2 solo muestra o restablece los mensajes de notificación del niño "notifypi2". Dado que esa es la única diferencia, lo explicaré a continuación.

  • Cada 10 segundos, Pi2 marcará "notifypi2" para mostrar. Si hay un mensaje de notificación para mostrar, el Pi2 lo mostrará continuamente para que el usuario lo vea.
  • Solo la intervención del usuario de presionar el botón del joystick borrará y reiniciará el mensaje en el lado de la base de datos.

Paso 5: prueba el Pis

Image
Image
Prueba el Pis
Prueba el Pis

Es hora de probar el Pis.

  • Ejecute los scripts para Pis respectivamente.
  • Inicie sesión en Firebase y vaya a la sección de la base de datos de sus proyectos.
  • Agite su Pi1, debería ver un signo de exclamación rojo en la pantalla LED Pi1. También debería recibir un mensaje SMS.
  • Verifique la base de datos, las entradas de alerta deberían comenzar a aparecer. También debería actualizarse "notifypi2".
  • Eche un vistazo a Pi2. También debería desplazarse "!!!" Para borrar este mensaje de notificación, simplemente presione en el joystick. "notifypi2" debe reiniciarse. Revisa tu Firebase para confirmar.
  • Si encuentra que Pi1 es demasiado sensible al movimiento, aumente el umbral a más de 1G en el script Pi1.

Si todo va bien, sus scripts no fallarán. Ahora, tiene un sistema de notificación en funcionamiento. Una vez que Pi1 detecta movimientos o vibraciones, recibirá una notificación de mensaje SMS y una notificación LED visual en Pi2.

Paso 6: Creación de la aplicación IOS R-PiAlerts

Creación de la aplicación IOS R-PiAlerts
Creación de la aplicación IOS R-PiAlerts

¡Es hora de crear la aplicación para iOS! La aplicación será bastante simple. Tendrá un LoginViewController y un ItemsTableViewController. ItemsTableViewController mostrará notificaciones de alerta del niño "alertas". También se pueden eliminar las entradas de la base de datos de la aplicación. Para ahorrarte algunos dolores de cabeza, si planeas ver tutoriales en línea para Firebase, asegúrate de buscar tutoriales con fecha posterior a marzo de 2016, ya que hubo cambios importantes el año pasado en esa época. Todo lo anterior a marzo de 2016 será un legado. Si está interesado en los archivos rápidos, revise los comentarios en el código. Si desea un tutorial detallado sobre cómo crear una aplicación de Firebase que lea la base de datos, consulte el tutorial de Ray Wunderlich.

Configuración de la descripción general de su proyecto de iOS

  • Cree un proyecto de iOS de vista única en Xcode.
  • Copia el identificador del paquete
  • Vaya a su proyecto de Firebase en el sitio web y cree un archivo info.plist con el identificador del paquete.
  • Agrega el archivo GoogleService-info.plist a tu proyecto. Este info.plist solo funciona con el proyecto de Firebase específico que ha creado.
  • Cierre Xcode e instale Firebase a través de Cocoapods. Asegúrese de instalar Auth y Database.
  • Reinicie Xcode, luego configure su AppDelegate.swift para Firebase. Solo se necesitan 2 líneas de código.

    Importar Firebase un

    FIRApp.configure (). Opcionalmente, Firebase tiene una función de persistencia que solo requiere una línea de código.

    FIRDatabase.database (). PersistenceEnabled = true

  • Los pasos de instalación detallados se pueden encontrar en el sitio web de Firebase

Cómo interactúa la aplicación con Firebase Database:

  • La aplicación deberá autenticar al usuario.
  • Una vez autenticada, la aplicación toma una instantánea de la base de datos de Firebase y la almacena como un objeto "Elemento".
  • Dicho objeto llenará una matriz. Dicha matriz se utilizará para llenar la vista de tabla.
  • Un observador observará los cambios en la base de datos de Firebase y creará una instantánea.
  • Una vez que se detectan los cambios, la matriz se agregará desde la nueva instantánea.
  • Luego, Tableview se volverá a cargar para mostrar los cambios.

Esquema general sobre cómo construir la aplicación

  • Eche un vistazo a la imagen sobre cómo se presenta la aplicación en el creador de interfaces de Xcode.
  • Cree un ViewController en el generador de interfaces y apunte la clase personalizada a LoginViewController.swift.
  • Agregue campos de texto para correo electrónico y contraseña. No olvide activar "Entrada de texto segura" para el campo de contraseña. Agregue un botón de inicio de sesión.
  • Vincula los campos de texto y el botón al LoginViewController.swift. LoginViewController.swift se encargará de la autenticación.
  • Agregue un controlador de navegación en el generador de interfaces. Cree una transición desde el LoginViewController al controlador de navegación. Asegúrate de darle al segue un identificador.
  • Establezca la clase personalizada de la nueva vista de tabla que vino con el controlador de navegación para que apunte ItemsTableViewController.swift. También tengo 2 botones en ItemsTableViewController: Cerrar sesión y un botón Agregar. Vincula los botones a ItemsTableViewController.swift.
  • Respecto al código LoginViewController.swift. El usuario ingresará las credenciales de inicio de sesión y Firebase devolverá un usuario. Si un usuario está presente, realizará una transición con el identificador. (ver código adjunto)
  • Agregue la clase Item.swift (vea el código adjunto)
  • Con respecto al código de ItemsTableViewController, es un código de vista de tabla bastante estándar. Habrá un observador para monitorear los cambios en su base de datos guardados como una instantánea como un objeto Item. Luego, el objeto Item agregará la matriz para llenar la vista de tabla. El botón Agregar establece una entrada en la base de datos de Firebase para que Pi1 la lea y muestre. Para las risitas, también agregué código (ver código adjunto)

Paso 7: prueba la aplicación

Prueba la aplicación
Prueba la aplicación
Prueba la aplicación
Prueba la aplicación
Prueba la aplicación
Prueba la aplicación

¡Ejecute su aplicación

  • Inicie sesión y agite su Pi1. Debería comenzar a ver aparecer nuevas notificaciones de alerta.
  • Toque el botón Agregar y observe cómo su Pi1 muestra su mensaje.
  • Desliza el dedo hacia la izquierda para ver cómo se eliminan las entradas de "Alertas".
  • ¿Recibe demasiadas notificaciones en rápida sucesión? ajuste el umbral del acelerómetro o aumente el tiempo de reposo en el script Pi1.

Paso 8: Conclusión

Conclusión
Conclusión
Conclusión
Conclusión

¡Impresionante! Ahora tenemos Pis que puede detectar movimiento y enviarte notificaciones de movimientos. ¡Además de eso, puede administrar su registro de mensajes de alerta con su dispositivo iOS! Es hora de desplegar el Pis. Coloque Pi1 junto a su puerta y Pi2 alrededor de su área de trabajo. La próxima vez que venga alguien, ¡puedes ver la situación! O mejor aún, intente esconderse en Pi en su automóvil con una batería. ¡Cierra las puertas un par de veces, mira qué pasa!

Este es solo el comienzo de las posibilidades de lo que puede hacer con una Raspberry Pi y Firebase. El SenseHat también incluye sensores ambientales, giroscopios y una brújula. Puede configurar su Pis para registrar ciertos cambios en el entorno. ¿Quieres mejorar tu juego? Cuando su Pi detecte movimientos, use una cámara para capturar imágenes y haga que el Pi le envíe un mensaje de texto con las fotos. También intente utilizar un algoritmo de visión por computadora para reconocer rostros. Si es el rostro de alguien que conoces, ¡puedes recibir una notificación! ¡Divertirse!

Recomendado: