Despejadas ya las dudas sobre Matter y Thread, y con un apuesta firme para la domótica de mi casa con el matrimonio entre Zigbee y HomeKit, vamos a tratar de conocer un poco mejor a Zigbee.
¿Qué es Zigbee?
Ya vimos en Entender tu casa inteligente (5) – Zigbee. Yo me lo guiso, yo me lo como un poco por encima qué era este protocolo domótico.
En IoT, para que todos los dispositivos estén conectados y puedan trabajar juntos deben poder «descubrirse» entre ellos, compartir información y solicitarse cosas; en definitiva: comunicarse. Para que esto suceda, necesitamos que hablen el mismo idioma, o esto sería la torre de Babel.
Dentro de esa comunicación, Zigbee es un protocolo que cubre tanto el canal como el código; no necesita compañeros de viaje.
ZigBee hace posible que dispositivos de distintos fabricantes «hablen» un idioma común y que esa comunicación pueda realizarse de forma aérea, mediante radio frecuencia, concretamente en la banda de los 2.4GHz.
Para proporcionar esa «lingua franca», Zigbee introduce una capa llamada Zigbee Cluster Library (ZCL). Esta es la capa que en el modelo OSI denominamos capa de aplicación.
¿Cómo funciona Zigbee?
Zigbee establece una red de dispositivos interconectados que permite la comunicación entre ellos de forma inalámbrica, con un bajo consumo y un relativo corto alcance entre ellos.
Cuando un dispositivo quiere enviar un mensaje a otro puede hacerlo directamente si el receptor está dentro de su alcance de radio; si no es así, tiene que apoyarse en otros nodos para que éstos retransmitan el mensaje hasta que llegue a su destino. A esta manera de funcionar le llamamos red mallada o mesh.
Podrás vislumbrar las ventajas que proporciona una topología de red mallada; permite que la red se adapte a distintas condiciones, haciéndola resiliente. Me explico con algo de teoría de grafos (un poco de mates le vienen bien a la mente).
En teoría de grafos, un camino es una
sucesión de vértices y aristas dentro de un grafo, que empieza y termina en vértices, tal que cada vértice es incidente con las aristas que le siguen y le preceden en la secuencia. Dos vértices están conectados o son accesibles si existe un camino que forma una trayectoria para llegar de uno al otro; en caso contrario, los vértices están desconectados o bien son inaccesibles.
Así pues, 2 vértices pueden estar:
- desconectados.
- conectados por uno y solo un camino.
- conectados por más de un camino (probablemente, con longitudes distintas).
Por otro lado, un grafo no dirigido (sus aristas no tienen un sentido) es conexo si
todos sus vértices están conectados a través de un camino.
Veamos un ejemplo de un grafo con 5 nodos:
Para ir desde 4 a 3, no hay un camino directo, pero sí hay, entre otros:
- un camino que pasa por 1 y luego por 2 (requiere 3 saltos)
- un camino que pasa por 5 (requiere 2 saltos)
Para enviar un mensaje desde 4 hacia 3, Zigbee usará el camino con un menor número posible de saltos: 4 -> 5 -> 3
¿En qué le afecta al nodo 4 si cae el nodo 5? No le afecta en nada, porque sigue pudiendo llegar a 3 a través 1. ¿Y si cae, también, 1? Ya no pueden conversar.
La magia de una red mallada es que:
- Genera un grafo conexo, si puede.
- Con suerte, si un camino «se rompe» porque cae uno de los nodos entre el emisor y el receptor, habrá otro camino por el que enviar el mensaje.
Lo cierto es que para que esta magia funcione nos hace falta un ingrediente fundamental: el coordinador.
Tipos de dispositivos
Cada dispositivo, o nodo, de la red Zigbee puede adoptar un papel diferente. Podemos distinguir:
- Coordinador: responsable de iniciar y gestionar la red. Sólo hay un coordinador por red. Asigna direcciones únicas a cada dispositivo, mantiene las tablas de enrutamiento y controla el funcionamiento de la red. Normalmente, un hub o gateway actúa como coordinador. Tras el arranque, el coordinador actúa como router.
- Router: retransmiten datos entre dispositivos de la red. Amplían el alcance de la red actuando como intermediarios entre dispositivos que no están dentro del rango de comunicación directa. Por su consumo, necesitan alimentación eléctrica. Un interruptor de luz, por ejemplo, al estar permanentemente conectado a la electricidad, puede incluir capacidad de enrutamiento. Un sensor de temperatura, que lleva una pila, no hace de router.
- Dispositivo final: pueden enviar y recibir datos, pero no enrutar. Consumen muy poco, lo que permite usar con ellos pilas. Un sensor de movimiento, por ejemplo, puede ser un dispositivo final.
Si el coordinador no está operativo, al igual que sucede en la red WiFi de tu casa con el router, todo deja de funcionar; la domótica se va al traste. Es, por tanto, crítico.
Tanto al coordinador como a los router se les denomina Full-Function Devices o FFD; al dispositivo final se le denomina Reduced-Function Devices o RFD. Una restricción importante es que un FFD puede conversar con RFDs u otros FFDs, mientras que un RFD sólo puede conversar con un FFD.
¿De qué te sirve esta explicación tan técnica? ¿Recuerdas lo que hemos dicho de los grafos? Esta restricción limita los caminos que pueden establecerse en la malla. Hay nodos que puede actuar como repetidor (son FFD), lo que ayuda a aumentar la cobertura y fiabilidad de la red.
Los FFD están «en reposo» la mayor parte del tiempo; no pueden recibir el tráfico que se les envía. Se despiertan periódicamente y comprueban si hay mensajes en el FFD al que están asociados. Los FFD almacenan los mensajes de sus RFD hasta que éstos se los solicitan. El RFD puede transmitir datos al FFD en cualquier momento, ya que un FFD siempre está «despierto».
El número de nodos que un coordinador podría llegar a manejar es de 65.000, pues la capacidad de direccionamiento es de 16 bits. La limitación está en el coordinador que uses y no en lo que dice el estándar.
Convivencia Zigbee y WiFi
Te preguntarás si se me ha colado lo de WiFi aquí. No, lo he hecho intencionadamente.
Ya explicamos en el capítulo 5 de esta serie que Zigbee opera en la frecuencia de los 2.4 GHz, igual que WiFi n, es decir, son 2 trenes circulando, quizás, por la misma vía (canal).
Una de las cosas que hace el coordinador es determinar el canal, en la banda de los 2.4 GHz, en que va a trabajar. No es bueno que ambos trenes ocupen la misma vía. Cuanto más lejos esté un tren del otro, yendo por vías diferentes, también evitaremos que el aire que desplaza cada uno en su recorrido afecte al otro.
Ya explicamos en la serie Creando un hogar conectado que WiFi n, a pesar de sus múltiples canales, sólo tiene 3 de «buenos»: el 1, 6 y 11.
Zigbee tiene 16 canales (del 11 al 26) de un ancho de 2Mzh. Éstos se superponen hasta en dos de los canales «buenos» WiFi. Si eres usuario de WiFi n debes prestar atención a esta convivencia de redes y ajustar adecuadamente los canales.
Algunos ejemplos de buena convivencvia entre Zigbee y WiFi n pueden ser:
- Zigbee canal 11, Wi-Fi canal 6 o 11
- Zigbee canal 15, Wi-Fi canal 11
- Zigbee canal 20, Wi-Fi canal 1
- Zigbee canal 26, Wi-Fi canal 1 o 6
Cambiar el canal Zigbee requiere volver a emparejar todos tus dispositivos, por lo que es mucho más fácil cambiar el de WiFi. Si puedes eliminar por completo los 2,4 GHz y usar sólo 5 GHz, habrás resuelto todos tus problemas. Ese no es mi caso, pues tengo dispositivos domóticos usando WiFi (requieren la banda de 2.4 GHz), así que a mí sí me toca ajustar canales.
Conclusión
Zigbee es un protocolo más dentro de los que hoy día se han hecho fuertes en el mundo IoT; lleva ya sus años en barrica de roble, así que está muy depurado en cuanto a fiabilidad de funcionamiento.
Su topología en forma de malla, donde existen dispositivos que realizan funciones de router, proporcionan un excelente mecanismo de resiliencia. Además, para un entorno incluso empresarial, la gran cantidad de dispositivos que puede manejar lo convierte un un gran aliado.