Tabla de contenido:
- Paso 1: configurar el hardware
- Paso 2: Configura Dropbox
- Paso 3: preparación de la carpeta de la aplicación de Dropbox
- Paso 4: Introducción al código
- Paso 5: profundizar en el código
- Paso 6: uso de los archivos de parámetros de Dropbox
- Paso 7: Conclusión
Video: Monitoreo doméstico de Raspberry Pi con Dropbox: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Este tutorial le mostrará cómo crear un sistema de monitoreo doméstico simple y expandible usando una Raspberry Pi, una cámara web, algunos componentes eléctricos y su cuenta de Dropbox. El sistema terminado le permitirá solicitar y ver imágenes de forma remota desde su cámara web mientras también usa un sensor de temperatura digital estándar para monitorear la temperatura de su hogar a través de Internet, todo usando Dropbox.
Este fue el primer proyecto que pensé después de recibir una Raspberry Pi 2 modelo B. Mi objetivo era crear un sistema de monitoreo basado en Python que pudiera controlar y recibir datos a través de Internet. Si bien hay muchas formas diferentes de hacer esto, decidí usar Dropbox como la interfaz entre Pi e Internet, ya que tienen una API Python simple que le permite cargar, modificar y buscar archivos en carpetas específicas usando unas pocas líneas de código.
También quería que mi solución fuera liviana y simple, y evitar abarrotar mi Pi con bibliotecas y programas innecesarios. El componente de software de este proyecto consiste en una única secuencia de comandos de Python, lo que significa que puede continuar usando su Pi con normalidad, incluso cuando el sistema de monitoreo está en ejecución.
Para este proyecto necesitará:
Una Raspberry Pi. Cualquier modelo debería funcionar, utilicé un kit de inicio todo en uno, pero tal vez solo necesite la unidad central
Una cámara web USB. Compré un ADVENT AWC72015 barato, que resultó funcionar bien. Puede ser una buena idea consultar esta lista de cámaras web que están confirmadas para funcionar con la Pi. Tenga en cuenta que algunos requieren un concentrador USB con alimentación (el mío funciona bien sin él)
Una cuenta de Dropbox. Utilizo mi cuenta gratuita estándar ya que este proyecto no requiere mucho espacio de almacenamiento
Un sensor de temperatura digital DS18B20 y una resistencia de 4.7k. Puede comprar el sensor aquí, y también podría valer la pena comprar un paquete de varias resistencias
Algunos accesorios para la construcción de circuitos. Recomendaría usar una placa de pruebas y algunos cables de puente para que el proceso de construcción del circuito sea lo más fácil posible
[Si decide comprar alguno de estos productos, le agradecería mucho que acceda a los listados utilizando los enlaces anteriores; de esa manera, obtengo una pequeña parte de las ganancias sin costo adicional para usted]
Paso 1: configurar el hardware
El primer paso es asegurarse de que su Pi y los periféricos asociados estén configurados.
Primero, conecte su Pi a Internet. Esto es necesario para garantizar que el programa de supervisión pueda recibir sus solicitudes y cargar datos en Dropbox. Utilizo una conexión Ethernet para garantizar la confiabilidad, pero una conexión Wi-Fi también debería funcionar bien, al mismo tiempo que tiene la ventaja de una portabilidad mejorada. Si elige Wi-Fi, recomendaría este dispositivo USB para Pi.
A continuación, conecte su cámara web al Pi conectándolo a uno de los puertos USB. Si bien las instrucciones de mi cámara web Advent no decían explícitamente que funcionaría con Linux, todo lo que tenía que hacer era conectarla y arrancar la Pi. No fue necesaria ninguna instalación adicional. Otras cámaras web pueden variar. Puede verificar si su cámara web ha sido detectada por Linux usando el siguiente comando:
lsusb
En la imagen de arriba, mi cámara web aparece como '0c45: 6340 Microdia'
Finalmente, puede conectar su sensor de temperatura DS18B20 al encabezado GPIO de Pi. Utilizo mi tablero para facilitar el proceso de creación de circuitos, y le recomiendo que haga lo mismo, especialmente porque el DS18B20 requiere que se coloque una resistencia de 4.7k entre dos de sus tres pines. Este enlace proporciona un buen diagrama de cableado que muestra cómo se puede usar una placa de pruebas para conectarse a este sensor de temperatura.
La siguiente página del tutorial anterior también cubre los pasos necesarios para leer datos del DS18B20 y le muestra cómo verificar que esté funcionando. Es importante realizar estos pasos de configuración antes de poder utilizar el DS18B20 para este proyecto. También integraremos el script Python de muestra del tutorial en nuestro programa de monitoreo, por lo que es posible que desee echar un vistazo rápido a este código.
Anote también el número exclusivo de su DS18B20. Es el número que comienza con '28 - 'con el que se encuentra durante el tutorial de configuración. Deberá ingresarlo en el próximo programa Python para permitirle leer la temperatura.
Paso 2: Configura Dropbox
Para que su Pi interactúe con Dropbox, debe configurar una nueva aplicación de Dropbox. Esto le proporcionará los detalles necesarios para que su Pi realice la administración de archivos en línea usando Python. Suponiendo que haya creado una cuenta de Dropbox y haya iniciado sesión, puede crear una nueva aplicación utilizando la opción de menú 'Desarrolladores'. Consulte la imagen de arriba para ver un resumen de los pasos importantes.
Dentro del menú 'Desarrolladores', seleccione 'Mis aplicaciones', luego presione el botón 'Crear aplicación'. Para completar el formulario resultante, seleccione 'API de Dropbox' seguido de 'Carpeta de aplicaciones'. Finalmente, puede elegir un nombre único para su aplicación dentro de Dropbox. Haga clic en 'Crear aplicación'.
A continuación, se le dirigirá a la página de configuración de su aplicación dentro de Dropbox. Solo hay una cosa más que debe hacer aquí: genere un Token de acceso. Para hacer esto, desplácese hacia abajo hasta la sección 'OAuth 2' y en 'Token de acceso generado', haga clic en el botón 'Generar'.
Esto le presentará una larga cadena de caracteres que son necesarios para acceder a su cuenta de Dropbox usando Python. Tome nota de este token de acceso, ya que deberá especificarlo más adelante en su código. Si pierde el token, puede volver a la configuración de su aplicación haciendo clic en "Mis aplicaciones" en la sección "Desarrolladores" de Dropbox y generar un nuevo token.
Puede dejar las demás configuraciones como están. Para confirmar que su aplicación ha creado las carpetas necesarias en su cuenta de Dropbox, navegue a su página de inicio de almacenamiento y busque la carpeta 'Aplicaciones'. Dentro de esta carpeta debe haber una subcarpeta con el nombre que eligió para su nueva aplicación. Aquí es donde se colocarán todos los archivos de su sistema de monitoreo.
Paso 3: preparación de la carpeta de la aplicación de Dropbox
Una vez que haya configurado su aplicación de Dropbox, es hora de pensar en cómo usará la carpeta resultante en su cuenta de Dropbox para interactuar con su Pi. Esto se logra de manera bastante simple. La secuencia de comandos de Python que se ejecutará en Pi utilizará un subconjunto de comandos de la API de Dropbox para buscar y modificar los nombres de algunos archivos vacíos sin extensión en la carpeta de su aplicación. Llamaremos a estos archivos 'archivos de parámetros' ya que cada uno le permitirá controlar un aspecto diferente del comportamiento del sistema de monitoreo. La imagen de arriba muestra los cuatro archivos de parámetros que deben estar presentes en la carpeta de la aplicación de Dropbox para este proyecto. Crearlos es simple:
Comenzando con la carpeta de su aplicación completamente vacía, abra un programa de edición de texto en su computadora. Si bien esto se podría hacer usando el Pi, me resultó más fácil usar mi computadora portátil con Windows para esta fase de configuración. Una vez que el editor de texto está abierto (usé el Bloc de notas en Windows 7), todo lo que necesita hacer es guardar un archivo de texto completamente vacío en cualquier lugar de su computadora. Como nuestro primer ejemplo, crearemos el primer parámetro en la imagen del encabezado. Nombra el archivo 'delay = 10' cuando lo guardes.
En resumen, ahora debería tener un archivo de texto vacío almacenado en su computadora con el nombre 'delay = 10'. El archivo también tendrá una extensión '.txt' que puede ser visible o no.
El siguiente paso es cargar este archivo en la carpeta de la aplicación de Dropbox. Esto es como cualquier otra carga de Dropbox. Simplemente navegue a la carpeta de su aplicación y haga clic en 'Subir' y elija su archivo 'retraso = 10'.
Cuando este archivo se haya cargado, debe eliminar la extensión '.txt' que ahora debería estar visible en el nombre del archivo. Para hacer esto, simplemente haga clic derecho en el archivo y seleccione 'Cambiar nombre'. Elimina la parte '.txt' del nombre del archivo. Ahora debería quedarse con un archivo llamado 'delay = 10' sin extensión de archivo, como se muestra en la imagen del encabezado.
El archivo de parámetros de 'retardo' es uno de los cuatro que utilizará el programa de monitorización. Para crear los demás, simplemente puede copiar y cambiar el nombre de su archivo de 'retraso' haciendo clic derecho en él. Una vez que haya creado tres copias, nómbrelas como se muestra en la imagen del encabezado para que la carpeta de su aplicación sea idéntica a la que se muestra al comienzo de este paso.
Paso 4: Introducción al código
Como se discutió, el núcleo de nuestro sistema de monitoreo consistirá en un único script de Python que interactuará con Dropbox. Para que el programa de monitoreo esté activo, este script deberá ejecutarse en segundo plano en su Pi. Supongo que se describe con mayor precisión como un script 'demonio', lo que significa que puede configurarlo en ejecución y olvidarse de él. El script se adjunta a este paso, por lo que no tiene sentido repetir el código aquí. Ahora puede ser un buen momento para descargarlo y familiarizarse con él.
Antes de que pueda ejecutar el script, es importante asegurarse de tener instaladas las bibliotecas de Python relevantes. Los que necesita se enumeran en la parte superior del script adjunto. Son:
importar dropbox
import pygame.camera import os import time
La instalación de Python en mi Pi ya incluía pygame, os y time, por lo que el único que tenía que instalar era Dropbox. Hice esto usando sus instrucciones de instalación muy simples con pip.
Una vez que haya configurado sus bibliotecas, deberá editar las dos líneas superiores del script adjunto para que coincida con su token de acceso de Dropbox y el identificador único de su sensor de temperatura DS18B20. Estas son las dos líneas que deben editarse:
APP_ACCESS_TOKEN = '**********'
THERMOMETER_FILE = '/ sys / bus / w1 / devices / 28 - ********** / w1_slave'
Simplemente reemplace los **** con los valores correctos. En este punto, ¡ya está listo para comenzar a usar el programa de monitoreo! En lugar de simplemente saltar, le recomiendo que continúe con el siguiente paso para obtener una descripción general del código.
IMPORTANTE: cuando ejecuta este script, desea que se ejecute en segundo plano para que a) pueda continuar usando el Pi, yb) cuando cierre su sesión SSH, el script continuará ejecutándose. Este es el comando que uso cuando ejecuto el script:
nohup python DropCamTherm.py y
Esto logra tres cosas: ejecutará el script ('python DropCamTherm.py'), devolverá el control a la línea de comando inmediatamente para que pueda continuar usando Pi ('&'), y enviará salidas de Python que normalmente se muestra en la línea de comando en un archivo llamado 'nohup.out'. Esto se puede leer con un editor de texto de Linux (mi favorito es nano) y se creará automáticamente en el directorio desde el que se ejecuta el script.
Paso 5: profundizar en el código
Cuando abra el script, notará que consta de tres funciones junto con un bloque de código que implementa estas funciones cuando se ejecuta el script. Las funciones utilizan la API de Dropbox y acceden al archivo de registro de temperatura del DS18B20 para escuchar los comandos de Dropbox y cargar la última lectura de temperatura. A continuación se muestra una descripción general de lo que hacen las funciones y cómo se utilizan para hacer que funcione el sistema de monitoreo:
- poll_parameter ():
Esta función muestra el propósito de los archivos de parámetros de Dropbox que creamos en el paso 3. Busca en la carpeta de la aplicación de Dropbox un archivo que contenga el texto 'param ='. Luego extrae el texto después del '=' e intenta convertirlo en un número entero. Puede ver que esto nos permite controlar el programa agregando números relevantes al final de los archivos de parámetros manualmente. El siguiente paso contendrá un breve manual de instrucciones que le mostrará cómo utilizar cada uno de los archivos de parámetros para controlar un aspecto del programa.
- set_parameter ():
Esta función permite al programa cambiar el nombre de un archivo de parámetros desde Python. Lo hace en algunas ocasiones, principalmente para reducir la necesidad de un cambio de nombre manual excesivo de los archivos.
- set_latest_temp ():
Esta función hace uso de set_parameter () para cargar la última temperatura en la carpeta de la aplicación de Dropbox agregándola al archivo de parámetros de 'temperatura'. La función lee la última temperatura del archivo de registro del DS18B20 (que está disponible en Linux en la ruta indicada por la variable THERMOMETER_FILE).
La parte final del programa contiene el código que se ejecutará cuando se ejecute el script. Después de algunos pasos de configuración requeridos para el sensor DS18B20, abre una sesión de Dropbox usando su token de acceso y usa pygame para buscar su cámara web. Si se encuentra una cámara web, ingresará a un bucle donde usa poll_parameter () para extraer información de Dropbox y actuar en consecuencia.
IMPORTANTE: Notará la siguiente línea de código:
cam = pygame.camera. Camera (cam_list [0], (864, 480))
… Esto intenta crear una interfaz de cámara utilizable desde la primera cámara web que detecta pygame. Es posible que deba cambiar la resolución para que coincida con su cámara web. Experimente con varios valores para encontrar cuál funciona mejor.
Paso 6: uso de los archivos de parámetros de Dropbox
Entonces, ahora debería tener un script de trabajo que, cuando se ejecute usando las instrucciones del paso 4, permitirá que su Pi comience a monitorear la carpeta de la aplicación para sus entradas. En su primera ejecución, la carpeta de la aplicación debe contener los siguientes archivos de parámetros:
retraso = 10
exitprogram = 0 imagerequest = 0 temperatura = 0
La interacción con el programa se logra cambiando manualmente el nombre de los archivos de parámetros a través de Dropbox. Para hacer esto, simplemente haga clic derecho en uno de los archivos y seleccione 'renombrar'. Cada archivo de parámetros tiene una función diferente:
- demora:
Este archivo le dice al programa de monitoreo cuántos segundos esperar entre cada iteración del ciclo de monitoreo. Cuando sé que no interactuaré mucho con el programa, lo configuro en 60 o 120. Cuando sé que quiero solicitar datos del Pi con frecuencia, lo configuro en 10.
- Salir del programa:
Debe establecerse en 1 o 0. Si el programa detecta que está establecido en 1, finalizará el script. Si lo configura en 1 y el script se cierra, deberá iniciar sesión en el Pi nuevamente para iniciarlo de nuevo. Este parámetro existe para que pueda finalizar correctamente el programa de monitoreo cuando ya no necesite que se esté ejecutando (por ejemplo, si ha regresado a casa y ya no desea monitorear la cámara web de forma remota).
- solicitud de imagen:
Este es quizás el parámetro más importante. Esto debe establecerse en 1 o 0. Si el programa detecta que está configurado en 1, solicitará una imagen de la cámara web y la cargará en la carpeta de la aplicación (con el título 'image.jpg'). Si existe otro 'image.jpg', lo sobrescribirá.
- temperatura:
Esta es la lectura de temperatura DS18B20 establecida por la función set_latest_temp (). Nunca debería necesitar editar este archivo de parámetros; el programa lo configura automáticamente.
Tenga en cuenta que si establece 'exitprogram' o 'imagerequest' en 1, el programa los devolverá automáticamente a 0 antes de ejecutar el código relevante. Esto es por conveniencia. También puede notar que el código contiene muchos bloques "probar" y "excepto" que rodean muchas de las funciones críticas. Esto es para garantizar que el script no genere excepciones (y por lo tanto deje de ejecutarse) si algo sale mal (como un problema de conectividad a Internet que impide el acceso a Dropbox).
Paso 7: Conclusión
Este proyecto ha presentado una forma de controlar una Raspberry Pi usando Python y Dropbox. Si bien el hardware utilizado en este proyecto es un sensor de temperatura y una cámara web USB, existen muchas otras aplicaciones para este método de controlar la Pi. De hecho, cualquier componente de hardware al que se pueda acceder a través de GPIO se puede controlar mediante una estructura de programa similar, lo que hace que el sistema sea muy fácil de expandir.
Como siguiente paso, también puede usar una biblioteca GUI como Tkinter junto con la API de Dropbox para crear un programa cliente que le permita modificar los archivos de parámetros sin siquiera tener que iniciar sesión en Dropbox.
Espero que este tutorial haya sido claro, y si tienes alguna pregunta o quieres que te aclare algo, ¡publica un comentario!
Recomendado:
Sistema de monitoreo de mascotas con Arduino y Raspberry Pi: 19 pasos (con imágenes)
Sistema de monitoreo de mascotas con Arduino y Raspberry Pi: Recientemente, mientras estábamos de vacaciones, nos dimos cuenta de la falta de conexión con nuestra mascota Beagle. Después de investigar un poco, encontramos productos que presentaban una cámara estática que permitía monitorear y comunicarse con su mascota. Estos sistemas tenían ciertos beneficios b
Monitoreo de temperatura y humedad con Raspberry Pi: 6 pasos (con imágenes)
Monitoreo de temperatura y humedad con Raspberry Pi: Se acerca el verano, y quienes no tengan aire acondicionado deben estar preparados para controlar la atmósfera en interiores manualmente. En esta publicación, estoy describiendo la forma moderna de medir los parámetros más importantes para el confort humano: temperatura y humedad. T
Nueva capa de sensor IOT inalámbrico para el sistema de monitoreo ambiental doméstico: 5 pasos (con imágenes)
Nueva capa de sensor IOT inalámbrico para el sistema de monitoreo ambiental doméstico: este Instructable describe una capa de sensor IOT inalámbrico de bajo costo que funciona con baterías para mi Instructable anterior: LoRa IOT Home Environmental Monitoring System. Si aún no ha visto este Instructable anterior, le recomiendo leer la introducción
Controlador Arduino HRV (Intercambiador de aire doméstico) con economizador de aire: 7 pasos (con imágenes)
Controlador Arduino HRV (Intercambiador de aire doméstico) con economizador de aire: Controlador Arduino HRV con economizador de aire Así que mi historia con este proyecto es que vivo en Minnesota y mi placa de circuito está frita en mi LifeBreath 155Max HRV. No quería pagar los $ 200 por uno nuevo, siempre quería algo con un economizador de aire sin
Enrutador doméstico inalámbrico con medidor de utilización analógica: 5 pasos (con imágenes)
Enrutador doméstico inalámbrico con medidor de utilización analógica: Crecí en y alrededor de barcos haciendo telares de cableado y paneles de control, y tengo una colección de medidores & diales que normalmente se encontrarían conectados a pequeños motores diesel marinos. Hoy trabajo como diseñador construyendo interfaces para redes