Monitorización Temperatura Rack (Raspberry)

Definitivamente dejé aparcado (nunca descarto volver a retomarlo) el tema de domotizar el piso, pero seguía teniendo ganas de cacharrear.

En el trabajo se planteó la necesidad de conocer la temperatura a la que se encontraban funcionando y al jefe no se le ocurrió otra cosa que preguntarme que que era capaz de hacer con una raspberry, que me escuchó hablar en su día de lo que quería hacer con la domótica.

Pa qué me preguntaría eso, automáticamente le pregunté que quería, que el pidiera y lo hacíamos, que sensores hay infinitos (no es que yo fuera a inventar la rueda) es sólo cuestión de adaptarlos a nuestras necesidades.

Me planteó que en un principio necesitaríamos la temperatura, entonces le dije que mejor que sólo temperatura usaríamos temperatura y humedad en 6 puntos arriba, medio, bajo de la puerta delantera y trasera de los rack y así nació este proyecto.

Mirando opciones me decidí por el DHT22, más preciso que el antiguo DHT11 que ya había usado anteriormente y la Raspberry por tema red, recogida de datos y envío a un servidor central, además de tener una web local que nos lo daba en plan “bonito” y nos hacía las gráficas.

Este primer proyecto es en modo “Simple”, y no deja de ser una versión muy muy alpha (porque no se puede llamar ni beta) pero si operativa del sistema.

Finalmente usé un sencillo script para rescatar la temperatura:

#!/usr/bin/python
import sys

import Adafruit_DHT

# Parse command line parameters.
sensor_args = { ’11’: Adafruit_DHT.DHT11,
’22’: Adafruit_DHT.DHT22,
‘2302’: Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print ‘usage: sudo ./temperatura.py [11|22|2302] GPIOpin#’
print ‘example: sudo ./temperatura.py 2302 4 – Read from an AM2302 connected to GPIO #4’
sys.exit(1)

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin, 3, 1)

if humidity is not None and temperature is not None:
print ‘{0:0.1f} {1:0.1f}’. format(temperature, humidity)
else:
print ‘Failed to get reading. Try again!’
sys.exit(1)

Con un simple fichero de configuración con este estilo:
# Fichero de configuracion de sensores
# [Nº de sendor] [Tipo de Sensor 11/22/2302] [Gpio Conectado]
1 22 25
2 22 24
3 22 19
4 22 21
5 22 20
6 22 16

Definía el número de sensor, el tipo (por si algún día había que usar otro) y el pin de la raspberry que estaba conectado.

Esto insertaba en la propia raspberry la temperatura y la humedad en un fichero rrd, además de almacenarlo en texto plano para que una web simple mostrara en tiempo real la temperatura y la gráfica para el histórico.

Quedan muchas más cosas por pulir y perfeccionar, y añadir otro tipo de sensores como los de puerta abierta que detectarán si se abre alguna de las puertas del armario, y algo más que hay en la recamara 😉

Estas son las imágenes de como quedó instalado y funcionando.

Raspberry

Sensores_2

sensor_1