Documentation: https://aiomqtt.bo3hm.com
Write code like this:
Publish
async with Client("test.mosquitto.org") as client:
await client.publish("temperature/outside", payload=28.4)
Subscribe
async with Client("test.mosquitto.org") as client:
await client.subscribe("temperature/#")
async for message in client.messages:
print(message.payload)
- No more callbacks! 👍
- No more return codes (welcome to the
MqttError
) - Graceful disconnection (forget about
on_unsubscribe
,on_disconnect
, etc.) - Supports MQTT versions 5.0, 3.1.1 and 3.1
- Fully type-hinted
- Did we mention no more callbacks?
pip install aiomqtt
The only dependency is paho-mqtt.
If you can't wait for the latest version, install directly from GitHub with:
pip install git+https://github.com/empicano/aiomqtt
Since Python 3.8, the default asyncio event loop is the ProactorEventLoop
. Said loop doesn't support the add_reader
method that is required by aiomqtt. Please switch to an event loop that supports the add_reader
method such as the built-in SelectorEventLoop
:
# Change to the "Selector" event loop if platform is Windows
if sys.platform.lower() == "win32" or os.name.lower() == "nt":
from asyncio import set_event_loop_policy, WindowsSelectorEventLoopPolicy
set_event_loop_policy(WindowsSelectorEventLoopPolicy())
# Run your async application as usual
asyncio.run(main())
This project is licensed under the BSD 3-clause License.
Note that the underlying paho-mqtt library is dual-licensed. One of the licenses is the Eclipse Distribution License v1.0, which is almost identical to the BSD 3-clause License. The only differences are:
- One use of "COPYRIGHT OWNER" (EDL) instead of "COPYRIGHT HOLDER" (BSD)
- One use of "Eclipse Foundation, Inc." (EDL) instead of "copyright holder" (BSD)
We're happy about contributions to aiomqtt! 🎉 You can get started by reading CONTRIBUTING.md.
This project adheres to Semantic Versioning. Breaking changes will only occur in major X.0.0
releases.
See CHANGELOG.md, which follows the principles of Keep a Changelog.