{"id":5645,"date":"2025-01-18T08:41:35","date_gmt":"2025-01-18T07:41:35","guid":{"rendered":"https:\/\/bitacora.eniac2000.com\/?p=5645"},"modified":"2025-01-18T08:41:35","modified_gmt":"2025-01-18T07:41:35","slug":"uso-de-pulsadores-zigbee-e-interruptores-wifi-para-emular-llaves-conmutadas-con-home-assistant","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=5645","title":{"rendered":"Uso de pulsadores Zigbee e interruptores WiFi para emular llaves conmutadas con Home Assistant"},"content":{"rendered":"<p>Como dec\u00eda en el anterior art\u00edculo, estoy haciendo algunas mejoras en la dom\u00f3tica de Forcarey, motivadas por algunos cambios en el dormitorio principal. En concreto, estamos poniendo un cabecero de cama con mesillas flotantes, que hace que el cabecero ocupe todo el frontal de la pared, impidiendo el acceso a las llaves conmutadas del dormitorio.<\/p>\n<figure id=\"attachment_5646\" aria-describedby=\"caption-attachment-5646\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2025\/01\/cabecero-mesillas-flotantes.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2025\/01\/cabecero-mesillas-flotantes-400x316.jpg\" alt=\"Ejemplo de cabecero, no el mismo modelo\" title=\"Ejemplo de cabecero, no el mismo modelo\" width=\"400\" height=\"316\" class=\"size-medium wp-image-5646\" \/><\/a><figcaption id=\"caption-attachment-5646\" class=\"wp-caption-text\">Ejemplo de cabecero, no el mismo modelo<\/figcaption><\/figure>\n<p>Esto implica que es necesario trasladar estas llaves al tablero del cabecero, lo que en condiciones normales implicar\u00eda abrir agujeros para empotrar las llaves y los enchufes, pero he pensado en hacer algo diferente para evitar hacer estos agujeros, que es usar pulsadores de tipo Zigbee, que al no necesitar cableado, son muy compactos y se pueden instalar simplemente en superficie.<\/p>\n<figure id=\"attachment_5647\" aria-describedby=\"caption-attachment-5647\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2025\/01\/pulsador-tuya.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2025\/01\/pulsador-tuya-400x400.jpg\" alt=\"Pulsador Zibgee compatible con Tuya\" title=\"Pulsador Zibgee compatible con Tuya\" width=\"400\" height=\"400\" class=\"size-medium wp-image-5647\" \/><\/a><figcaption id=\"caption-attachment-5647\" class=\"wp-caption-text\">Pulsador Zibgee compatible con Tuya<\/figcaption><\/figure>\n<p>He escogido un modelo compatible con Tuya con dos pulsadores independientes, que adem\u00e1s permite realizar tres acciones por pulsador (pulsaci\u00f3n \u00fanica, doble y larga), lo que permite mapear hasta seis acciones, y que se alimenta con una pila de bot\u00f3n. Este modelo es compatible con Zigbee2MQTT, que es lo que tengo montado para mi dom\u00f3tica, lo que me permite controlar cualquier tipo de dispositivo, y no s\u00f3lo dispositivos de tipo Zigbee.<\/p>\n<p>En cuanto al interruptor, he escogido los Sonoff Mini R2, con los que ya tengo experiencia sobrada, a los que he instalado el firmware Tasmota, de tal manera que puedo controlar el dispositivo mediante MQTT.<\/p>\n<p>El sistema de dom\u00f3tica es Home Assistant, lo que me permite definir automatizaciones para integrar el funcionamiento de los pulsadores Zigbee y del interruptor Sonoff Mini R2. Y en este caso, esta automatizaci\u00f3n me permite emular el funcionamiento de las llaves conmutadas. El despliegue ha sido el siguiente:<\/p>\n<ul>\n<li>He anulado las dos llaves que est\u00e1n en la cabecera de la cama, ya que no van a tener uso.<\/li>\n<li>He adaptado el cableado que va desde la caja de registro para que la fase est\u00e9 conectada al conector de salida de fase del Sonoff. \u00c9ste, a su vez, se ha conectado a fase y neutro de la caja de registro. Adem\u00e1s, he conectado a las entradas de pulsador manual un par de hilos que van a la antigua llave de la entrada del dormitorio, de tal manera que se pueda seguir utilizando. Esta parte es que que permite un uso de esta llave para encender y apagar, pero sin ser ya realmente conmutada.\n<p><figure id=\"attachment_5648\" aria-describedby=\"caption-attachment-5648\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2025\/01\/sonoff-mini-cableado.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2025\/01\/sonoff-mini-cableado-400x275.png\" alt=\"Esquema de cableado del Sonoff Mini en modo simple\" title=\"Esquema de cableado del Sonoff Mini en modo simple\" width=\"400\" height=\"275\" class=\"size-medium wp-image-5648\" \/><\/a><figcaption id=\"caption-attachment-5648\" class=\"wp-caption-text\">Esquema de cableado del Sonoff Mini en modo simple<\/figcaption><\/figure><\/li>\n<li>He registrado las llaves en Zigbee2MQTT. En mi caso, ha sido simplemente ponerlas en modo de emparejado (5 segundos pulsado el primer bot\u00f3n del pulsador) y se registran autom\u00e1ticamente. Es conveniente ponerles un alias descriptivo, para el posterior seguimiento del <em>topic<\/em> MQTT. Por ejemplo:<br \/>\n<blockquote><p>  &#8216;0xa4c13855fdxxxxxx&#8217;:<br \/>\n    friendly_name: interruptor_dormitorio_1<br \/>\n  &#8216;0xa4c138adxxxxxx&#8217;:<br \/>\n    friendly_name: interruptor_dormitorio_2\n<\/p><\/blockquote>\n<\/li>\n<li>En el Sonoff Mini, configurar el dispositivo para que trabaje con MQTT (Configuration->MQTT). De nuevo, es recomendable hacer uso de un <em>topic<\/em> descriptivo.<\/li>\n<li>Pasamos a Home Assistant. Aqu\u00ed tendremos que hacer dos acciones diferentes: registrar el Sonoff Mini como un dispositivo de tipo <em>switch<\/em>, y crear una automatizaci\u00f3n basada en MQTT que se dispare con los <em>topic<\/em> MQTT de los pulsadores Zigbee. <\/li>\n<li>Registro del Sonoff Mini: En mi caso lo realizo de manera manual, mediante una entrada en el fichero configuration.yaml de mi Home Assistant, con una entrada como esta:<br \/>\n<blockquote>\n<p>  &#8211; platform: mqtt<br \/>\n    name: \u00abLuz dormitorio Forcarey 1\u00bb<br \/>\n    state_topic: \u00abtopic_interruptor1\/stat\/dormitorio1\/RESULT\u00bb<br \/>\n    value_template: &#8216;{{ value_json[\u00abPOWER\u00bb] }}&#8217;<br \/>\n    command_topic: \u00abtopic_interruptor1\/cmnd\/dormitorio1\/POWER\u00bb<br \/>\n    availability_topic: \u00abtopic_interruptor1\/tele\/dormitorio1\/LWT\u00bb<br \/>\n    qos: 1<br \/>\n    payload_on: \u00abON\u00bb<br \/>\n    payload_off: \u00abOFF\u00bb<br \/>\n    payload_available: \u00abOnline\u00bb<br \/>\n    payload_not_available: \u00abOffline\u00bb<br \/>\n    retain: false<\/p><\/blockquote>\n<\/li>\n<li>Creaci\u00f3n de la automatizaci\u00f3n: Esta es la clave del asunto para lograr el funcionamiento conmutado. Se trata de crear una automatizaci\u00f3n que responda a tantos <em>topic<\/em> como interruptores tengamos, de tal modo que la activaci\u00f3n de cualquiera de ellos haga que se dispare la automatizaci\u00f3n (otra alternativa ser\u00eda usar automatizaciones independientes por pulsardor, pero el resultado no es tan limpio, y la gesti\u00f3n es m\u00e1s engorrosa). Este es un ejemplo de c\u00f3mo realizar esta automatizaci\u00f3n, para el caso de una sola pulsaci\u00f3n:<br \/>\n<blockquote><p>&#8211; alias: Activacion simple del primer pulsador de las llaves<br \/>\n  trigger:<br \/>\n   &#8211; platform: mqtt<br \/>\n     topic: topic_pulsador\/interruptor_dormitorio_1<br \/>\n   &#8211; platform: mqtt<br \/>\n     topic: topic_pulsador\/interruptor_dormitorio_2<br \/>\n  condition:<br \/>\n     condition: template<br \/>\n     value_template: &#8216;{{ \u00ab1_single\u00bb == trigger.payload_json.action }}&#8217;<br \/>\n  action:<br \/>\n     entity_id: switch.luz_dormitorio_forcarey_1<br \/>\n     service: switch.toggle\n<\/p><\/blockquote>\n<\/li>\n<li>\u00a1Y listo! Para definir hasta las seis acciones que permite este pulsador doble, basta con crear m\u00e1s automatizaciones seg\u00fan el esquema anterior, simplemente jugando con la condici\u00f3n de la automatizaci\u00f3n, configurando de manera adecuada el par\u00e1metro \u00abaction\u00bb que se recibe de cualquiera de los dos topic MQTT. Estos pueden venir con los valores siguientes:  \u00ab1_single\u00bb (que es el que se genera cuando se pulsa una vez el primero de los dos pulsadores del interruptor), \u00ab2_single\u00bb (lo mismo, para el segundo pulsador), \u00ab1_double\u00bb (pulsaci\u00f3n doble), \u00ab2_double\u00bb, \u00ab1_hold\u00bb (pulsaci\u00f3n mantenida) y \u00ab2_hold\u00bb.<\/li>\n<\/ul>\n<p>Hemos escogido un pulsador doble porque tenemos dos luces independientes en el dormitorio, una sobre la cama, y otra sobre la entrada a la habitaci\u00f3n. Con esto, tenemos un bonito sistema para controlar la iluminaci\u00f3n de manera independiente (con un segundo Sonoff Mini R2 para la otra luz, conectado de manera equivalente, claro), y tenemos a\u00fan cuatro acciones disponibles para controlar otros aspectos, como la calefacci\u00f3n o cualquier otro elemento la casa. Todo un progreso que nace de la necesidad de evitar taladrar el cabecero. <img src=\"https:\/\/bitacora.eniac2000.com\/wp-includes\/images\/smilies\/mrgreen.png\" alt=\":mrgreen:\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como dec\u00eda en el anterior art\u00edculo, estoy haciendo algunas mejoras<\/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":[798,799,1134,1568,1675,1817,1818],"series":[],"class_list":["post-5645","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-home-assistant","tag-homeassistant","tag-mqtt","tag-sonoff-mini","tag-tuya","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\/5645","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=5645"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/5645\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5645"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5645"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5645"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=5645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}