Skip to content

Klork-droid/aiomqtt

This branch is 1 commit ahead of, 24 commits behind empicano/aiomqtt:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
ΠšΠΈΡ€ΠΈΠ»Π» Π”ΡŽΠΊΠΈΠ½
Jun 18, 2024
7403a38 Β· Jun 18, 2024
Mar 27, 2024
Dec 29, 2023
Jun 5, 2024
Jun 6, 2024
Dec 29, 2023
Jun 5, 2024
Jun 16, 2023
Jun 12, 2023
Apr 24, 2024
Jan 15, 2024
Oct 30, 2022
Jun 18, 2024
Jun 7, 2024
Jun 12, 2023
Jun 18, 2024

Repository files navigation

The idiomatic asyncio MQTT client πŸ™Œ

test PyPI downloads PyPI version Supported Python versions Coverage Typing: strict Ruff License: BSD-3-Clause

Documentation: https://sbtinstruments.github.io/aiomqtt


aiomqtt is a lightweight and idiomatic MQTT client:

Publish

async with aiomqtt.Client("test.mosquitto.org") as client:
    await client.publish("temperature/outside", payload=28.4)

Subscribe

async with aiomqtt.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.

If you need proxy support, you can install with the proxy extra:

pip install aiomqtt[proxy]

If you can't wait for the latest version, install directly from GitHub with:

pip install git+https://github.com/sbtinstruments/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 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())

License

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)

Contributing

We're very happy about contributions to aiomqtt! ✨ You can get started by reading CONTRIBUTING.md.

Versioning

This project adheres to Semantic Versioning. Breaking changes will only occur in major X.0.0 releases.

Changelog

See CHANGELOG.md, which follows the principles of Keep a Changelog.

About

The idiomatic asyncio MQTT client, wrapped around paho-mqtt

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.4%
  • Shell 3.6%