Cortesía de mis nuevos amigos
Buenos días, hace tiempo que andaba mirando medidores de consumo eléctrico para mi casa. Cómo la factura de la luz sube cada mes, hay que tenerlo todo controlado. Había visto varios modelos y marcas hasta que, casualidades de la vida, recibo un correo de Tomás de la empresa Cliensol, en el que me preguntaba si sabría extraer los datos de su medidor de consumo EnviR, aprovechando el puerto serie que trae, para tener los datos en el Raspberry.Tomás, a parte de ser buen actor como demuestra el vídeo, me envió el kit básico de EnviR, consistente en:
1- Sensor + emisor inalámbrico
2- Pantalla receptora, donde muestra el estado actual, acumulado, temperatura ...
Y ya está, no hace falta más. Siguiendo las instrucciones que proporcionan, conectamos el sensor al cuadro eléctrico y lo sincronizamos con EnviR (la pantalla).
Le ajustamos la moneda a €, hora y el precio por kw/h que la compañía eléctrica nos sangra cada mes. Desde este momento ya tenemos en funcionamiento el kit completo, superfácil. En su web y canal de youtube hay muchos ejemplos y manuales para no perderte.
Conexión serie y descarga de datos al RaspberryPi
Vamos a lo que nos interesa. El EnviR tiene un puerto serie por detrás, camuflado como un RJ45. Tomás me envió además del kit, el cable usb-RJ45, no se si lo incluyen en el kit, lo compras a parte ...Como el EnviR tiene alimentación propia, no es necesario conectarlo a un hub usb alimentado. Así que enchufamos al Raspberry, ejecutamos lsusb y vemos:
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial PortSi buscamos un poco, el chip PL2303 es un conversor serie-usb. Requiere un módulo en concreto para el kernel que ... jejejeje ya viene en nuestros Raspberrys :) Instalamos:
apt-get update apt-get install minicomy ahora, fijándonos en la documentación, nos conectamos al EnviR desde el Raspberry:
minicom -b 57600 -D /dev/ttyUSB0 -8y ahí lo tenemos, un precioso XML, que genera una línea cada ~6 segundos con los datos que queremos:
<msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:54:42</time><tmpr>28.5</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02820</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:54:48</time><tmpr>28.5</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02819</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:54:54</time><tmpr>28.4</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02833</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:55:00</time><tmpr>28.4</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02830</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:55:07</time><tmpr>28.4</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02821</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:55:13</time><tmpr>28.4</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02858</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:55:19</time><tmpr>28.4</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02813</watts></ch1></msg> <msg><src>CC128-v0.12</src><dsb>65535</dsb><time>16:55:25</time><tmpr>28.4</tmpr><sensor>0</sensor><id>03490</id><type>1</type><ch1><watts>02811</watts></ch1></msg>Podemos dejarlo en segundo plano y generando el XML con:
SCREEN -dmS enviR minicom -b 57600 -D /dev/ttyUSB0 -8 -C /tmp/envir/salida.xmlEn el siguiente post veremos como explotar un poco esos datos e integrarlos con nuestra domótica, generar alertas y grabarlo todo en una BBDD Mysql.
al hacer est:
ResponderEliminarminicom -b 57600 -D /dev/ttyUSB0 -8
me dice esto:
El dispositivo /dev/ttyUSB0 está bloqueado.
Bueno creo que eso me ocurre porque esta en ejecución el screen.
ResponderEliminarOtro problema es q no consigo sacar el dato del consumo del xml
Este es el script que estaba usando:
#!/bin/bash
#orden=$(echo $@ | grep msg | sed 's//\ /g' | sed 's/\///g' | sed '$
orden=$( tail -1 /tmp/salida.xml | grep msg | sed 's//\ /g' | sed '$
watts=$(echo $orden | cut -f5 -d\ )
#export WATTS=$watts
#echo los watts son: $WATTS >> /tmp/salida_watts.log
echo $watts
pero me dice esto ahora:
/usr/local/bin/watios.sh: línea 3: EOF inesperado mientras se buscaba un `'' coincidente
/usr/local/bin/watios.sh: línea 8: error sintáctico: no se esperaba el final del fichero
Vale lo solucioné, estaba mal el script.
ResponderEliminarNo dices cómo lo solucionas
EliminarMaldición!! te me adelantas demasiado!! ;) cómo te lo curras!
ResponderEliminarya tendrás el curso con las base de datos?
ResponderEliminar