forked from micropython/micropython
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Open
Labels
Milestone
Description
CircuitPython version and board name
Adafruit CircuitPython 10.1.3 on 2026-02-21; Wemos Lolin C3 Mini with ESP32-C3FH4Code/REPL
import asyncio
import wifi
import socketpool
import ssl
import adafruit_minimqtt.adafruit_minimqtt as MQTT
import usyslog
BROKER = "192.168.0.1"
MQTT_PORT = 1883
MQTT_TOPICS = [
"inverter/total/P_AC",
"battery/1/relay/set",
"battery/2/relay/set",
]
sl = usyslog.UDPClient(socketpool.SocketPool(wifi.radio), ip='192.168.0.1', tag='battery')
def log(msg):
try:
sl.info(msg)
except Exception:
print(msg)
def handle_message(client, topic, message):
if topic == "inverter/total/P_AC":
power_ac = float(message)
log(f"AC power: {power_ac} W")
elif topic == "battery/1/relay/set":
if message == "ON":
log("Relay 1: turning ON")
else:
log("Relay 1: turning OFF")
elif topic == "battery/2/relay/set":
if message == "ON":
log("Relay 2: turning ON")
else:
log("Relay 2: turning OFF")
async def mqtt_receive_task():
pool = socketpool.SocketPool(wifi.radio)
ssl_ctx = ssl.create_default_context()
client = MQTT.MQTT(
broker=BROKER,
port=MQTT_PORT,
socket_pool=pool,
ssl_context=ssl_ctx,
)
client.on_message = handle_message
client.connect()
client.subscribe([(topic, 0) for topic in MQTT_TOPICS])
log("MQTT connected and subscribed.")
while True:
try:
client.loop(timeout=1)
except Exception as e:
log(f"MQTT error: {e} – reconnecting…")
try:
client.reconnect()
except Exception as re:
log(f"Reconnect failed: {re}")
await asyncio.sleep(9)
async def main():
await mqtt_receive_task()
asyncio.run(main())Behavior
After some time, 12 to 24 hours:
MQTT error: MMQTTException('Topic length 11830 in PUBLISH packet exceeds remaining length 48 - 2', None);
Description
After this exception the program becomes more and more unstable and just crashes without any error message.
I suspect a memory corruption since I use the mosquitto MQTT server with other project, without any problems, but where?
Tested with Circuitpython 10.1.3 and 10.1.4.
Two different boards tested.
Additional information
No response
Reactions are currently unavailable