{"id":20591474,"url":"https://github.com/lmtreser/domotica-con-node-red","last_synced_at":"2026-04-11T11:36:26.173Z","repository":{"id":220395710,"uuid":"751536332","full_name":"lmtreser/Domotica-con-Node-RED","owner":"lmtreser","description":"Demo de implementación de panel domótico con Node-RED para proyectos de dómotica de bajo costo. ","archived":false,"fork":false,"pushed_at":"2024-02-28T19:37:57.000Z","size":1589,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-17T00:09:34.265Z","etag":null,"topics":["arduino","dashboard","domotic","esp32","esp8266-arduino","micropython","mosquitto","mqtt","nodered"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lmtreser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-01T19:58:19.000Z","updated_at":"2024-02-06T19:38:05.000Z","dependencies_parsed_at":"2024-02-08T20:25:23.596Z","dependency_job_id":null,"html_url":"https://github.com/lmtreser/Domotica-con-Node-RED","commit_stats":null,"previous_names":["lmtreser/domotica-con-node-red"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2FDomotica-con-Node-RED","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2FDomotica-con-Node-RED/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2FDomotica-con-Node-RED/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lmtreser%2FDomotica-con-Node-RED/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lmtreser","download_url":"https://codeload.github.com/lmtreser/Domotica-con-Node-RED/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242223015,"owners_count":20092171,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","dashboard","domotic","esp32","esp8266-arduino","micropython","mosquitto","mqtt","nodered"],"created_at":"2024-11-16T07:40:28.015Z","updated_at":"2026-04-11T11:36:21.152Z","avatar_url":"https://github.com/lmtreser.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Domótica con Node-RED\n\nDemo de implementación de panel domótico con Node-RED para proyectos de dómotica de bajo costo. \n\n[Node-RED](https://nodered.org/) es una herramienta de desarrollo basada en flujo para programación visual desarrollada originalmente por IBM para conectar dispositivos de hardware, API y servicios en línea como parte de la Internet de las cosas. Proporciona un editor de flujo basado en navegador web, que se puede utilizar para crear funciones de JavaScript. Más en [Wikipedia](https://en.wikipedia.org/wiki/Node-RED).\n\n![](./docs/images/Node-RED%20Editor.png)\n*Node-RED Editor*.\n\n## Arquitectura del sistema\n\nEl proyecto está basado en los siguientes componentes:\n\n- Servidor: broker MQTT Mosquitto (cloud).\n- Cliente: dashboard sobre Node-RED.\n- Cliente: hardware con sensores de temperatura y humedad ambiente, y actuador.\n\n![](./docs/images/arquitectura.png)\n*Arquitectura del sistema*.\n\n## Broker MQTT\n\nEl broker puede estar instalado en una [Raspberry Pi](https://es.wikipedia.org/wiki/Raspberry_Pi) o bien es posible utilizar algún broker público. En este caso utilizamos [test.mosquitto.org](https://test.mosquitto.org/) que alberga públicamente un servidor/broker MQTT [Eclipse Mosquitto](https://mosquitto.org/).\n\nEl servidor escucha en los siguientes puertos:\n\n- `1883` MQTT, unencrypted, unauthenticated\n- `1884` MQTT, unencrypted, authenticated\n- `8883` MQTT, encrypted, unauthenticated\n- `8884` MQTT, encrypted, client certificate required\n- `8885` MQTT, encrypted, authenticated\n- `8886` MQTT, encrypted, unauthenticated\n- `8887` MQTT, encrypted, server certificate deliberately expired\n- `8080` MQTT over WebSockets, unencrypted, unauthenticated\n- `8081` MQTT over WebSockets, encrypted, unauthenticated\n- `8090` MQTT over WebSockets, unencrypted, authenticated\n- `8091` MQTT over WebSockets, encrypted, authenticated\n\nPara realizar pruebas es posible utilizar algún cliente *desktop* como [MQTT Explorer](http://mqtt-explorer.com/).\n\n![](./docs/images/MQTT%20Explorer.png)\n*MQTT Explorer ejecutándose sobre Ubuntu 22.04*.\n\n## Implementando un dashboard con Node-RED\n\nNode-RED permite gestionar la recepción y envio de información a través de un broker MQTT, para poder comunicarse con los diferentes clientes del sistema (apps móviles, hardware, etc.). Además permite diseñar y poner en línea un completo *dashboard* (o panel de control) con la posibilidad de insertar diferentes widgets tanto para mostrar como para enviar datos.\n\n![](./docs/images/dashboard_02.png)\n*Dashboard UI*.\n\nEn este proyecto se utilizaron las siguientes dependencias:\n\n- [node-red-dashboard](https://flows.nodered.org/node/node-red-dashboard)\n- [node-red-contrib-ui-media](https://flows.nodered.org/node/node-red-contrib-ui-media)\n\n## Hardware\n\nEl hardware está basado en una placa NodeMCU (SoC ESP8266) aunque se puede utilizar sin problemas con placas basadas en el SoC ESP32. El diagrama pictórico de la versión con el SoC ESP8266 es el siguiente:\n\n![](./hardware/schematic.png)\n*Hardware basado en NodeMCU ESP8266*.\n\nHay dos versiones disponible del firmware del SoC: una implementación en C++ mediante la API de Arduino, y otra con MicroPython.\n\n## Firmware Arduino API\n\nLa primera versión del firmware, en C++, se encuentra en el directorio `./hardware/fw_arduino`. Además hay una versión funcional en línea sobre el SoC ESP32, disponible en [Wokwi](https://wokwi.com/projects/378045103778705409).\n\nPara compilar, el proyecto necesita las siguientes dependencias:\n\n- [PubSubClient](https://github.com/knolleary/pubsubclient)\n- [DHT sensor library](https://github.com/adafruit/DHT-sensor-library)\n\n## Firmware MicroPython\n\nLa segunda versión del firmware, en MicroPython, se encuentra en el directorio `./hardware/fw_micropython`. Además hay una versión funcional en línea sobre el SoC ESP32, disponible en [Wokwi](https://wokwi.com/projects/388923768636934145).\n\nPara escribir código en MicroPython y poder cargar tanto el firmware (el interprete Python) como los scripts en la memoria del SoC, es posible utilizar Thonny.\n\nThonny es un entorno de desarrollo integrado gratuito y de código abierto para Python diseñado para principiantes. Fue creado por Aivar Annamaa, un programador estonio. Más en [Wikipedia](https://en.wikipedia.org/wiki/Thonny).\n\n![](./docs/images/Thonny.png)\n*Thonny IDE*.\n\nEl script Python necesita para funcionar la siguiente dependencia:\n\n- [micropython-umqtt.robust](https://pypi.org/project/micropython-umqtt.robust/)\n\n**umqtt** es un cliente MQTT sencillo para MicroPython, que consta de dos submódulos: *umqtt.simple* y *umqtt.robust*. umqtt.robust está construido sobre umqtt.simple y agrega funciones de reconexión automática para lidiar con algunos errores de red.\n\n## Recursos\n\n- [ESP32 Pinout Reference: Which GPIO pins should you use?](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)\n- [ESP8266 Pinout Reference: Which GPIO pins should you use?](https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/)\n- [MicroPython](https://github.com/micropython/micropython)\n- [Thonny Python IDE for beginners](https://github.com/thonny/thonny/)\n\n## Licencia\n\nEste trabajo está protegido por la **Licencia MIT**. Puedes acceder a la versión original de la licencia (en inglés) a través del archivo [LICENSE](./LICENSE) o en línea en [The MIT License (MIT)](https://mit-license.org/). También proporcionamos una traducción no oficial desde [Wikipedia](https://es.m.wikipedia.org/wiki/Licencia_MIT#La_licencia):\n\nCopyright (c) 2024 Lucas Martín Treser\n\nPor la presente se concede permiso, libre de cargos, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el \"Software\"), a utilizar el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:\n\nEl aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.\n\nEL SOFTWARE SE PROPORCIONA \"COMO ESTÁ\", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO PARTICULAR E INCUMPLIMIENTO. EN NINGÚN CASO LOS AUTORES O PROPIETARIOS DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, DERIVADAS DE, FUERA DE O EN CONEXIÓN CON EL SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmtreser%2Fdomotica-con-node-red","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flmtreser%2Fdomotica-con-node-red","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flmtreser%2Fdomotica-con-node-red/lists"}