Consumo eléctrico en Home Assistant con Current cost Envir

Como no podía ser de otra forma, nos estrenamos con una entrada que aunque compleja, une dos de nuestras pasiones, en control del consumo eléctrico de nuestro hogar (en este caso usaremos el dispositivo Current Cost Envir) y la domótica con home assitant.

El Current Cost Envir es un dispositivo que consiste en una pinza amperimetrica que se puede colocar en una de las fases del consumo a medir, conectado a un transmisor de RF a pilas.

Por otra parte un receptor, con pantalla que nos deja visualizar varias de estas sondas, y que, y esta es la parte buena, dispone de un puerto RJ45 donde conectar un cable RJ45 a USB y tomar las lecturas.

Los medidores de consumo se popularización en UK debido a que las eléctricas los regalaban, por lo que es fácil encontrarlos en ebay o similar buscando por smart meter a precios realmente bajos.

Una vez tengamos el dispositivo instalado y conectado a nuestra Raspberry Pi, debemos instalar en la misma el soporte Python para dispositivos USB y par volcar datos en InfluxDB (que usaremos para almacenar los datos como base de datos.

sudo apt install python-serial
sudo apt install python-influxdb

Instalamos InfluxDB para Rasperry pi:

sudo apt-get install influxdb
sudo service influxdb start

Añadimos nuestro script en Python de lectura de valores:

from influxdb import InfluxDBClient 
from datetime import datetime
from time import sleep
import serial
import re

import random
import time

now = datetime.utcnow()
print now

client = InfluxDBClient('localhost', 8086, 'bbddusr', 'pwd', 'lee_pot')
client.create_database('lee_pot')

while True:
   try:
       now = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
   
       cc128 = serial.Serial("/dev/ttyUSB0", 57600, timeout=6)
       cc128xml = cc128.readlines(6)                                                                                                                         
       texto=re.sub('<.*?>', '', str(cc128xml))                                                                                                                              
       print texto   
       tmpr=texto[26:30]
       watts=texto[37:42]
       print "Temperatura " + str(tmpr) + "C, Potencia " + str(watts) + "watios"
       print cc128xml

       json_body = [
            {
                "measurement": "lee_pot",
                "tags": {
                    "Potencia": "w",
                    },
                "time": now,
                "fields": {
                    "value": int(watts)
                    }
                }
            ]

       client.write_points(json_body)
       json_body = [
            {
                "measurement": "lee_temp",
                "tags": {
                    "Temperatura": "C",
                    },
                "time": now,
                "fields": {
                    "value": float(tmpr)
                    }
                }
            ]

       client.write_points(json_body)
       sleep(10)
   except:
       sleep(10)


Si lo vemos oportuno para no tener que arrancarlo cada vez, creamos un demonio para que autoarranque nuestro script en /etc/systemd/system creamos el fichero lee_potgraf.service:

[Unit] 
Description=lee_potgraf.service  
After=influxd.service

[Service]
User=root
ExecStart=/usr/bin/python /rutaanuestroscript/nuestroscript.py
Restart=always
RestartSec=60s



[Install]
WantedBy=multi-user.target

Recordamos los comandos para trabajar con demonios:

  • sudo systemctl enable lee_potgraf.service → Mete en arranque
  • sudo systemctl daemon-reload → Lo recarga
  • sudo systemctl start lee_potgraf.service → Lo arranca
  • sudo systemctl status lee_potgraf.service → Ver estado

Por último solo nos falta incluir los sensores de InfluxDB en nuestro configuration.yaml de nuestro Home Asssitant en la sección sensors:

# Sensors 
sensor:
 - platform: influxdb
   queries:   
     - name: Temperatura
       unit_of_measurement: °C
       value_template: '{{ value | round(2) }}'
       group_function: last
       where: '"Temperatura" = ''C'''
       measurement: '"lee_temp"'
       field: value
       database: lee_pot
     - name: Potencia
       unit_of_measurement: 'w'
       value_template: '{{ value | round(2) }}'
       group_function: last
       where: '"Potencia"  = ''w'''
       measurement: '"lee_pot"'
       field: value
       database: lee_pot

Ya tenemos integrados los sensores de Temperatura y Potencia de nuestro Current Cost Envir en Home Assistant.

Potencia Current Cost en Home Assistant
Temperatura Current Cost en Home Assistant

Si necesitas ayuda recuerda unirte a nuestro grupo de Telegram y para no perderte nada de lo que publiquemos sigue nuestro Twitter con los enlaces a pie de página.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *