fibaro domotica razberry z-wave

Razberry: Domotica low-cost existe gracias a Z-Wave

Es curioso porque cuando compré mi placa Razberry Z-Wave tenía ciertas dudas si conseguiría que funcionase algo con todo esto de la Domotica. Como comentaba en el anterior artículo, todo mi interés surgió cuando me dispuse a investigar sobre soluciones de Smart Metering y vi que los productos completos en el mercado eran excesivamente caros para mi gusto. De pronto, me encontré con los Fibaro Wall-Plugs: Ese tipo de medidores que llaman a la vista por ser excepcionalmente pequeños, y que al parecer, cumplían el objetivo! Con eso solo faltaba el controlador Z-Wave, y por menos de 200 euros, bastante difícil bajarse del burro: Hasta que localice el Razberry Z-Wave 2 por 1: Una interfaz con una API REST y realizaba la función al milímetro. Pero como suelen decir: las gangas no existen, y necesitaba comprobarlo con mis propios ojos, así que hice el pedido (que por cierto, sorprendentemente llego en poco más de un día a través de la tienda online zwave.es y yo esperaba que esa tarjeta Razberry tardará semanas, o incluso meses por ser relativa como popular). Y con todo el material en casa, me dispuse a montar el sistema

fibaro domotica razberry z-wave

Primero el objetivo: Saber cuánto consumen los distintos dispositivos eléctricos/electrónica de mi casa. Quizá en un futuro gracias a la domotica, sería interesante tener una gráfica de consumo y tal, pero creo que es sería más interesante con un dispositivo que se coloca en el cuadro general y mide el consumo general de toda la casa. Pero para un dispositivo en concreto creo que realmente la gracia está en saber cuánto consume.

Por ejemplo: Ponemos el controlador en la lavadora, ponemos el programa clásico de lavado y podemos observar cuanto ha consumido (a pesar de las especificaciones del fabricante). Ahora mismo estoy comprobando el consumo de los emisores térmicos de mi casa, que tienen fama de “ahorro energético” pero tengo la sensación que no es cierto del todo. Esta es una de las bondades de la domotica.

Configurando la interfaz Domotica del Razberry en nuestra Raspberry Pi

Ahora manos a la obra. En primer lugar vamos a configurar el sistema. Para ello nos hace falta tener una Raspberry Pi a la que conectar la placa Razberry Z-Wave (encima de los 10-pines más pegados a la ranura de la tarjeta SD, aunque una imagen vale más que mil palabras)

raspberry pi z-wave razberry domotica

Si ya tenemos Rasbian instalado (versión wheezy en el momento de escribir este artículo más convenientemente), simplemente tendremos que ejecutar el siguiente comando:

wget -q -O - razberry.z-wave.me/install | sudo bash

Con esto quedan instalados los drivers para la Razberry, y el software al que se accede vía web. Quizá necesario reiniciar el sistema para que el sistema operativo reconozca la tarjeta una vez instalado el driver. A partir de aquí ya podemos acceder a la interfaz web:

http://ip_raspberry_pi:8083/expert/

Ahora tenemos que configurar nuestro Fibaro Wall Plug en el sistema de domotica Razberry Z-Wave. Para ello simplemente conectamos el Wall-Plug al dispositivo eléctrico y la corriente como es lógico, y debería encenderse ya el LED en un color indicando el consumo del dispositivo en cuestión (si está apagado, lo más probable es que los leds estén en un azul muy claro). Simplemente con esta acción, el Fibaro Wall-Plug estará preparado para sincronizar con nuestro Razberry. Para ello desde la interfaz web vamos a Network -> Network Management -> (Re)include device y si todo va bien, debería emparejarse sin problemas (en teoría la señal Z-Wave es de aproximadamente unos 20 metros, por eso si no detecta, es que a lo mejor está demasiado lejos, de todas formas el Fibaro Wall Plug tiene un botón en la parte inferior que permite realizar una sincronización forzada, leer el manual de uso, pero a mi siempre me lo ha detectado a la primera)

fibaro wall plug domotica

En el panel de control Web Razberry Z-Wave vamos a Devices configuration y en la parte inferior derecha pulsamos en Expert mode. En la lista de dispositivos en la parte izquierda debería aparecer nuestro Fibaro Wall-Plug, si picamos sobre el y vamos a la parte inferior de la lista de opciones deberíamos ver un menú desplegable llamado Advanced Actions. Dentro pulsamos en Show Interview Results. Si pulsamos en SensorMultiLevel podemos ver todos los datos necesarios para configurar a continuación un acceso a la API de Razberry Z-Wave fundamental para montar nuestro pequeño programa casero para extraer información del sensor. Esto es aplicable a todos los dispositivos que emparejemos con nuestro dispositivo

zwave web razberry domotica

