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
u/Feeling_Pick_2538 — 11 hours ago