Midiendo nuestro consumo eléctrico con una Raspberry Pi


Con la crisis actual energètica se hace imprescindible optimizar nuestro consumo de la forma más precisa posible, y desde luego no se puede monitorizar nada que no se pueda medir. Además es interesante saber que muchos analistas opinan que se puede llegar a reducir desde un 15% en adelante nuestro consumo global, así que lo primero es obtener el hardware necesario para monitorizar nuestro consumo.

¿Y qué necesitamos para monitorizar dando un toque de domótica a nuestro Hogar? Quizás lo más económico sea poner un pequeño HAT a la Raspberry del fabricante LeChacal (por cierto con domicilio en Edimburgo), pues cuenta con diferentes escudos que cumplirán cualesquiera sean nuestras necesidades, ya que a ellos podremos conectarles desde 1 sensor no intrusivo hasta 8, dependiendo del HAT que queramos cuanto más sensores acepte dicho escudo mayor será su coste (pero adelantamos que el precio es más que asumible). Además este fabricante no ofrece la posibilidad de apilar de modo que si queremos meter más sensores no intrusivos, montamos tantas HAT como necesitemos una sobre otra! Así que recomendamos repasar esta lista de sensores para que cada cual escoja el que más le interese: http://lechacal.com/wiki/index.php/Main_Page siendo el más barato apto para 3 sensores y cuesta unas 12 librashttp://lechacal.com/wiki/index.php/RPICT7V1_v2.0 y 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.

El hardware

La serie RPICT es una gama de escudo (o también llamados sombreros ) para la Raspberrypi como sensor de corriente CA (CT) y de temperatura. Todas las placas RPICT se conectan al conector GPIO y proporcionan datos a través del puerto serie . Un microcontrolador programable Arduino (ATtiny84 o Atmega328) opera la placa. El código fuente del microcontrolador está disponible gratuitamente.

Como veremos hay varias opciones para registrar y ver los datos. Los más utilizados son Emoncms e Influxdb con Grafana. También es posible usar su propio script de Python. Algunas de las aplicaciones de este hw: Medidor inteligente Raspberrypi, Internet de las Cosas, Registro de datos, Monitoreo en tiempo real, Automatización del hogar, Rpi,

Los escudos disponibles son:

  • RPICT3T1 – 3 CT 1 Temperatura.
  • RPICT3V1 – 3 CT 1 Voltaje CA.
  • RPICT4T4 – 4 CT 4 Temperatura.

Placas apilables Raspberrypi V 2 y 3

  • RPICT4V3 versión 2 y 3 – 4 CT 3 Voltaje CA.
  • PICT7V1 Versión 4
  • RPICT7V1 Versión 5
  • RPICT4V3 Versión 5
  • RPICT8 Versión 5
  • RPICT4T4 Versión 5
  • RPICT4W3T1

Solo temperatura : RPI_T8 – 8 temperaturas.
Raspberrypi para TC de salida 5A

  • RPI LCT3V1 – 3CT 1 Tensión para TC grandes.
  • RPI LCT4V3 – 3CT 3 Voltaje para TC grandes.
  • RPI_LCT8 – 8CT para CT grandes.

Raspberry pi cero

  • RPIZ_CT3V1 – 3 CT 1 Voltaje CA. Raspberrypi Cero.
  • RPIZ_CT3T1 – 3 CT 1 Temperatura. Raspberrypi Cero.
  • RPIZCT4V3T2 – Rpi Cero 4 CT 3 Voltaje CA 2 Temperatura (RTD y DS18B20)

con relés

  • RPICT3T1_RLY2 – 3 TI 1 Temperatura 2 Relés
  • RPICT3V1_RLY2 – 3 CT 1 Voltaje CA 2 Relés

Este es el resumen del hw disponible por este fabricante:

Model#CT#Volt*#TempStackable
RPICT3T131No
RPICT3V131No
RPICT4T444No
RPICT4V3_v2.043Yes
RPICT7V1_v2.071Yes
RPICT88Yes
RPIZCT4V3T1431n/a
RPI_T88Slave 1 only
RPI_LCT4V343One board stack only
RPI_LCT88One board stack only

Uso por primera vez

Inserte la placa RPICT en Raspberrypi GPIO como se muestra arriba. La imagen es una RPI3B pero todas las demás Raspberrypi también son compatibles (las placas RPICT obtienen energía de Raspberrypi). Simplemente conecte el adaptador de corriente USB a la Raspberrypi como de costumbre.

Estas placas se venden lista para funcionar con el firmware y la configuración ya cargados. Asegúrese de probar todos los sensores con el comando cat antes de cambiar la configuración.

Primera configuración RPICT

