Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/empicano/aiomqtt
The idiomatic asyncio MQTT client
https://github.com/empicano/aiomqtt
async asyncio internet-of-things iot mqtt mqttv5 paho-mqtt pubsub python
Last synced: about 2 hours ago
JSON representation
The idiomatic asyncio MQTT client
- Host: GitHub
- URL: https://github.com/empicano/aiomqtt
- Owner: empicano
- License: bsd-3-clause
- Created: 2020-04-06T12:56:54.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-09T00:06:45.000Z (14 days ago)
- Last Synced: 2025-01-22T23:41:45.835Z (about 3 hours ago)
- Topics: async, asyncio, internet-of-things, iot, mqtt, mqttv5, paho-mqtt, pubsub, python
- Language: Python
- Homepage: https://aiomqtt.bo3hm.com
- Size: 453 KB
- Stars: 449
- Watchers: 8
- Forks: 80
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# The idiomatic asyncio MQTT client 🙌
**Documentation:** [https://aiomqtt.bo3hm.com](https://aiomqtt.bo3hm.com)
---
Write code like this:
**Publish**
```python
async with Client("test.mosquitto.org") as client:
await client.publish("temperature/outside", payload=28.4)
```**Subscribe**
```python
async with Client("test.mosquitto.org") as client:
await client.subscribe("temperature/#")
async for message in client.messages:
print(message.payload)
```## Key features
- 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?## Installation
```
pip install aiomqtt
```The only dependency is [paho-mqtt](https://github.com/eclipse/paho.mqtt.python).
If you can't wait for the latest version, install directly from GitHub with:
```
pip install git+https://github.com/empicano/aiomqtt
```### Note for Windows users
Since Python 3.8, the default asyncio event loop is the `ProactorEventLoop`. Said loop [doesn't support the `add_reader` method](https://docs.python.org/3/library/asyncio-platforms.html#windows) that is required by aiomqtt. Please switch to an event loop that supports the `add_reader` method such as the built-in `SelectorEventLoop`:
```python
# 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())
```## License
This project is licensed under the [BSD 3-clause License](https://opensource.org/licenses/BSD-3-Clause).
Note that the underlying paho-mqtt library is dual-licensed. One of the licenses is the [Eclipse Distribution License v1.0](https://www.eclipse.org/org/documents/edl-v10.php), 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)## Contributing
We're happy about contributions to aiomqtt! 🎉 You can get started by reading [CONTRIBUTING.md](https://github.com/empicano/aiomqtt/blob/main/CONTRIBUTING.md).
## Versioning
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Breaking changes will only occur in major `X.0.0` releases.
## Changelog
See [CHANGELOG.md](https://github.com/empicano/aiomqtt/blob/main/CHANGELOG.md), which follows the principles of [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).