Usando un anemómetro con Raspberry Pi
Si te apetece medir la velocidad del viento mediante una Raspberry Pi, este es tu documento! Puede que estés pensando en montarte una estación metereológica y este es un tema importante, cierto? Usaremos un script y un anemómetro específico y súper rápido lo tendremos montado. A parte, como ya me conocéis, exportaré las medidas a una base de datos de MySQL para luego visualizarlo con Grafana!
Hay dos opciones, o te haces un anemómetro manualmente con huevos Kinder y te curras un script que te indique la velocidad del viento, o por 45€ te compras un anemómetro de Eltako y mediante un simple script de Python que ya está calibrado obtendrás la velocidad del viendo de forma exacta.
La conexion GPIO es super sencilla, el anemómetro dispone de 2 cables, uno lo conectaremos a tierra y el otro al Pin 3 (o GPIO02), da igual qué cable donde. Nos basamos que tenemos una Raspberry Pi con Raspbian instalado y los GPIO habilitados (sudo raspi-config…).
Nos descargamos este genial script de Patrick Rudolph de GitHub. Y probamos a ejecutarlo… y sencillo o qué?
Ahora cada uno que se lo modifique como le interese, si queréis pasar los metros por segundo a kilometros por hora y meter el resultado en una base de datos de MySQL, añadiremos al rededor de la línea 60 algo como:
[sourcecode]
…
viento_kmph = actual_windspeed_msec * 3.6 # Convertir metros por segundo a kilometros hora
print viento_kmph
if vuelta == 30: # Así cada 30 segundos lo mete en BD
vuelta = 0
db = MySQLdb.connect("DIRECCION_IP_MYSQL","USUARIO","CONTRASEÑA","BASE_DATOS")
cursor = db.cursor()
cursor.execute("""INSERT INTO viento (velocidad) VALUES (%s) """,( viento_kmph))
db.commit()
else:
vuelta = vuelta + 1
…[/sourcecode]
Sin olvidar añadir al inicio ‘import MySQLdb’ para cargar los módulos de MySQL de Python (sudo apt-get install python-mysqldb si es que no los tienes instalados). Y cada 30 segundos nos meterá la velocidad en la tabla viento de nuestra BD de MySQL, es una tabla muy tontorrona con 2 campos, uno de velocidad y otro de fecha que se completa automáticamente, si tienes necesidad este sería el codigo para crear la tabla de este mismo ejemplo:
[sourcecode]CREATE TABLE `viento` (
`velocidad` FLOAT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE=’latin1_swedish_ci’
ENGINE=InnoDB
ROW_FORMAT=COMPACT
;
[/sourcecode]
Y en Grafana, en un Dashboard, si creamos un Panel de tipo Graph, seleccionamos como Data Source nuestra conexión MySQL contra nuestra BD y añadimos una sencilla Query que nos pinte el viento, luego ya tuneamos la gráfica como más o menos nos guste, por si os orienta, la Query de esta gráfica:
[sourcecode]SELECT velocidad as value, "Velocidad" as metric, UNIX_TIMESTAMP(created_at) as time_sec FROM viento WHERE $__timeFilter(created_at) order by time_sec asc[/sourcecode]
Bueno, espero que os guste, poco a poco iremos metiendo más sensores a nuestra Raspberry Pi para montar una estación metereológica o lo que nos de la gana, vaya!