Cualquier sensor de corriente con salida de corriente es compatible. Tenga en cuenta que hay consideraciones para la resistencia de carga que escala el rango de corriente medida. Estos son algunos de los sensores recomendados con conector de 3,5 mm que podemos usar según la corriente que vaya a circular por el circuito a medir:

  • SCT-013-000 100A/50mA
  • SCT-019 200A/33mA
  • SCT-006 20A/25mA
  • SCT-024 400A/100mA
  • SCT-031 600A/100mA

El rango está determinado por la resistencia de carga instalada en la unidad RPICT. En el momento de la compra, esto se selecciona utilizando la calificación del parámetro en la tienda. El rango predeterminado es de 100 A en todas las series RPICT, lo que corresponde a una resistencia de carga de 24 o 27 ohmios. Se pueden seleccionar otras clasificaciones (o rangos) en el momento de la compra.

En los enlaces a continuación se proporcionan más detalles sobre el rango de entrada y la resistencia de carga:

  • Para RPICT3T1 RPICT3V1 RPICT4T4v2.5 y RPICT8/RPICT7V1/RPICT4V3 en versión 3

Gen3 Passive Component Setup

  • Para RPICT7V1 RPICT8 and RPICT4V3 en versión 4

Gen4 Passive Component Setup

  • Para RPICT7V1 RPICT8 RPICT4V3 en version 5

Gen5 Passive Component Setup

Los sensores CT solo miden corrientes alternas (CA). Consulte el sensor ACS715 para la corriente CC.

Solo RPICT7V1 versión 4 y RPI_DCV8 pueden admitir CT de salida de voltaje. SCT-013-xxx que no sea SCT-013-000 y cualquier CT de salida de voltaje no son compatibles con todas las demás placas .

Sensor de voltaje
Para evaluar la potencia de una instalación no es estrictamente necesario un sensor de tensión. La potencia se puede estimar utilizando un voltaje fijo estimado (generalmente 240 o 110 V). El sensor de voltaje se vuelve necesario si desea medir con mayor precisión la potencia real, la potencia aparente y el factor de potencia. La combinación de un sensor de voltaje con un sensor CT también proporcionará la dirección de la energía (importación/exportación).

En cualquier caso, las lecturas de potencia con sensor de voltaje son más precisas y consistentes. También tienen mucho menos ruido y son mejores para lecturas de baja potencia.

La serie RPICT se envía con una calibración básica para el puerto de voltaje. Sería necesaria una calibración si cree que el voltaje medido no es lo suficientemente preciso en comparación con otro dispositivo de medición confiable (alcance, multímetro).

Sensor de voltaje CA/CA
Ofrecen un conjunto de transformadores AC/AC para medir voltaje. Estas unidades se pueden enchufar fácilmente en un enchufe de pared principal. No se requiere cableado.

Los tres modelos diferentes que recomiendan son:

  • UK: 77DB-06-09
  • EU: 77DE-06-09
  • US: 77DA-10-09

Sensor ZMPT

Módulo ZMPT101B :El módulo ZMPT101B es un módulo de tensión para cablear. Mide voltajes hasta 250V y se puede montar en carriles DIN.

No utilice estos módulos ZMPT vendidos en el mercado. No escalan contra las unidades RPICT y la presencia de un potenciómetro los hace poco confiables.

Sensor de temperatura
El sensor de temperatura que se usa s el DS18B20.Los sensores de temperatura vienen con varios conectores:

  • Molex de 3 pines :Esto aplica para la placa RPIZCT4V3T1 y RPIZCT4V3T2.
  • Cables desnudos: Esto aplica para las placas RPICT3T1 RPICT4T4 y RPIZ_CT3T1. Los conectores son terminales de tornillo. La sonda de temperatura debe presentar cables desnudos para la conexión.

Fuente de alimentación
El raspberrypi debe usar la fuente de alimentación micro-usb habitual. La serie RPICT no necesita ninguna fuente de alimentación adicional. La energía para el RPICT se toma del Raspberrypi GPIO.

PUESTA EN MARCHA

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 cualquier aparato eléctrico, así como lo dicho, poner esto en el cuadro eléctrico de casa y medir los consumos desde ahí, 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, etc.

En el uso más básico, la serie RPICT solo genera una cadena en serie. Depende del usuario recopilar esta cadena de datos y registrar/ver según sea necesario. Hay varias formas de lograr esto.

  • Usando el comando cat.
  • Usando Influxdb y Grafana.
  • Usando una solicitud Json.
  • Usando la herramienta Emonhub de Emoncms.
  • Usando un script de Python.

Nota: Este es el uso más básico. Recomendamos encarecidamente hacer uso de esto primero antes que cualquier otra cosa.

De antemano , asegúrese de haber seguido esta guía si está utilizando la imagen de Rasbian.
Usemos el RPICT3T1 como ejemplo. El formato de la salida es como se muestra a continuación. Potencias en W. Temperatura en grados Celsius. Para cualquier otra unidad RPICT, consulte su página específica para conocer el formato de salida predeterminado.

nodeid power1 power2 power3 temperature

Inicie sesión en Raspberrypi usando ssh y emita los comandos

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

El terminal debería mostrar algo como esto a continuación

pi@raspberrypi ~ $ cat /dev/ttyAMA0
11 46.23 52.25 126.56 19.46
11 47.43 52.28 129.60 19.54
11 48.90 53.88 131.22 19.89


Para averiguar qué canal corresponde a qué valor medido, consulte la página dedicada a la placa específica.

Nota. Si usa la imagen emonpi, ejecute el siguiente comando antes del comando stty.

sudo /etc/init.d/emonhub stop

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

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

Ahora, lo que haremos será tratar esa salida en formato CSV. En el ejemplo de Hector devuelve la potencia de 7 sensores no intrusivos, cada uno de ellos conectado a un cable del cuadro de distribucion de ca (General, Enchufes de unas estufas, el Lavavajillas y la Lavadora, el Alumbrado, el Horno y la Vitrocerámica y enchufes)

Después podemos exportar dicha información a una tabla que hemos creado previamente en MySQL de modo quenecesitaremos tener MySQL instalado en alguna máquina (o lo instalamos en la propia Pi) y crearemos ahí la BD y la Tabla que queramos.

Por deferencia de Héctor (del blog bujarra.com) , él nos muestra un ejemplo de las sentencias SQL para ejecutar desde la consola de Mysql para crear dicha tabla 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:

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

¿Que sería lo perfecto 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.

Aqui algunos ejemplos:

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

1SELECT 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:

1SELECT 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:

1SELECT general FROM corriente order by fecha desc limit 1

Sencillo extensor inalámbrico casero para timbre de casa


A veces la señal de nuestro timbre del hogar por diversas circunstancias, que puede ser de lo más variopinto ( lejanía , entorno ruidoso, ruido ambiental , pérdida de audición, etc.) no lo llegamos oir.

Ante esta tesitura, obviamente podemos colocar un segundo timbre inalámbrico con un segundo pulsador en el exterior, lo cual estéticamente no queda del todo muy bien, además de poder llevar a confusión al visitante para saber cuál es de los pulsadore debe accionar.

La solución casera que presentamos en esta ocasión es mantener tanto pulsador exterior como el timbre convencional y dotar a estos de una extensión inalámbrica para que al pulsar este también pueda sonar en otro lugar con un segundo timbre inalámbrico ¿pero cómo podemos acoplar ambos pulsadore con diferentes tensiones de funcionamiento en un mando común? Pues una solución ya se proponía en un post anterior en la que básicamente cruzamos el pulsador del transmisor con un puente y alimentamos con fuente exterior el emisor solo cuando se pulsa el timbre convencional. Lamentablemente la solución comentada no siempre será válida con todos los timbres inalámbricos, especialmente los más modernos debido a la excesiva sensibilidad de la entrada del pulsador externo y a que estos mismos se bloquean para no sonar al inicio de la alimentación ¿ y cómo podemos solucionar este problema? Pues básicamente vamos a emular el retardo de pulsar mediante un simple relé y el problema se solucionará.

En este post vamos a usar un timbre inalámbrico de muy bajo coste la marca Silvercrest modelo IAN

53605 cuyo manual podemos ver aqui

Obviamente podemos usar para este montaje cualquier sistema de timbre inalámbrico distinto porque justo en este montaje no vamos a usar alimentación exterior ( no merece la pena) y solo vamos a actuar sobre el mini pulsador del transmisor.

Las características de este modelo de SilverCrest de transmisor /receptor son las siguientes:

  • Alcance: 100 m (espacios abiertos)
  • Frecuencia de transmisión: 433MHz
  • Tipos de pila: Receptor: 2 x 1,5 V (tipo AA/ LR6),
  • Transmisor: 1 x 3V (tipo CR2032)
  • Receptor: Volumen de tono de alarma (con nivel máximo de volumen): mín. 73 dB (a una distancia del aparato de 1m)
  • Transmisor: Tipo de protección: IP44

