Tabla de contenido:

Monitoreo de temperatura ambiente controlada por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico: 7 pasos
Monitoreo de temperatura ambiente controlada por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico: 7 pasos

Video: Monitoreo de temperatura ambiente controlada por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico: 7 pasos

Video: Monitoreo de temperatura ambiente controlada por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico: 7 pasos
Video: Tutorial para Configurar un Sensor de Temperatura en una Raspberry Pi 2024, Noviembre
Anonim
Monitoreo de temperatura ambiente controlada por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico
Monitoreo de temperatura ambiente controlada por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico

Donde trabajo, hay una sala muy importante que alberga muchos ordenadores. La temperatura ambiente de esta sala debe ser muy fría para optimizar el rendimiento de estos sistemas. Se me pidió que creara un sistema de monitoreo que tenga la capacidad de enviar algún tipo de alerta a algunas personas que les notifique que algo anda mal con el aire acondicionado en esa habitación. El hardware para esta compilación, usé Raspberry pi y un sensor USB de temperatura y humedad. Para el monitoreo, utilicé Gnuplot para trazar tres gráficos de temperatura y crear una imagen de esos gráficos. Luego creé una página HTML dedicada que se alojará en la Raspberry pi para que las condiciones actuales, esas imágenes de salida de gnuplot, se puedan monitorear desde una página web dentro de nuestra red. Para alertar, opté por ir con Gmail. Encontré un código de ejemplo en una revista de usuarios de Linux. (Por supuesto, puede usar cualquier servidor de correo una vez que conozca las asignaciones de puertos necesarias). Para eso, creé una cuenta de correo electrónico de Gmail dedicada para estas alertas. También como una característica adicional, cuando se activa una alerta, adjunto un gráfico al correo electrónico para que la persona que recibe el correo electrónico pueda tener una idea de cuán drástico fue el aumento que provocó la alerta.

Paso 1: la configuración del hardware

La configuración del hardware
La configuración del hardware

No hay mucho para configurar el hardware. La Raspberry pi está ejecutando Raspian y el sensor de temperatura USB simplemente se conecta directamente a uno de los puertos USB. El consumo de energía de este sensor es mínimo y, como resultado, lo alimenté directamente desde la Raspberry pi. Sin embargo, para dispositivos alimentados por USB con un poco más de consumo de energía, recomendaría alimentarlos a través de un concentrador USB con alimentación y no directamente desde el puerto USB de la Raspberry pi. Una vez que el sensor de temperatura está encendido, proporciona una cadena en serie que contiene la temperatura y lecturas de humedad de las condiciones actuales. temperatura = 20,9 ° C humedad = 62,7% punto de rocío = 13,0 ° CA El script python analiza esta cadena y almacena los valores de temperatura y humedad en tres archivos de texto cada cinco minutos; archivos de texto diarios, de 24 horas y de 48 horas (las diferencias se discutirán más adelante en la sección HTML). A partir de estos archivos, Gnuplot generará los gráficos y posteriormente las imágenes del conjunto de datos en cada archivo. Antes de hablar sobre el script de Python, hablaré sobre la preparación de la Raspberry pi. Dado que la supervisión se realizará en línea, es necesario instalar un servidor web. Probé algunos de ellos en mi tiempo con la Raspberry pi, pero aunque es un poco grande, prefiero Apache. Para instalar Apache en su Raspberry pi, simplemente escriba: sudo apt-get install apache2 Le dará un mensaje antes de que se instale, presione "y" para sí y Apache se instalará unos minutos dependiendo de su Raspberry pi. hecho, debe instalar dos complementos de Python: python-serial y el complemento python-gnuplot. (Aunque me he dado cuenta de que las compilaciones recientes de Raspian tienen el estándar de complemento python-serial, pero solo para estar seguro). Para instalar los que escriba: sudo apt-get install python-serial python-gnuplot -ins se instalarán. Y con eso, la configuración del hardware está completa.

Paso 2: Configuración del software: configuración y destinatarios del correo electrónico

crear una dirección de correo electrónico Antes de que nos adentremos demasiado en el software, ahora sería un buen momento para crear una cuenta de Gmail desde la que enviar sus alertas por correo electrónico. (Este ejemplo usa GMail pero se puede usar cualquier servidor de correo una vez que conocemos la configuración del puerto smtp) El código Python es bastante sencillo pero las importaciones necesarias son críticas. Sin ellos nada funcionaría. From time import * import time import serial import smtplib import Gnuplot import os import sys Finalmente, la lista de correo. Por supuesto, tenemos que agregar los destinatarios del correo electrónico. Cada dirección de correo electrónico se guarda en una variable.

Paso 3: Configuración del software: configuración y análisis en serie

A continuación, miramos la configuración en serie, es solo una cuestión de configurar parámetros que coincidan con la salida en serie del sensor. El sensor emite una cadena en serie a 9600 8 N 1, que es un formato estándar. Una vez que se ha recibido la cadena, hay varias formas de analizar esta cadena en python y, posiblemente, de manera más confiable. La forma en que lo hago es buscar los caracteres "temporales" en la cadena de serie. Una vez localizados, es simplemente cuestión de leer los siguientes 46 caracteres en serie en una cadena. La cadena recopilada ahora se puede direccionar como elementos en una matriz. Los datos deseados se analizan de la cadena y se guardan en los tres archivos junto con su marca de tiempo correspondiente. Timestamp = strftime ("% d% b% Y% H:% M:% S", localtime ())

