Fibaro Smart Implant es un dispositivo polivalente pensado para integrar sensores heterogéneos en nuestra red Z-Wave. No vamos a describir completamente el producto puesto que ya lo hace el fabricante en su manual que puede descargar haciendo click aquí.
Pero sí es cierto que hay configuraciones que pueden ser ciertamente tediosas si no lo usamos con los controladores del fabricante Fibaro: Fibaro Home Center Lite, Fibaro Home Center 2 y Fibaro Home Center 3.
Descripción de Fibaro Smart Implant
El dispositivo Fibaro Smart Implant es un dispositivo pensado principalmente para servir de interfaz entre dispositivos no Z-Wave y así poder interactuar con ellos e introducirlos en nuestra red Z-Wave. Algunas de las aplicaciones típicas podrían ser incluir sensores de alarma, otros sensores no Z-Wave y también nos permite actuar sobre otros dispositivos dado que viene provisto de dos relés de contacto seco.
Es un dispositivo realmente pequeño de 29x18x13 mm y viene provisto de un conector con 8 cables para la alimentación, las entradas y la antena Z-Wave. Tiene 4 conectores con tornillo usadas como dos salidas de contacto seco. Además tiene una pequeña pestaña (B) para poder accionar el botón de inclusión.
Las entradas IN1 e IN2 se pueden configurar como entradas normalmente abiertas o cerradas a las que podemos conectar sensores, como pulsadores, interruptores o entradas analógicas. Esto último nos permite conectar sensores con niveles de tensión para medir, por ejemplo, nivel de agua, caudal, presión, etc.
Las entradas SD y SP son específicas para los sensores DS18B20 o DHT22 que también pueden ser conectados a este dispositivo. El sensor DS18B20 es un sensor de temperatura y podremos conectar hasta 6 en sus diferentes formatos siempre y cuando no superemos la longitud máxima de bus. El sensor DHT22 es un sensor de temperatura y humedad pero en este caso no podremos conectar más de 1.
Todas estas configuraciones se pueden realizar por parámetros como tradicionalmente se hacen en dispositivos Z-Wave.
Pero curiosamente hay una funcionalidad que no se realiza por parámetros. No sabemos el porqué Fibaro ha decidido no incluir esta funcionalidad por parámetro. Posiblemente al ser un dispositivo de seguridad haya extrapolado esta funcionalidad de los parámetros habituales.
En sus controladores (Fibaro Home Center Lite, Fibaro Home Center 2 y Fibaro Home Center 3) es tan simple como activar dos botones, pero en otros controladores nos complica algo más. Pero no mucho.
La funcionalidad a la que nos referimos en poder controlar los relés de salida de forma independiente, es decir, poder activarlos como un relé tradicional. Por defecto vienen configurados para que ante un cambio en IN1 o IN2 el relé cambie de estado. Podremos por parámetros invertirlos, ponerlos como normalmente cerrados o abiertos, auto-off, etc. Pero es imposible por parámetros configurarlos para que se comporten como relés independientes. Veamos como hacerlo en otros controladores pero antes un poco de teoría.
Z-Wave COMMAND_CLASS_PROTECTION
El protocolo Z-Wave define varias COMMAND_CLASS para implementar las funcionalidades de un dispositivo. Un dispositivo implementará en su diseño aquellas que requiera para su funcionalidad. Por ejemplo un dispositivo que contemple parámetros de configuración implementará la COMMAND_CLASS_CONFIGURATION. Y un relé específicamente la COMMAND_CLASS_SWITCH_BINARY que al usarla el controlador hará que el relé se abra o cierre. En el proceso de inclusión, precisamente el controlador entrevista al dispositivo para saber que COMMAND_CLASS implementa. Luego es responsabilidad del controlador de ofrecer la interfaz correspondiente al usuario para que interactue con el dispositivo.
La clase COMMAND_CLASS_PROTECTION en una clase pensada para evitar que alguien manipule físicamente un dispositivo no intencionadamente, por ejemplo niños. Se suele usar, por ejemplo, para evitar que alguien manipule la temperatura de consigna de un termostato pulsando a los botones físicos que tenga el termostato.
Por supuesto el dispositivo debe implementar la clase y cambiar su funcionamiento en función del estado que se le envíe.
Puede tener 3 estados:
- Desprotegido (0x00).
- Desprotegido por secuencia (0x01).
- Bloqueado (0x02).
Los valores pasados serán 0, 1 o 2 respectivamente y el valor Desprotegido por secuencia está pensado para que se pueda desbloquear si el usuario conoce una combinación de pulsaciones o teclas que debe definir el fabricante del dispositivo.
Además en la versión 2 de COMMAND_CLASS_CONFIGURATION se definieron además el poder proteger el dispositivo vía radio, es decir, que podríamos configurar dos protecciones: una física y otra vía radio. Es decir podremos evitar que se manipule el dispositivo física (Local) y/o por comandos Z-Wave (RF).
Los estados para estas dos protecciones son los anteriormente comentados pero para el caso de RF el estado 1 permite consultar el estado vía radio del dispositivo.
¿Desde el punto de vista de diseño podría ser un parámetro de configuración?. Sí. Pero de esta manera entendemos que se pretende concretar una funcionalidad.
Control independiente de los relés de salida en Fibaro Smart Implant
Como ya podemos predecir en Fibaro Smart Implant se ha implementado la funcionalidad de poder actuar sobre los relés independientemente de las entradas a través de COMMAND_CLASS_PROTECTION. ¿Por qué usan esta opción en vez de un parámetro de configuración? Porque además nos permite hacer que los relés no respondan a Z-Wave.
Por defecto el dispositivo tiene valor 0 para los valores Local y RF. Y con estos valores ambos relés seguirán las entradas IN1 e IN2. La siguiente tabla extraída del manual de Fibaro nos muestra que valor e implicación tienen los valores introducidos en Local y RF de la clase COMMAND_CLASS_PROTECTION.
Tipo | Estado | Descripción | Funcionalidad |
Local | 0 | Desprotegido – El dispositivo no está protegido y puede operarse normalmente por el GUI. | Entradas conectadas con las salidas. |
Local | 2 | Sin operación – el estado de las salidas no puede cambiarse por el botón B o las entradas. | Entradas desconectadas de las salidas. |
RF | 0 | Desprotegido – El dispositivo acepta todos los comandos RF. | Salidas controlables por Z-Wave. |
RF | 1 | No RF control – Rechaza los comandos para interactuar con los relés. Responde al resto. | Salidas no controlables por Z-Wave. |
Por lo tanto para poder controlar los relés independientemente de las entradas tendremos que enviarle desde nuestro controlador un COMMAND_CLASS_PROTECTION con valores Local=2 y RF=0
Esto respecto a lo documentado, pero en la unidad que hemos probado estos valores sólo hacían lo correcto para IN1 y OUT1. Además con Local=2 y RF=1 conseguíamos que la salida no siguiese a la entrada y que además el relé no funcionase desde el controlador. Probamos distintas combinaciones de valores y los únicos valores admitidos por el dispositivo son 0 0, 2 0 y 2 1.
Configuración en eedomus
Para configurar Smart Implant en eedomus para que se comporte como sensores de entarada binaria y además tengamos los relés de salida independientes que podamos manipularlos sin contar con la entrada realizaremos lo siguiente:
Definiremos las entradas como sensores binarios y para ello pondremos los parámetros 20 y 21 a 0 o 1 en función de que los queramos como normalmente cerrado o abierto.
Y para que las salidas sean independientes de las entradas modificaremos los estados de COMMAND_CLASS_PROTECTION como se indica en la siguiente figura:
En nuestras pruebas sólo funcionó para IN1 y OUT1. IN2 y OUT2 seguían funcionando igual a pesar de estos parámetros.