La puesta en marcha de este modelo no puede ser más sencilla:

  • Receptor: Retire la tapa del compartimento para pilas 9 que se encuentra en la parte trasera. En caso necesario, retire las pilas gastadas. Introduzca 2 pilas (1,5 V , tipo AA).Nota: preste atención a la polaridad correcta. Ésta está indicada en el compartimento para pilas 10 .Cierre el compartimento para pilas 10 .
  • Transmisor: Reitre el soporte 15 situado en la parte posterior del transmisor. En caso necesario, retire las pilas gastadas. Introduzca una pila (3V , tipo CR 2032). La parte marcada con “+” debe mirar hacia arriba. Vuelva a fijar el soporte del 15 transmisor en la parte trasera del aparato.

Para sincronizar el transmisor y el receptor, siga los siguientes pasos:

  • En cuando estén colocadas las pilas se activa el modo de sincronización del receptor.
  • También puede activar el modo de sincronización de forma manual manteniendo pulsado el botón de sincronización 2 durante unos 3 segundos.

Puesta en marcha/Manejo ;

  • El indicador de señal 1 del receptor se ilumina.
  • Pulse el botón de timbre 13 . El indicador de señal 11 del del transmisor parpadea una vez.
  • El indicador de señal 1 del receptor parpadea. Esto significa que la sincronización se ha realizado correctamente.

NOTAS: el modo de sincronización se mantiene durante 2 minutos como máximo. Si no puede sincronizar el transmisor con el receptor vuelva a seleccionar el modo de sincronización. Tras haber logrado sincronizar el emisor con el receptor, espere unos 2 minutos hasta que aparezca una señal óptica. La señal 1 en el receptor se extinguirá tras 2 minutos y el emisor y el receptor estarán sincronizados.

Ajustar el tipo de señal
El receptor puede mostrar una señal de puerta recibida bien ópticamente, bien acústicamente o bien de las dos maneras. Sirviéndose de la tecla de selección del tipo de señal 5 , seleccione si desea que la señal se muestre ópticamente, acústicamente o de las dos maneras.

Ajustar el volumen

Pulse la tecla de volumen 3 hasta alcanzar el volumen deseado. En total hay 4 niveles de volumen posibles: muy alto, alto, intermedio, bajo.
Selección de tono de alarma
Nota: el timbre dispone de más de 36 tonos de alarma diferentes.
Pulse la tecla de selección de tono de timbre 4 . Suena el primer tono de alarma.
Pulse otra vez la tecla de selección de tono de timbre 4 para pasar al siguiente tono de alarma.
Repita el proceso hasta que alcance el tono de alarma deseado.
Automáticamente, se almacena el último tono de alarma seleccionado.

Eliminar errores
Es muy probable que el artefacto no funcione correctamente luego de estar expuesto a condiciones climáticas extraordinarias (p. ej. un fuerte campo electromagnético). En ese caso retire las pilas de ambos artefactos por aprox. 2 minutos. Proceda posteriormente como hemos viso anteriormente en
“Sincronización transmisor / receptor”.

El montaje

Bien tenemos el timbre inalámbrico funcionando ya sincronizados ambos dispositivos (transmisor y receptor) ..¿cómo podemos acoplar estos a un timbre convencional. Pues básicamente vamos a necesitar los siguientes componentes:

  • Cargador reciclado de 5v DC
  • Rele de 5v
  • 1 led blanco (opcinal)
  • 1resistencia de 220ohmios (opcional)
  • Hembra aerea shuko para conectar el cargador

Como puede suponerse el montaje es bastante sencillo:

  • Desconectamos la corriente principal y conectaremos al timbre convencional con dos cables una hembra aérea donde enchufaremos nuestro dispositivo
  • Desmontamos el transmisor inalámbrico con sumo cuidado y desecharemos la caja.
  • Volvemos a probar que el transmisor inalámbrico sigue funcionando ok
  • Conectamos soldando dos hilos donde va el pulsador del transmisor.
  • Conectamos los hilos del pulsador a los dos contactos normalmente abiertos del relé de 5v.
  • Conectamos la salida del cargador DC a la bobina del rele ( no importa la polaridad)
  • Conectamos a la salida del cargador un led blanco (no necesitáramos resistencia) o un led de color con una resistencia mínimos de 220ohmios. Este led es opcional pero interesante porque nos puede servir para testear de que al pulsar el timbre de casa sacamos salida dc para gobernar el relé. Ojo! poner especial atención con la polaridad del led.
  • Pegamos con cola tèrmica el relé, la placa y el led a los laterales del cargador o bien lo montamos en una caja .
  • Ya podemos volver a conectar la ca y probar nuestro montaje

En la siguientes imágenes podemos ver diferentes aspectos del montaje.

Obviamente podemos montar todo el conjunto en una caja personalizada , pero para probar el montaje puede ser una solución interesante o por lo menos valida mientras encontramos una habitáculo más adecuado para montar todo el conjunto.