Paso 4: Configuración del software - Gnuplot

Configuración del software - Gnuplot
Configuración del software - Gnuplot
Configuración del software - Gnuplot
Configuración del software - Gnuplot
Configuración del software - Gnuplot
Configuración del software - Gnuplot

Gnuplot es una herramienta gráfica de línea de comandos. Una vez que haya descubierto los conceptos básicos, puede ser una herramienta bastante poderosa para la visualización gráfica de conjuntos de datos. Gnuplot puede trazar directamente desde un archivo de texto formateado y resulta que tenemos uno del paso de análisis anterior. Una vez que le indicamos a gnuplot en qué parte del archivo se ubican los datos podemos trazar los valores deseados. Voy a usar el tiempo en el eje X y nuestra temperatura en el eje Y. Trazar el tiempo de mi experiencia es lo más difícil, ya que tienes que obtener el formato de hora en gnuplot para que coincida con el formato del archivo de texto. Después de que todas las opciones de gráficos estén completas y según tus preferencias, Gnuplot puede crear una imagen de este gráfico. Esta será la imagen que usaremos en nuestra página web más adelante. Opté por una imagen-p.webp

Paso 5: Configuración del software: configuración de umbrales y envío por correo electrónico

El umbral para las alertas debe realizarse mediante prueba y error para su configuración. la habitación que alberga los sistemas no tiene ventanas, por lo que una vez que el aire acondicionado se detiene, puede calentarse mucho muy rápido. Inicialmente miré el conjunto de datos durante unos días y observé las variaciones de temperatura antes de decidir el valor de alerta de 30 grados C. Esto se establece como una variable dentro del scipt de Python. Puede que esto no parezca muy alto, pero una vez que se ha activado la alerta, aún desea darse tiempo para rectificar el problema antes de que se vuelva crítico.

Para simplificar, envío correos electrónicos individuales a la lista de correo. Dado que la lista de correo es corta, nunca me molesté en enviar un correo electrónico a varios destinatarios. Una cosa a tener en cuenta aquí, dado que estoy ejecutando este script como un trabajo cron cada 5 minutos, no desea enviar correos electrónicos cada 5 minutos una vez que se ha activado el umbral. Para evitar esto, escribo la fecha y la hora de la alerta en un archivo y verifico este archivo antes de enviar cualquier correo electrónico para ver si el sistema ya se encuentra en un estado de alerta. Una vez en estado de alerta, solo reenviará un correo electrónico cada hora después del primer disparador mientras el sistema esté en estado de alerta. De esa manera, Gmail no bloquea su correo electrónico para que no envíe demasiados correos electrónicos en un corto período de tiempo.

Paso 6: Configuración del software - HTML

El seguimiento de todo el sistema se realiza a través de una página web y para ello se necesita un script html muy básico. Las imágenes que creó Gnuplot simplemente utilizo las mismas dimensiones de la imagen. Creo que pasé por alrededor de 3 tamaños para estas imágenes que dieron el mejor ajuste en mi pantalla. Antes de crear el script html, creemos una carpeta para él. De forma predeterminada, la carpeta de alojamiento web se encuentra en / var / www /. Aunque el único propósito de esta Raspberry pi es monitorear esta sala y emitir alertas por correo electrónico, para un buen mantenimiento, creé una carpeta separada en la carpeta / var / www /. Dado que esta carpeta pertenece al usuario raíz, debe usar sudo para crear una carpeta en esta ubicación. sudo mkdir / var / www / temperature En este ejemplo usé temperatura como el nombre de la carpeta, pero puede usar cualquier nombre aquí, pero recuerde que tendrá que ingresarlo en la barra de direcciones para ver esta página. Esta ruta se almacena en una variable dentro del script de Python. Incluso en el caso de que la ubicación del alojamiento deba cambiarse o el script deba modificarse para otro sistema, simplemente se puede cambiar desde esta ubicación. Ahora podemos crear nuestro script html en esta carpeta recordando usar sudo enfrente de cualquier comando que usted quiero ejecutar aquí. Le recomendaría que nombre el script html "index.html" ya que esto simplificaría esto al intentar encontrar esta página. Lo fundamental es asegurarse de que el tamaño de la imagen sea el mismo que el tamaño de la imagen de Gnuplot., simplemente tienes que ingresar la dirección IP de la Raspberry Pi seguida de / temperature (o lo que sea que hayas llamado tu carpeta). Tengo varios sistemas en funcionamiento monitoreando diferentes cosas y todos producen una salida gráfica de sus resultados. Así que creé una página que tiene enlaces a todas estas páginas para no tener que preocuparme por ingresar la dirección cada vez que quiero acceder a estas páginas.

Paso 7: Estoy vivo…

He usado esto para monitorear la temperatura en una sala de computadoras, pero esto podría haber sido más o menos datos de cualquier fuente. Una vez que se puede almacenar en un archivo de texto y sabes que su formato, Gnuplot puede hacer el resto. Una cosa que agregué recientemente a este proyecto es enviar una especie de correo electrónico de "latido". Eso es el primer día del mes a las 9 am. Tengo un script que se ejecuta y envía un correo electrónico a la lista de correo para hacerles saber que el sistema está funcionando como debería y que todo está bien en la habitación.

Usando la lista de cronjob como:

Recomendado: