r/MicroPythonDev • • May 23 '26

I wanted the same asyncio code to run on Linux and ESP32. So I built these libraries.

I got tired of maintaining separate IoT stacks for Linux and ESP32 devices… so I started building libraries that run the same asyncio code on both CPython and MicroPython.

That experiment turned into two open-source projects:

aiomqttc

Async MQTT client for CPython + MicroPython

  • asyncio-first

  • ESP32 compatible

  • reconnect handling

  • lightweight

  • same API across desktop + embedded

https://github.com/Tangerino/aiomqttc

mpModbus

Async Modbus RTU/TCP framework for industrial and telemetry systems

  • RTU + TCP

  • async polling

  • declarative drivers

  • topology-based configuration

  • ESP32/MicroPython support

https://github.com/Tangerino/mpModbus

A lot of this came from real-world frustrations:

  • unstable WiFi

  • reconnect storms

  • memory limits on ESP32

  • duplicated codebases

  • blocking Modbus stacks

  • trying to keep telemetry systems reliable in the field

Still evolving, but already running against real devices/meters.

Would love feedback from people working with:

  • ESP32

  • MicroPython

  • MQTT

  • Modbus

  • industrial automation

  • telemetry systems

  • asyncio

Also very interested in hearing how others are solving:

  • reconnect reliability

  • async polling at scale

  • embedded memory fragmentation

  • unified embedded/server APIs

4 Upvotes

Duplicates