Midiendo nuestro consumo eléctrico con una Raspberry Pi

Siguiendo con documentos de cosas curiosas que podemos hacer con una Raspberry Pi, algo muy sencillo de conseguir es por ejemplo medir el consumo eléctrico de lo que queramos, en este documento veremos cómo conectar a una Raspberry Pi unos sensores no invasivos de corriente y medir el gasto de nuestro hogar, ya que la conectaremos al cuadro eléctrico de nuestra casa! Exportaremos las métricas a una base de datos de MySQL y luego con Grafana crearemos un panel donde podremos ver de una manera muy intuitiva en que gastamos y cuánto!

 

Bien, ¿qué necesitamos para seguir monitorizando o dando un toque de domotica a nuestro Hogar? Personalmente lo más económico que encontré y que sea interesante, es ponerle un pequeño HAT a la Raspberry, os recomiendo del fabricante LeChacal ya que tiene diferentes HAT que cumplirán cualesquiera sean nuestras necesidades, ya que a ellos podremos conectarles desde 1 sensor no intrusivo hasta 8, depende el HAT que queramos, claro cada más sensores acepte es más caro, pero creo que el precio es más que asumible, vaya… Y si queremos meter más sensores no intrusivos pues montamos tantas HAT como necesitemos una sobre otra! Así que:

 

Os recomiendo repasar esta lista de sensores para que cada un coja el que más le interese: http://lechacal.com/wiki/index.php/Main_Page

El más barato, para 3 sensores, unas 12 libras: http://lechacal.com/wiki/index.php/RPICT7V1_v2.0. Recordar a la hora de comprarlo que el output sea en formato CSV, ya lo veréis a la hora de comprarlo, pero tenerlo en cuenta!

Luego ya sería adquirir tantos sensores no intrusivos como necesitemos: SCT-013-000. Los tenemos en la misma web o en Amazon o eBay por unos 4€ cada uno.

 

Conectaremos pues el HAT a la Raspberry Pi y los sensores que tengamos; en las pinzas de los sensores tendremos en cuenta de pasar únicamente un cable, eh! Y nada, con eso podremos saber el consumo en Vatios (W) que hace cada ‘cosa’ que tengamos pinzada. Podremos medir de cualquer aparato eléctrico, así como lo dicho, poner esto en el cuadro eléctrico de casa y medir los consumos desde ahi, si lo tenemos bien etiquetado, no nos costará medir el consumo General o el del Alumbrado, consumos de los enchufes, de la nevera, horno, lavadora, acuario… yo que sé!

 

Con este comando podremos conectarnos por serie al HAT y ver qué escupe. Veréis que dependiendo del HAT que hayáis adquirido podréis ver la corriente, el voltaje o la temperatura, que es lo que os escupirá este comando separado en comas.

stty -F /dev/ttyAMA0 raw speed 38400
cat /dev/ttyAMA0

 

Ahora, lo que haremos será tratar esos outputs (en formato CSV), en mi ejemplo si os fijáis devuelve los watt de 7 sensores no intrusivos, cada uno de ellos lo tengo conectado a un cable de mi cuadro eléctrico, al ver el código veréis qué corrientes mido (General, Enchufes de unas estufas, el Lavavajillas y la Lavadora, el Alumbrado, el Horno y la Vitrocerámica, y los enchufes. Después exporto dicha info a una tabla que he creado previamente en MySQL, así que necesitaremos tener MySQL instalado en alguna máquina (o lo instalamos en la propia Pi) y crearemos ahí la BD y la Tabla que queramos, os paso mi ejemplo que tiene una columna por cada sensor:

CREATE TABLE `corriente` (
`general` FLOAT NULL DEFAULT NULL,
`estufas` FLOAT NULL DEFAULT NULL,
`lavavajillas_lavadora` FLOAT NULL DEFAULT NULL,
`alumbrado` FLOAT NULL DEFAULT NULL,
`horno_vitro` FLOAT NULL DEFAULT NULL,
`enchufes` FLOAT NULL DEFAULT NULL,
`fecha` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

 

Y nada, ya sólo nos queda tener este maravilloso script en python que nos va a ir llenando la Tabla ‘corriente’ de nuestra Base de datos! Creamos dicho script:

corriente.py

#!/usr/bin/python
import serial
import urllib
import json
import MySQLdb

ser = serial.Serial('/dev/ttyAMA0', 38400)

response = ser.readline()
z = response.split(",")
if len(z)>=7:
 print "General: %s Watts" % z[0]
 print "Estufas: %s Watts" % z[1]
 print "Lavavajillas y Lavadora: %s Watts" % z[2]
 print "Alumbrado: %s Watts" % z[3]
 print "Horno y vitro: %s Watts" % z[4]
 print "Enchufes: %s Watts" % z[5]

general_valor=z[0]
estufas_valor=z[1]
lavavajillas_lavadora_valor=z[2]
alumbrado_valor=z[3]
horno_vitro_valor=z[4]
enchufes_valor=z[5]

db = MySQLdb.connect("localhost","root","xxxxxx","NOMBRE_BASE_DATOS")
cursor = db.cursor()

cursor.execute("""INSERT INTO corriente (general,estufas,lavavajillas_lavadora,alumbrado,horno_vitro,enchufes) VALUES (%s,%s,%s,%s,%s,%s) """, (general_valor,estufas_valor,lavavajillas_lavadora_valor,alumbrado_valor,horno_vitro_valor,enchufes_valor))
db.commit()

 

Y listo! Lo que nos queda es programar que se ejecute este script con el intervalo que nos interese, ejecutamos ‘crontab -e‘ y añadimos lo siguiente para que se ejecute por ejemplo cada minuto:

* * * * * python /home/pi/corriente.py

 

Que sería la ginda para acabar? Pues lo de siempre, gracias a Grafana, podremos de una manera super sencilla y rápida trabajar cualquier dato, como en este ejemplo una tabla de MySQL. Si no tienes Grafana montado repasa este documento, y tras ello, podrás crear un Dashboard donde añadirás lo que quieras. Te paso algunos ejemplos:

Gráfica donde añadimos la metrica y nos la pinte, en este caso el consumo de los enchufes:

SELECT enchufes as value, "Enchufes" as metric, UNIX_TIMESTAMP(fecha) as time_sec FROM corriente  WHERE $__timeFilter(fecha) order by time_sec asc

Gráfica donde añadimos la métrica del consumo del Alumbrado:

SELECT alumbrado as value, "Alumbrado" as metric, UNIX_TIMESTAMP(fecha) as time_sec FROM corriente  WHERE $__timeFilter(fecha) order by time_sec asc

Con el plugin Singlestat podremos mostrar por ejemplo el gasto actual de la General:

SELECT general FROM corriente order by fecha desc limit 1

 

Espero que os haya sido de utilidad, ser libres de modificar y personalizaroslo como lo necesitéis! Como os voy diciendo en otros Posts, estas chorradillas las estoy usando en un espejo de esos mágico o MagicMirror, donde me pongo guapo a las mañanas y tengo cierta info, un día os lo cuento todo, pero por ahora, poco a poco! Si has llegado hasta aquí gracias por leerme! y a todos los que compartís en redes sociales!

 

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!

Últimos Posts de: Héctor Herrero (ver todos)