En mi ejemplo si nos damos cuenta, el acceso al Sensor Multi Nivel de la Razberry, se realiza desde devices[2].instances[0].commandClasses[49].data[4].val (en caso de data hay para elegir el 0 y el 4, como quiero sacar el dato en val que es el consumo en Vatios (W) en el momento concreto, pues elijo el 4 y la propiedad “val”).

Para confirmar que todo va bien, podemos acceder a este valor a través de la API de Razberry a través de la dirección (con la propiedad value al final para que nos devuelva el valor)

http://ip_raspberry_pi:8083/ZWaveAPI/Run/devices[2].instances[0].commandClasses[49].data[4].val.value

Si vemos un valor significa que todo va bien (es posible que los valores cambien de dispositivo a dispositivo, por eso he indicado como yo he llegado a estos valores específicamente)

Programación utilizando la API de Razberry y el Fibaro Wall Plug

Ahora mi objetivo es crear un script en PHP que vaya metiendo en una base de datos cada 5 minutos este valor a través de la librería cURL. Dado que la Raspberry Pi no está para trotes, he decidido usar la base de datos SQLite. Creamos la base de datos con el nombre que queramos que es un fichero al final de cuentas, si ya tenemos SQLite instalado y un servidor web con la extensión de PHP (en mi caso puse apache2 como servidor web que aunque es pesado lo conozco mejor, aunque quizá sería más recomendable lighthttp) podemos crear la base de datos con el comando:

# sqlite3 razberry.db

Luego desde la interfaz sqlite3 podemos crear la tabla por ejemplo “plug” con los comandos clásicos de SQL. Nos van a hacer falta unos 4 campos:

  • Un identificador único INTEGER llamado id con autoincremento (no es fundamental, pero nunca está de mas)
  • Un parámetro tipo DATETIME llamémosle fecha
  • Un parámetro tipo REAL llamado valor
  • Un parámetro tipo INTEGER llamado disp. (tampoco es fundamental, pero es práctico para llevar un control de sucesivos dispositivos específicos y no mezclar datos, aparte que me va a servir para simplificar la programación al máximo a efectos explicativos)

El script en PHP es el siguiente, llamémosle /home/pi/consumo.php

#!/usr/bin/php
<?php
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
$url = "http://ip_raspberry_pi:8083/ZWaveAPI/Run/devices[2].instances[0].commandClasses[49].data[4].val.value";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
class MiBD extends SQLite3{
function __construct()
{ $this->open('/var/www/razberry.db'); }
}
$bd = new MiBD();
$watios = curl_exec($ch);
$bd->exec("INSERT INTO plug (fecha,valor,disp) VALUES (datetime('now'),$watios,1)");
curl_close($ch);
?>

De aquí solo ver, que hacemos una llamada a la API con cURL para sacar el dato de consumo, y luego insertamos el datos en la tabla junto a la fecha del momento y marcamos el dispositivo número 1 (en este caso el primer dispositivo electrónico que vayamos a medir, luego si cambiamos de sitio el enchufe para domotica Fibaro Wall-plug podemos poner el número 2, 3 y así sucesivamente)

Ahora necesitamos un script para que corra este script en PHP cada 5 segundos, por ejemplo /home/pi/consumo.sh:

#!/bin/sh
(sleep 5 && /home/pi/consumo.php) &
(sleep 10 && /home/pi/consumo.php) &
(sleep 15 && /home/pi/consumo.php) &
(sleep 20 && /home/pi/consumo.php) &
(sleep 25 && /home/pi/consumo.php) &
(sleep 30 && /home/pi/consumo.php) &
(sleep 35 && /home/pi/consumo.php) &
(sleep 40 && /home/pi/consumo.php) &
(sleep 45 && /home/pi/consumo.php) &
(sleep 50 && /home/pi/consumo.php) &
(sleep 55 && /home/pi/consumo.php) &
(sleep 60 && /home/pi/consumo.php)

Lo admito: La elegancia programando no es lo mío, no me acordaba muy bien cómo eran los parámetros en Bash y prefería invertir el tiempo en esta entrada, que en dejarlo todo óptimo J

Finalmente vamos a poner este script con una línea en /etc/crontab:

* * * * * root /home/pi/plug.sh

Y ya debería funcionar cada 5 segundos, almacenando los datos de consumo en esos intervalos de tiempo.

Por último y para poner la guinda del pastel, si instalamos el servidor web Apache o LightHTTP como indicaba antes, podríamos tener un básico panel de control en PHP para saber la información que nos reporta esta base de datos (por ejemplo en /var/www/reportes.php)

