A resilient asynchronous MQTT driver for MicroPython that automatically recovers from WiFi and broker outages.
MicroPython Asynchronous MQTT is a resilient MQTT client library for MicroPython that enables reliable IoT communication. It automatically recovers from network outages, supports true QoS 1 message delivery, and operates asynchronously to avoid blocking other tasks. It solves the problem of unreliable connectivity in IoT deployments, ensuring devices stay connected even with poor WiFi signals or broker downtime.
MicroPython developers building IoT devices on platforms like ESP8266, ESP32, Pyboard D, or Raspberry Pi Pico W who need reliable MQTT communication in unstable network conditions.
Developers choose this library over the official MicroPython MQTT client because it offers automatic outage recovery, true QoS 1 guarantees, non-blocking async operation, and improved tolerance for poor WiFi connectivity—critical for real-world IoT applications.
A 'resilient' asynchronous MQTT driver. Recovers from WiFi and broker outages.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Transparently reconnects after WiFi or broker outages without application intervention, solving the official client's inability to resume reliably.
Ensures message delivery with retransmission and no duplication, addressing the partial QoS 1 support in the standard umqtt library.
Built on uasyncio, it allows concurrent task scheduling without blocking, making it ideal for responsive IoT applications with multiple operations.
Maintains operation near the edge of WiFi coverage by handling retransmissions and reconnections gracefully, as highlighted in the range testing demos.
Significant RAM usage, especially on ESP8266 where it can consume about 50% of memory when frozen, limiting use on resource-constrained devices.
MQTTv5 features are incomplete, with unsupported elements like enhanced authentication and will properties, and it adds ~3KiB of RAM overhead.
Setting up encrypted connections is described as a 'black art' in the README, requiring careful handling of certificates and parameters that can be error-prone.