A MicroPython framework for building and deploying smart home nodes on ESP32/ESP8266 microcontrollers using MQTT communication.
pysmartnode is a MicroPython framework for building smart home automation nodes on microcontrollers like ESP32 and ESP8266. It provides a structured way to create custom sensors, switches, and devices that communicate over MQTT, integrating seamlessly with systems like Home Assistant. The framework handles networking, component management, and reliability features, allowing developers to focus on hardware-specific logic.
IoT developers and hobbyists building custom smart home devices on MicroPython-compatible hardware, especially those using ESP32 or ESP8266 boards and wanting MQTT integration with Home Assistant.
It offers a more accessible and extensible alternative to C/C++-based smart home frameworks, with clear documentation, easy component creation, and built-in reliability features like crash recovery. The standardized sensor/switch APIs and MQTT auto-discovery simplify development and integration.
Micropython Smarthome framework
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides templates and base classes for sensors and switches, simplifying development with standardized APIs and reducing boilerplate code, as shown in the _templates directory.
Built-in MQTT communication with auto-discovery for Home Assistant, using a reliable custom fork of mqtt_as for robust messaging and network handling.
Tested on ESP32 and ESP8266 with software watchdogs and resilient network features, ensuring device availability and crash recovery, especially for uasyncio bugs.
Well-organized codebase with commented files and a flowchart, making it easy to understand and navigate, as emphasized in the README's philosophy.
Requires integrating frozen bytecode or .mpy files into MicroPython firmware, which can be challenging for those unfamiliar with embedded build processes, as noted in the 'Getting started' section.
No GPIO support on the Unix port, and planned implementation is slow and not a C-module, restricting its use for hardware simulation or testing, as admitted in the hardware section.
Key documentation like component details is pending in the wiki, and configuration examples use hjson format requiring conversion to JSON, adding extra steps for users.