Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Monitoreo de temperatura ambiente controlado 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 tiene que 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 notificarán que algo anda mal con el aire acondicionado en esa habitación.
El hardware para esta construcción, usé Raspberry pi y un sensor de temperatura y humedad USB.

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 usar 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

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 se enciende el sensor de temperatura, proporciona una cadena en serie que contiene las lecturas de temperatura y humedad de las condiciones actuales.

temperatura =20,9 ° C humedad =62,7% punto de rocío =13,0 ° C

Un script de 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 discutir 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. He probado 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
y Apache se instalará unos minutos dependiendo de su Raspberry pi.

Una vez hecho esto, 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 plug-in python-serial, pero solo para estar seguro).

Para instalar los que escribe:

sudo apt-get install python-serial python-gnuplot

Una vez más, después de reconocer las indicaciones, se instalarán estos complementos.

Y con eso, la configuración del hardware está completa.

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

crear dirección de correo electrónico

Antes de adentrarnos 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 conozcamos la configuración del puerto smtp)

El código de Python es bastante sencillo, pero las importaciones necesarias son críticas. Sin ellos, nada funcionaría.

desde la hora de importación *
la hora de importación

importar serial

importar smtplib

importar Gnuplot

importar sistema operativo

importar 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.

from_address ="[correo electrónico protegido]"
to_address1 ="destinatario1.mail.com"

to_address2 ="destinatario2.mail.com"

username ="[correo electrónico protegido] @ gmail.com"

contraseña ="contraseña_de_correo_personalizada"

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

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 según 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.

Una vez que todas las opciones de gráficos estén completas y según sus 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 .png y, dado que quiero reemplazar la imagen anterior en la página web, cada imagen tiene el mismo nombre, por lo que esta línea de código no tiene que cambiar.

La configuración del tamaño de la imagen está vinculada a la optimización de la página html. Primero jugué con tamaños estándar y luego experimenté para hacer que la imagen se ajustara a mi pantalla. Para este proyecto, no estoy almacenando imágenes antiguas, por lo que el tamaño físico del archivo almacenado no es un factor importante en el precioso almacenamiento de Raspberry pi.

Aquí hay un fragmento de código para crear y almacenar la imagen del gráfico daily.png.

g =Gnuplot.Gnuplot (debug =debug)

g (‘cd" ‘+ ruta +‘ "‘)
g (‘establecer la hora de xdata’)

g (‘set timefmt"% d% b% Y% H:% M:% S "‘)

g (‘establecer formato x"% H:% M \\ n% d% b "‘)

g ("establecer título" Visualización de temperatura actual diaria "‘)

g ("desactivar la tecla")

g ('establecer cuadrícula') g ('establecer xlabel "Hora \\ nFecha" ‘)

g ('establecer rango y [15.0:35.0]')

g ("establecer ylabel" Temperatura "‘)

g ("al archivo de datos del conjunto le falta" NaN "‘)

g ("establecer tamaño png de terminal 800,400")

g (‘establecer salida" daily.png "‘)

g ("grafica" daily.dat "usando 1:($ 3) con líneas")

NOTA:La línea que dice g ("al archivo de datos del conjunto le falta" NaN ""), el propósito de esta línea es trazar un espacio en blanco en la gráfica. La variable "NaN" se escribe en el archivo si la secuencia de comandos de Python detecta algo extraño para una lectura determinada o una transmisión en serie.

Como puede ver en los tres gráficos anteriores, daily.png le brinda una visualización de la hora actual de los datos, mientras que 24_hour.png tiene la misma información mostrada en una escala de 24 horas. El gráfico 48_hour.png muestra los datos del sensor de las últimas 48 horas.

Para más detalles:Monitoreo de temperatura ambiente controlado por Raspberry Pi con salida de imagen Gnuplot y capacidad de alerta por correo electrónico


Proceso de manufactura

  1. Control de acceso con QR, RFID y verificación de temperatura
  2. Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
  3. Monitoreo de la temperatura ambiente con una Raspberry Pi y Nagios
  4. Leer temperatura con DS18B20 | Raspberry Pi 2
  5. Monitor de temperatura y humedad en el hogar (habitación) con gráfico basado en web - Raspberry Pi
  6. Monitoreo de temperatura en Raspberry Pi
  7. Medición de temperatura con RASPBERRY PI
  8. Sensor de temperatura Python y Raspberry Pi
  9. Monitoreo de la temperatura ambiente con Moteino's y Raspberry Pi
  10. Temperatura y humedad sencillas en Raspberry Pi
  11. Supervisión de la temperatura con Raspberry Pi