<?php
class MiBD extends SQLite3
{
function __construct() { $this->open('/var/www/razberry.db'); }
}
$bd = new MiBD();
$resultado = $bd->query("SELECT AVG(valor),COUNT(valor) FROM plug WHERE (fecha > datetime('now','-24 hours')) AND (fecha < datetime('now')) AND (disp = 1)");
$res = $resultado->fetchArray();
$kwh = 0.162; // El coste el KWH de vuestra compañía de Luz
echo "Potencia Media en las ultimas 24 horas: ".$res[0]." W";
echo "<br/> Numero Registros: ".$res[1];
$coste = $res[0]/1000 * $kwh * 24 * 30;
echo "<br/> Coste Mensual: ".$coste." euros";
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
$url = "http://ip_de_raspberry:8083/ZWaveAPI/Run/devices[2].instances[0].commandClasses[49].data[4].val.value";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$watios = curl_exec($ch);
echo "<br/> Consumo Actual: ".$watios." W";
?>

Y ahora me entero que mi emisor térmico efectivamente, no gasta tanto como creía:

Potencia Media en las últimas 24 horas: 150.13031858033 W
Numero Registros: 17273
Coste Mensual: 17.51120035921 euros
Consumo Actual: 282.6000128 W

Espero que os sirva de provecho esta guía para tener un pequeño Z-Wave casero. En un futuro, intentare adquirir algún producto adicional Z-Wave (un sensor de movimiento y una alarma por ejemplo), y planteare “fusionar” el mundo de la Domotica con Asterisk

 

raspberry pi domotica razberry z-wave

Domotica, Asterisk, Smart Metering y el Internet de las Cosas

Dado que este blog está cogiendo ciertos tintes de orientación del Sistema Asterisk, para entornos caseros o en el mejor de os casos, las pequeñas y medianas empresas, he pensado que sería bastante interesante empezar a introducir terceras aplicaciones relacionadas al mundo de la domotica, automatización de sistemas en casa (y en la oficina), y todo gestionado más allá de la tecnología software convencional como podrían ser las aplicaciones de los Smartphones y los entornos web.

domotica asterisk

Todo mi interés ha surgido a raíz del Tarifazo eléctrico acontecido recientemente en España, y el incremento de la factura de la luz en un porcentaje significativo (Sumado a los altos consumos de Inverno relativos al uso de sistemas de calefacción). Esto me ha llevado a investigar acerca de alguna posible opción domotica para controlar el consumo eléctrico con los populares Smart Meters (medidores Inteligentes de consumo). A esta práctica se le llama “Smart Metering” y en el entorno Demótico está totalmente en Auge.

Soluciones de Smart Metering para nuestro futuro sistema de Domotica

Después de revisar miles de opciones bastante costosas como IPDomo Energy Socket Meter, uno de los pocos dispositivos capaz de medir el consumo de un dispositivo en concreto y enviar la información vía Wifi (a un precio excesivo si cabe >180 euros), y la alternativa, control desde el Cuadro Eléctrico del consumo integral del domicilio, con E2 Efergy, empecé a tantear otras opciones basadas en protocolos propietarios de comunicación tales como la solución de ClienSol, EnviR, unido al módulo de conexión a internet, más un Enchufe con Sensor Inalámbrico por un total de cerca de 180 euros también, siendo toda la comunicación propietaria, y con montones de dispositivos de por medio).

En este momento descubrí los protocolos de comunicación “Inalámbricos” para la domotica (que hasta la fecha solo conocía los cableados como X10), y se presentó ante mí una de las apuestas fuertes, Zigbee, con el sistema Enistic Single Socket Smart Meter, que también tenía un alto coste (módulos más recibidor, etc…). Este fue el momento que estaba a punto de desechar la idea, porque consideraba que montar soluciones de estas características eran excesivamente costosas. Las aplicaciones con sistemas “Open Source” como Arduino eran totalmente rudimentarias, y muy poco fiables, lo que hizo en mí que las desechase prácticamente desde los inicios.

Pero de pronto me topé con una presentación del último evento Voip2Day 2013 sobre domotica, al que no pude Asistir, de Alberto Sagredo:

En esta presentación curiosamente, hace referencia a Z-Wave como otro estándar de comunicaciones para domotica, el cual está siendo ampliamente aceptado, y dispone de una cantidad de dispositivos increíblemente grande. Y concrétamente hubieron dos dispositivos que me llamaron especialmente la atención: Fibaro Wall Plug y RazBerry, y concrétamente este último porque se considera una placa para Raspberry Pi que permitiría una integración con un sistema como Asterisk en el mismo dispositivo y servir como servidor de comunicación para la intercomunicación con este dispositivo de Z-Wave.ME

De momento he realizado el pedido de estos dos dispositivos de domotica para empezar a probarlos. Tal y como ha hecho Alberto Sagredo en su presentación (que en su caso aplica los casos de uso entre Asterisk y un Controlador Z-Wave de la marca Zipato el modelo ZipaBox cuyo coste de 200 euros no es desdeñable, dentro de la franja de otros controladores Entry-Level como Vera Lite Smart Home Controller