Lectura Monitor de Consumo Eléctrico online (CC128) desde Ubuntu (consola)
Thu, March 17, 2011 - 3 min read
Ha llegado a mis manos (de forma temporal) un medidor de consumo eléctrico en tiempo real. Es de la familia de los CurrentCost CC128. La instalación a nivel electrica es sencilla y no tiene mucho secreto (lo podéis ver en la propia web de Current Cost).
Ver el consumo de forma online nos puede ayudar sobretodo a concienciarnos en el tema de consumo electrico, así como llevar el control del gasto realizado y que luego no nos time la compañía electrica. El propio dispositivo receptor es capaz de almacenar unos 7 años de información diaria, pero si lo que queremos es tener mayor detalle, podemos conectarlo al PC y recuperar la información en tiempo real.
A continuación voy a explicar como hacerlo por consola desde Ubuntu. Al final lo que tendrémos será un script que nos mostrará la información recibida del consumo en tiempo real (cada 5seg).
Prerequisitos: Hay que tener instalado el Perl y el módulo Device::SerialPort
Instalar módulo Device::SerialPort en Perl (suponiendo que ya tenéis Perl instalado): Desde una consola ejecutamos el siguiente comando como root:
perl -MCPAN -e shell
Cuando ha acabado las verificaciones y cosas raras, ejecutamos el comando para instalar en módulo:
install Device::SerialPort
Cuando finaliza, salimos com exit.
Ahora hay que crear el siguiente script, el cual leerá la salida que emite el receptor cada 5 seg y la interpreta, de tal forma que nos mostrará los watios y la temperatura en ese momento. Lo único que debemos tener en cuenta es el puerto USB por el que está conectado el receptor, en este caso en /dev/ttyUSB0 (marcado en rojo):
#!/usr/bin/perl -w # Reads data from Current Cost and e.on energy monitor devices via serial port. use strict; use Device::SerialPort qw( :PARAM :STAT 0.07 ); my $PORT = "<span style="color: #ff0000;">/dev/ttyUSB0</span><span style="font-family: terminal, monaco;">"; my $ob = Device::SerialPort->new($PORT); $ob->baudrate(57600); $ob->write_settings; open(SERIAL, "+>$PORT"); while (my $line = <SERIAL>) { if ($line =~ m!<tmpr> *([\-\d.]+)</tmpr>.*<watts>0*(\d+)</watts>!) { my $temp = $1; my $watts = $2; print "$watts, $temp\n"; }</span> }
El resultado cuando se ejecuta este script es algo como esto:
Esto es un primer paso para comprobar y recoger la información online de una forma sencilla y por consola, pero si lo que queremos es almacenar y analizar la información de una forma mas cómoda (representación gráfica, históricos, etc,…) podemos utilizar una aplicación web como energyathome, la cual requiere un entorno LAMP (Linux+Apache+MySQL+PHP) y Phyton para mostrarnos mas amigablemente la información que está recogiendo del receptor.