-
Notifications
You must be signed in to change notification settings - Fork 51
Description
After updating MiniMQTT from version 7.3.2 to 7.4.1, I have a problem with the loop() function, which, upon closer investigation, throws an MMQTTException (this issue occurs every second call). The exact link where the error occurs is here: L1035. For my purposes, I am modified the line to return an error.
raise MMQTTException(f"OSError: error: {error}, errno: {error.errno}.")
Here is a snippet from the testing code:
try:
# check if subscribes is enabled
if mqtt.is_subscriber():
try:
mqtt.mqtt_client.loop()
except MQTT.MMQTTException as e:
print('MQTTException ...')
print(e)
else:
print ('Loop OK ...')
# BME680
pub_data = dict({})
pub_data["temperature"], \
pub_data["humidity"], \
pub_data["pressure"], \
pub_data["gas"], \
pub_data["altitude"], \
pub_data["dewpoint"] = bme680.get_measurement(dew_point=True)
# pub values from sensor
mqtt.pub(pub_data)
# wait one minute
time.sleep(60)
except KeyboardInterrupt as e:
print("Keyboard exit!")
import sys
sys.exit()
except:
microcontroller.reset()
Here is the output from Thonny's debugging console:
Attempting to connect to broker.
Connected to MQTT Broker!
Flags: 0
RC: 0
Subscribed to <topic> with QOS level 0
MQTTException ...
OSError: error: -116, errno: -116.
RAW T: 34.2737, CPU T: 31.3517
T: 30.7, RH: 100, hPa: 642, Gas: 430446, Alt: 347, Dew: 30.7
Published to <topic> with PID 1
Loop OK ...
RAW T: 30.9062, CPU T: 31.3517
T: 27.6, RH: 51, hPa: 1018, Gas: 482123, Alt: 218, Dew: 16.6
Published to <topic> with PID 1
MQTTException ...
OSError: error: -116, errno: -116.
RAW T: 29.5876, CPU T: 30.8835
T: 26.4, RH: 55, hPa: 1018, Gas: 449328, Alt: 218, Dew: 16.6
Published to <topic> with PID 1
...
In version 7.3.2, the loop() function worked without any issues. From what I have investigated, it appears that the error is not affected by whether I am using the original CircuitPython 8.0.5 or the latest version 8.2.6.
Links to my complete example code and the MiniMQTT wrapper.
Hardware:
Raspberry Pico W
Broker:
Mosquitto 2.0.18
Can I modify my code as I'm writing below, but it doesn't seem very elegant to me, especially since it worked in the previous version.
try:
mqtt.mqtt_client.loop()
except MQTT.MMQTTException as e:
pass
Thank you and have a great day!