A minimal MQTT Library for CircuitPython.

  • Author(s): Brent Rubell

Implementation Notes

Adapted from

Software and Dependencies:

exception adafruit_minimqtt.adafruit_minimqtt.MMQTTException

MiniMQTT Exception class.

class adafruit_minimqtt.adafruit_minimqtt.MQTT(*, broker: str, port: int | None = None, username: str | None = None, password: str | None = None, client_id: str | None = None, is_ssl: bool | None = None, keep_alive: int = 60, recv_timeout: int = 10, socket_pool=None, ssl_context=None, use_binary_mode: bool = False, socket_timeout: int = 1, connect_retries: int = 5, user_data=None)

MQTT Client for CircuitPython.

  • broker (str) – MQTT Broker URL or IP Address.

  • port (int) – Optional port definition, defaults to MQTT_TLS_PORT if is_ssl is True, MQTT_TCP_PORT otherwise.

  • username (str) – Username for broker authentication.

  • password (str) – Password for broker authentication.

  • client_id (str) – Optional client identifier, defaults to a unique, generated string.

  • is_ssl (bool) – Sets a secure or insecure connection with the broker.

  • keep_alive (int) – KeepAlive interval between the broker and the MiniMQTT client.

  • recv_timeout (int) – receive timeout, in seconds.

  • socket_pool (socket) – A pool of socket resources available for the given radio.

  • ssl_context – SSL context for long-lived SSL connections.

  • use_binary_mode (bool) – Messages are passed as bytearray instead of string to callbacks.

  • socket_timeout (int) – How often to check socket state for read/write/connect operations, in seconds.

  • connect_retries (int) – How many times to try to connect to the broker before giving up on connect or reconnect. Exponential backoff will be used for the retries.

  • user_data (class) – arbitrary data to pass as a second argument to the callbacks.

add_topic_callback(mqtt_topic: str, callback_method) None

Registers a callback_method for a specific MQTT topic.

  • mqtt_topic (str) – MQTT topic identifier.

  • callback_method (function) – The callback method.

connect(clean_session: bool = True, host: str | None = None, port: int | None = None, keep_alive: int | None = None) int

Initiates connection with the MQTT Broker. Will perform exponential back-off on connect failures.

  • clean_session (bool) – Establishes a persistent session.

  • host (str) – Hostname or IP address of the remote broker.

  • port (int) – Network port of the remote broker.

  • keep_alive (int) – Maximum period allowed for communication within single connection attempt, in seconds.

deinit() None

De-initializes the MQTT client and disconnects from the mqtt broker.

disable_logger() None

Disables logging.

disconnect() None

Disconnects the MiniMQTT client from the MQTT broker.

enable_logger(log_pkg, log_level: int = 20, logger_name: str = 'log')

Enables library logging by getting logger from the specified logging package and setting its log level.

  • log_pkg – A Python logging package.

  • log_level – Numeric value of a logging level, defaults to INFO.

  • logger_name – name of the logger, defaults to “log”.

:return logger object

is_connected() bool

Returns MQTT client session status as True if connected, False if not.


An optional logging attribute that can be set with with a Logger to enable debug logging.

loop(timeout: float = 0) list[int] | None

Non-blocking message loop. Use this method to check incoming subscription messages. Returns response codes of any messages received.


timeout (float) – Socket timeout, in seconds.

property mqtt_msg: Tuple[int, int]

Returns maximum MQTT payload and topic size.

property on_message

Called when a new message has been received on a subscribed topic.

Expected method signature is on_message(client, topic, message)

ping() list[int]

Pings the MQTT Broker to confirm if the broker is alive or if there is an active network connection. Returns response codes of any messages received while waiting for PINGRESP.

publish(topic: str, msg: str | int | float | bytes, retain: bool = False, qos: int = 0) None

Publishes a message to a topic provided.

  • topic (str) – Unique topic identifier.

  • msg (str|int|float|bytes) – Data to send to the broker.

  • retain (bool) – Whether the message is saved by the broker.

  • qos (int) – Quality of Service level for the message, defaults to zero.

reconnect(resub_topics: bool = True) int

Attempts to reconnect to the MQTT broker. Return the value from connect() if successful. Will disconnect first if already connected. Will perform exponential back-off on connect failures.


resub_topics (bool) – Whether to resubscribe to previously subscribed topics.

remove_topic_callback(mqtt_topic: str) None

Removes a registered callback method.


mqtt_topic (str) – MQTT topic identifier string.

subscribe(topic: str, qos: int = 0) None

Subscribes to a topic on the MQTT Broker. This method can subscribe to one topics or multiple topics.

  • topic (str|tuple|list) – Unique MQTT topic identifier string. If this is a tuple, then the tuple should contain topic identifier string and qos level integer. If this is a list, then each list element should be a tuple containing a topic identifier string and qos level integer.

  • qos (int) – Quality of Service level for the topic, defaults to zero. Conventional options are 0 (send at most once), 1 (send at least once), or 2 (send exactly once).

unsubscribe(topic: str) None

Unsubscribes from a MQTT topic.


topic (str|list) – Unique MQTT topic identifier string or list.

username_pw_set(username: str, password: str | None = None) None

Set client’s username and an optional password.

  • username (str) – Username to use with your MQTT broker.

  • password (str) – Password to use with your MQTT broker.

will_set(topic: str | None = None, payload: int | float | str | None = None, qos: int = 0, retain: bool = False) None

Sets the last will and testament properties. MUST be called before connect().

  • topic (str) – MQTT Broker topic.

  • payload (int|float|str) – Last will disconnection payload. payloads of type int & float are converted to a string.

  • qos (int) –

    Quality of Service level, defaults to zero. Conventional options are 0 (send at most once), 1 (send at least once), or 2 (send exactly once).


    Only options 1 or 0 are QoS levels supported by this library.

  • retain (bool) – Specifies if the payload is to be retained when it is published.

class adafruit_minimqtt.adafruit_minimqtt.NullLogger

Fake logger class that does not do anything

nothing(msg: str, *args) None

no action

exception adafruit_minimqtt.adafruit_minimqtt.TemporaryError

Temporary error class used for handling reconnects.

adafruit_minimqtt.adafruit_minimqtt.set_socket(sock, iface=None) None

Legacy API for setting the socket and network interface.

  • sock – socket object.

  • iface – internet interface object