{"id":4675,"date":"2021-01-31T19:28:35","date_gmt":"2021-01-31T18:28:35","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=4675"},"modified":"2021-01-31T19:28:35","modified_gmt":"2021-01-31T18:28:35","slug":"concentrador-zigbee-basado-en-software-libre-zigbee2mqtt","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=4675","title":{"rendered":"Concentrador Zigbee basado en software libre: zigbee2mqtt"},"content":{"rendered":"<p>Llevo ya unos cuantos art\u00edculos hablando sobre mi sistema de dom\u00f3tica, y hasta ahora he omitido uno de los puntos centrales del mismo: el concentrador zigbee. Mi sistema de dom\u00f3tica es algo <em>sui generis<\/em>, ya que es un compendio de distintas piezas que he ido amalgamando con el paso del tiempo. El punto central del mismo es el estupendo software <a href=\"http:\/\/https:\/\/www.home-assistant.io\/\" target=\"_blank\">Home Assistant<\/a>, junto con un servidor MQTT. Sobre este n\u00facleo he ido a\u00f1adiendo diversos dispositivos, empezando por hardware basado en NodeMCU programados por m\u00ed mismo. Empec\u00e9 con ello en 2016, en Irlanda, pero realic\u00e9 algunos proyectos preliminares a\u00fan antes, pero completamente desacoplados. Pero todo lo hecho ha tenido como hilo com\u00fan el experimentar con diversas tecnolog\u00edas.<\/p>\n<p>Como parte de ese proceso de experimentaci\u00f3n acab\u00e9 introduciendo dispositivos Zigbee. Son unos elementos interesantes, y la tecnolog\u00eda en la que se basan ha tenido gran difusi\u00f3n en el \u00e1mbito de la dom\u00f3tica dom\u00e9stica. Para transmitir la se\u00f1al se basan el frecuencia de 2&#8217;4GHz, lo que provoca que en entornos saturados de redes WiFi y Bluetooth estemos a\u00f1adiendo m\u00e1s elementos que pueden provocar perturbaciones. Sin embargo, no es ese su gran problema. El gran problema que tienen es que estos dispositivos necesitan de un aparato que realice las veces de concentrador de se\u00f1ales, actuando como pasarela entre los dispositivos en s\u00ed y el software de control que nos permite interactuar con ellos. Y si este concentrador fuera gen\u00e9rico, no ser\u00eda demasiado malo, pero cada fabricante requiere que uses el suyo y nada m\u00e1s que el suyo, lo que implica que no es posible mezclar, por ejemplo, luces del sistema TR\u00c5DFRI de Ikea con sensores de temperatura Xiaomi, o interruptores Silvercrest de Lidl, a menos que quieras tener que usar tres concentradores y tres aplicaciones distintas para cada componente. Un verdadero rollo.<\/p>\n<p>Y es aqu\u00ed donde entra nuestro amigo el software libre. Existe un magn\u00edfico proyecto de desarrollo de un concentrador multifabricante que permite precisamente eso: utilizar un solo concentrador abierto para gestionar dispositivos de diversos fabricantes. Ese es el proyecto <a href=\"http:\/\/https:\/\/www.zigbee2mqtt.io\/\" target=\"_blank\">zigbee2mqtt<\/a>. La idea de partida es sencilla: escuchar las se\u00f1ales Zigbee de los diversos dispositivos, procesarlas, e inyectarlas en un servidor MQTT para poder ser utilizadas posteriormente como mejor convenga a tus intereses. Sencilla, pero brillante. Y en mi caso, dado que ya dispon\u00eda de un Home Assistant configurado y mi servidor MQTT, algo que me ven\u00eda como anillo al dedo.<\/p>\n<figure id=\"attachment_4678\" aria-describedby=\"caption-attachment-4678\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/zigbee2mqtt-architecture.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/zigbee2mqtt-architecture-400x133.png\" alt=\"Arquitectura de zigbee2mqtt\" title=\"Arquitectura de zigbee2mqtt\" width=\"400\" height=\"133\" class=\"size-medium wp-image-4678\" \/><\/a><figcaption id=\"caption-attachment-4678\" class=\"wp-caption-text\">Arquitectura de zigbee2mqtt<\/figcaption><\/figure>\n<p>Sin embargo, hasta ahora he hablado s\u00f3lo de sofware, y para construir un concentrador que reciba se\u00f1ales f\u00edsicas es preciso de <a href=\"https:\/\/www.zigbee2mqtt.io\/getting_started\/what_do_i_need.html\" target=\"_blank\">algo de hierro<\/a>. El hardware esencial es el adaptador Zigbee que recibe las se\u00f1ales de los dispositivos. En mi caso hago uso de un adaptador CC2531, que se conecta por USB. Es preciso programarlo con un firmware que en la propia p\u00e1gina de zigbee2mqtt se encargan de proporcionar. Y adem\u00e1s de eso, hace falta un dispositivo linux donde instalarlo. La respuesta m\u00e1s obvia es una Raspberry Pi, pero hay otras alternativas:<\/p>\n<ul>\n<li>En mi caso, all\u00e1 por 2016, empec\u00e9 utilizando una <a href=\"http:\/\/http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/01\/IMG_20200125_145346307.jpg\" target=\"_blank\">Asus Tinker Board<\/a>, que por aquel entonces ofrec\u00eda mucha m\u00e1s potencia que la Raspberry Pi 2 que hab\u00eda disponible. Una placa estupenda, con mucha potencia, y con una versi\u00f3n de linux, Linaro OS, basada en Debian, por lo que ofrec\u00eda todo lo que necesitaba. Sin embargo, ten\u00eda una cierta pasi\u00f3n por devorar tarjetas microSD, por lo que hace algunos meses acab\u00e9 migrando el sistema y desconect\u00e1ndola.<\/li>\n<li>Otra opci\u00f3n interesante, dado que las necesidades de potencia de zigbee2mqtt son ciertamente reducidas (y ni de lejos requieren hacer uso de algo como una Raspberry Pi 4), es hacer uso de una placa m\u00e1s modesta. En mi caso, estoy teniendo estupendos resultados con una humilde <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4540\" title=\"Control de apertura de puertas y ventanas con Zigbee y sensores Aqara MCCGQ11LM\" target=\"_blank\">Orange Pi Zero<\/a>. Eso s\u00ed, siempre que cuides de ponerle un sistema de disipaci\u00f3n y ventilaci\u00f3n, ya <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4118\" title=\"Mitigaci\u00f3n de los problemas de sobrecalentamiento de la Orange Pi Zero\" target=\"_blank\">el tal\u00f3n de Aquiles de esta placa es su disparatado problema de sobrecalentamiento del micro<\/a>. Este sistema lo tengo en uso a d\u00eda de hoy en Forcarey.<\/li>\n<li>Y otra opci\u00f3n, perfectamente viable, es hacer uso de una m\u00e1quina virtual. Este es el caso del entorno que tengo actualmente en Santiponce. Despu\u00e9s de desechar la Tinker Board, mov\u00ed el sistema a una peque\u00f1a m\u00e1quina virtual en un servidor de virtualizaci\u00f3n basado en Proxmox que tengo en casa. El punto clave en este caso era verificar que el adaptador Zigbee funcionara present\u00e1ndolo desde el servidor de virtualizaci\u00f3n a la m\u00e1quina virtual (ya que, claro, no es posible conectar un hardware <em>f\u00edsico<\/em> a una m\u00e1quina <em>virtual<\/em> sin conectar el hardware al servidor de virtualizaci\u00f3n), cosa que hasta el momento ha ido como la seda. Y en cuanto a los recursos de la m\u00e1quina virtual, no se necesita nada espectacular: con 512 MB de RAM y 1 vCPU hay de sobra para mover Home Assistant, zigbee2mqtt, el servidor MQTT y alguna que otra cosa m\u00e1s que tengo por ah\u00ed.<\/li>\n<\/ul>\n<figure id=\"attachment_4676\" aria-describedby=\"caption-attachment-4676\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/homeassistant-proxmox.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/homeassistant-proxmox-400x194.jpg\" alt=\"Home Assistant y zigbee2mqtt en Proxmox\" title=\"Home Assistant y zigbee2mqtt en Proxmox\" width=\"400\" height=\"194\" class=\"size-medium wp-image-4676\" \/><\/a><figcaption id=\"caption-attachment-4676\" class=\"wp-caption-text\">Home Assistant y zigbee2mqtt en Proxmox<\/figcaption><\/figure>\n<p>Una vez determinada qu\u00e9 opci\u00f3n para componer el concentrador, el resto es sencillo: ya hemos hablado del primer paso, que es cargar el firmware en el CC2531. El segundo es desplegar el software zigbee2mqtt en el concentrador. El proceso es bastante sencillo, ya que se trada de una aplicaci\u00f3n Node.jsm y se instala tan s\u00f3lo haciendo uso de un comando npm, una vez preparado el entorno para que pueda ejecutar este tipo de aplicaciones.<\/p>\n<figure id=\"attachment_4677\" aria-describedby=\"caption-attachment-4677\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/orangepizero-zigbee2mqtt.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/orangepizero-zigbee2mqtt-400x224.jpg\" alt=\"Procesos de zigbee2mqtt en Orange Pi Zero\" title=\"Procesos de zigbee2mqtt en Orange Pi Zero\" width=\"400\" height=\"224\" class=\"size-medium wp-image-4677\" \/><\/a><figcaption id=\"caption-attachment-4677\" class=\"wp-caption-text\">Procesos de zigbee2mqtt en Orange Pi Zero<\/figcaption><\/figure>\n<p>Por \u00faltimo, para tener el concentrador listo, hay que integrarlo con un servidor MQTT, que se hace mediante un fichero de configuraci\u00f3n. Y a partir de ah\u00ed, tan s\u00f3lo es cuesti\u00f3n de sacarle partido. Y es aqu\u00ed donde entra de nuevo Home Assistant: zigbee2mqtt tiene una integraci\u00f3n excelente con este sistema de dom\u00f3tica, siendo posible <a href=\"http:\/\/https:\/\/github.com\/danielwelch\/hassio-zigbee2mqtt\" target=\"_blank\">integrarlo con Home Assistant<\/a>, y hacer que el proceso de descubrimiento en \u00e9ste de los dispositivos registrados en zigbee2mqtt sea autom\u00e1tico.<\/p>\n<p>Pero he dejado lo mejor de todo para el final. Comentaba que el problema de utilizar concentradores de fabricante es que cada uno soporta solo y exclusivamente sus propios dispositivos. \u00bfCu\u00e1ntos dispositivos soporta zigbee2mqtt? Literalmente <a href=\"https:\/\/www.zigbee2mqtt.io\/information\/supported_devices.html\" target=\"_blank\">cientos<\/a>. A d\u00eda de hoy, 1217 dispositivos de 189 fabricantes distintos. Y es una lista que no para de crecer. Hace algunas semanas han sido a\u00f1adidos los <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4632\" title=\"Dispositivos zigbee del Lidl (Silvercrest) con Zigbee2MQTT\" target=\"_blank\">Silvercrest de Lidl de los que escrib\u00ed recientemente<\/a>, solucionando el problema de que el bot\u00f3n f\u00edsico de los interruptores no era reconocido dentro de las acciones: ahora s\u00ed lo reconoce.<\/p>\n<p>\u00bfQu\u00e9 cu\u00e1l es mi configuraci\u00f3n? Bueno, a d\u00eda de hoy es pel\u00edn compleja, pero tiene su gracia. Estrictamente hablando, hago uso de dos concentradores zigbee2mqtt, uno en Santiponce, y otro en Forcarey, que reportan a mi servidor MQTT, ubicado en Santiponce. Y manejo los dispositivos desde un \u00fanico Home Assistant, tambi\u00e9n ubicado en Sevilla. Cada zigbee2mqtt escribe en el servidor MQTT bajo un <em>topic<\/em> diferenciado, ya que la cantidad de dispositivos es pel\u00edn larga ya. En Santiponce hago uso de:<\/p>\n<ul>\n<li><strong>Una luz Ikea TR\u00c5DFRI<\/strong>, que fue la que lo empez\u00f3 todo, ubicada en el sal\u00f3n. Es la luz que permite variar la calidez de la luz y la intensidad de la misma.<\/li>\n<li><strong>Su correspondiente mando<\/strong>, que no est\u00e1 integrado directamente con la luz, sino que se comunica con ella de manera independiente a trav\u00e9s de zigbee2mqtt. Esto permite reconocer las acciones del mando en Home Assistant, y llegado el caso permitir\u00eda que el mando administrara dispositivos de terceros.<\/li>\n<li>Una luz <strong>M\u00fcller Licht Tint<\/strong> de Aldi, de varios colores.<\/li>\n<li>&#8230;y su <strong>mando a distancia<\/strong>. En este caso la integraci\u00f3n no es tan limpia como en el del mando de Ikea, pero funciona bien.<\/li>\n<li>Un <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4352\" title=\"Integraci\u00f3n de Aqara Cube en el sistema de dom\u00f3tica\" target=\"_blank\">cubo Aqara<\/a>, que utilizo no s\u00f3lo para controlar la luz Ikea del sal\u00f3n, sino para realizar acciones sobre la p\u00e9rgola del patio. Y esto nos lleva a otra ventaja de utilizar zigbee2mqtt: que se puede interactuar sobre <em>dispositivos que no son Zigbee<\/em>. En mi caso, sobre un NodeMCU programado por m\u00ed mismo, a trav\u00e9s de topic MQTT.<\/li>\n<li>Tres sensores de apertura de puertas y ventanas <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4540\" title=\"Control de apertura de puertas y ventanas con Zigbee y sensores Aqara MCCGQ11LM\" target=\"_blank\">Aqara MCCGQ11LM<\/a>, que reportar la apertura de las mismas mediantes mensajes de Telegran y WhatsApp.<\/li>\n<li>Un <a href=\"https:\/\/www.zigbee2mqtt.io\/how_tos\/how_to_create_a_cc2530_router.html\" target=\"_blank\">router CC2530<\/a> para mejorar la comunicaci\u00f3n de los dispositivos Zigbee con el controlador. Y es que, aunque los dispositivos Zigbee pueden construir una red de tipo Mesh para llegar al concentrador, las comunicaci\u00f3n con \u00e9ste se ve\u00eda perjudicada por la cantidad de se\u00f1ales en la banda de 2&#8217;4GHz y las distancias existentes en el caso de la casa de Santiponce. El uso de este concentrador mejor\u00f3 de manera ostensible el comportamiento del sistema.<\/li>\n<\/ul>\n<figure id=\"attachment_4682\" aria-describedby=\"caption-attachment-4682\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/diagrama-santiponce.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/diagrama-santiponce-400x186.png\" alt=\"Diagrama de dispositivos de Santiponce\" title=\"Diagrama de dispositivos de Santiponce\" width=\"400\" height=\"186\" class=\"size-medium wp-image-4682\" \/><\/a><figcaption id=\"caption-attachment-4682\" class=\"wp-caption-text\">Diagrama de dispositivos de Santiponce<\/figcaption><\/figure>\n<p>&#8230;y en el caso de Forcarey:<\/p>\n<ul>\n<li>Los mismos sensores de apertura de puertas y ventanas <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4540\" title=\"Control de apertura de puertas y ventanas con Zigbee y sensores Aqara MCCGQ11LM\" target=\"_blank\">Aqara MCCGQ11LM<\/a> que comentaba antes.<\/li>\n<li>Varios interruptores <strong>Lidl HG06337<\/strong> para controlar los radiadores el\u00e9ctricos del piso.<\/li>\n<li>Otro <strong>Aqara Cube<\/strong> para controlar las luces del sal\u00f3n, que he domotizado mediante unos <a href=\"http:\/\/bitacora.eniac2000.com\/?p=4545\" title=\"Instalaci\u00f3n manual del firmware Tasmota en dispositivos Sonoff Mini (versi\u00f3n 2020)\" target=\"_blank\">Sonoff Mini con software Tasmota<\/a>.<\/li>\n<li>Sensores de temperatura, humedad y presi\u00f3n atmosf\u00e9rica <strong>Aqara WSDCGQ11LM<\/strong>, que permitir\u00e1n automatizar el encendido de los radiadores en funci\u00f3n de las condiciones de las habitaciones.<\/li>\n<\/ul>\n<figure id=\"attachment_4681\" aria-describedby=\"caption-attachment-4681\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/diagrama-forcarey.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2021\/01\/diagrama-forcarey-400x86.png\" alt=\"Diagrama de dispositivos de Forcarey\" title=\"Diagrama de dispositivos de Forcarey\" width=\"400\" height=\"86\" class=\"size-medium wp-image-4681\" \/><\/a><figcaption id=\"caption-attachment-4681\" class=\"wp-caption-text\">Diagrama de dispositivos de Forcarey<\/figcaption><\/figure>\n<p>No est\u00e1 mal, \u00bfno?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Llevo ya unos cuantos art\u00edculos hablando sobre mi sistema de<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[72,122,123,133,160,517,543,798,835,981,1134,1179,1209,1310,1381,1817,1818],"series":[],"class_list":["post-4675","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-aldi","tag-aqara","tag-aqara-cube","tag-arduino","tag-asus-tinker-board","tag-debian","tag-domotica","tag-home-assistant","tag-ikea","tag-lidl","tag-mqtt","tag-nodemcu","tag-orange-pi-zero","tag-proxmox","tag-raspberry-pi","tag-zigbee","tag-zigbee2mqtt"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4675"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4675\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4675"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=4675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}