^^ Note that username and password are not None. They are an empty string "".
Attempting to MQTT connect to 192.168.10.238
460.552: DEBUG - Attempting to establish MQTT connection...
460.556: INFO - Establishing an INSECURE connection to 192.168.10.238:1883
460.582: DEBUG - Sending CONNECT to broker...
460.583: DEBUG - Fixed Header: bytearray(b'\x10\x13\x00')
Variable Header: bytearray(b'\x04MQTT\x04\x02\x00<')
460.737: DEBUG - Receiving CONNACK packet from broker
FATAL! Unable to MQTT connect to 192.168.10.238: No data received from broker for 10 seconds.
on the mqtt server side, I observe the following:
1668979633: New connection from 192.168.10.245:62670 on port 1883.
1668979633: New client connected from 192.168.10.245:62670 as cpy22457 (p2, c1, k60).
1668979633: Client cpy22457 disconnected due to protocol error.
It turns out, the existing logic in the code that checks if username is provided is not consistent when
determining if such needs to be sent or not:
I got in trouble with CONNECT in the following way:
^^ Note that username and password are not
None
. They are an empty string""
.on the mqtt server side, I observe the following:
It turns out, the existing logic in the code that checks if username is provided is not consistent when determining if such needs to be sent or not:
https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/blob/b707805400fca9b2d49373c72bbf510edda6c209/adafruit_minimqtt/adafruit_minimqtt.py#L485
and then, a few lines below:
https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/blob/b707805400fca9b2d49373c72bbf510edda6c209/adafruit_minimqtt/adafruit_minimqtt.py#L535
in my case, this discrepancy caused the username/password
""
/""
to be sent without MQTT header (var_header[6]) properly accounting for it in lines https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/blob/b707805400fca9b2d49373c72bbf510edda6c209/adafruit_minimqtt/adafruit_minimqtt.py#L485-L492 .ouch! ;)