aiomqtt


Nameaiomqtt JSON
Version 2.0.1 PyPI version JSON
download
home_pagehttps://github.com/sbtinstruments/aiomqtt
SummaryThe idiomatic asyncio MQTT client, wrapped around paho-mqtt
upload_time2024-03-13 22:10:16
maintainer
docs_urlNone
authorFrederik Aalund
requires_python>=3.8,<4.0
licenseBSD-3-Clause
keywords mqtt iot internet-of-things asyncio paho-mqtt mqttv5
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">The idiomatic asyncio MQTT client 🙌</h1>
<p align="center"><em>(formerly known as asyncio-mqtt)</em></p>
<p align="center">
    <a href="https://github.com/sbtinstruments/aiomqtt/blob/main/LICENSE"><img alt="License: BSD-3-Clause" src="https://img.shields.io/github/license/sbtinstruments/aiomqtt"></a>
    <a href="https://pypi.org/project/aiomqtt"><img alt="PyPI version" src="https://img.shields.io/pypi/v/aiomqtt"></a>
    <a href="https://pypi.org/project/aiomqtt"><img alt="Supported Python versions" src="https://img.shields.io/pypi/pyversions/aiomqtt.svg"></a>
    <a href="https://pypi.org/project/aiomqtt"><img alt="PyPI downloads" src="https://img.shields.io/pypi/dm/aiomqtt"></a>
    <a href="https://github.com/sbtinstruments/aiomqtt/actions/workflows/test.yml"><img alt="test" src="https://github.com/sbtinstruments/aiomqtt/actions/workflows/test.yml/badge.svg"></a>
    <a href="https://github.com/sbtinstruments/aiomqtt/actions/workflows/docs.yml"><img alt="docs" src="https://github.com/sbtinstruments/aiomqtt/actions/workflows/docs.yml/badge.svg"></a>
    <a href="https://codecov.io/gh/sbtinstruments/aiomqtt"><img alt="Coverage" src="https://img.shields.io/codecov/c/github/sbtinstruments/aiomqtt"></a>
    <a href="https://github.com/sbtinstruments/aiomqtt"><img alt="Typing: strict" src="https://img.shields.io/badge/typing-strict-green.svg"></a>
    <a href="https://github.com/sbtinstruments/aiomqtt"><img alt="Code style: Ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/format.json"></a>
    <a href="https://github.com/astral-sh/ruff"><img alt="Ruff" src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json"></a>
</p>

<!-- pitch start -->

Write code like this:

**Publish**

```python
async with Client("test.mosquitto.org") as client:
    await client.publish("humidity/outside", payload=0.38)
```

**Subscribe**

```python
async with Client("test.mosquitto.org") as client:
    await client.subscribe("humidity/#")
    async for message in client.messages:
        print(message.payload)
```

aiomqtt combines the stability of the time-proven [paho-mqtt](https://github.com/eclipse/paho.mqtt.python) library with an idiomatic asyncio interface:

- 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?

<!-- pitch end -->

---

**[Read the documentation at sbtinstruments.github.io/aiomqtt](https://sbtinstruments.github.io/aiomqtt)**

---

<!-- documentation start -->

## Installation

aiomqtt can be installed via `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, you can install aiomqtt 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](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 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](https://github.com/sbtinstruments/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

The changelog lives in [CHANGELOG.md](https://github.com/sbtinstruments/aiomqtt/blob/main/CHANGELOG.md). It follows the principles of [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## Related projects

Is aiomqtt not what you're looking for? There are a few other clients you can try:

- [paho-mqtt](https://github.com/eclipse/paho.mqtt.python): Synchronous client
- [micropython-mqtt](https://github.com/peterhinch/micropython-mqtt): Asynchronous client for microcontrollers in MicroPython
- [gmqtt](https://github.com/wialon/gmqtt): Asynchronous client
- [fastapi-mqtt](https://github.com/sabuhish/fastapi-mqtt): Asynchronous wrapper around gmqtt; Simplifies integration with FastAPI
- [amqtt](https://github.com/Yakifo/amqtt): Asynchronous client; Includes a broker
- [trio-paho-mqtt](https://github.com/bkanuka/trio-paho-mqtt): Asynchronous wrapper around paho-mqtt; Based on trio instead of asyncio


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/sbtinstruments/aiomqtt",
    "name": "aiomqtt",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "",
    "keywords": "mqtt,iot,internet-of-things,asyncio,paho-mqtt,mqttv5",
    "author": "Frederik Aalund",
    "author_email": "fpa@sbtinstruments.com",
    "download_url": "https://files.pythonhosted.org/packages/1c/93/d8aae771d12ab974112868e46921215668f1d612a739e11a8b59b4ce9e33/aiomqtt-2.0.1.tar.gz",
    "platform": null,
    "description": "<h1 align=\"center\">The idiomatic asyncio MQTT client \ud83d\ude4c</h1>\n<p align=\"center\"><em>(formerly known as asyncio-mqtt)</em></p>\n<p align=\"center\">\n    <a href=\"https://github.com/sbtinstruments/aiomqtt/blob/main/LICENSE\"><img alt=\"License: BSD-3-Clause\" src=\"https://img.shields.io/github/license/sbtinstruments/aiomqtt\"></a>\n    <a href=\"https://pypi.org/project/aiomqtt\"><img alt=\"PyPI version\" src=\"https://img.shields.io/pypi/v/aiomqtt\"></a>\n    <a href=\"https://pypi.org/project/aiomqtt\"><img alt=\"Supported Python versions\" src=\"https://img.shields.io/pypi/pyversions/aiomqtt.svg\"></a>\n    <a href=\"https://pypi.org/project/aiomqtt\"><img alt=\"PyPI downloads\" src=\"https://img.shields.io/pypi/dm/aiomqtt\"></a>\n    <a href=\"https://github.com/sbtinstruments/aiomqtt/actions/workflows/test.yml\"><img alt=\"test\" src=\"https://github.com/sbtinstruments/aiomqtt/actions/workflows/test.yml/badge.svg\"></a>\n    <a href=\"https://github.com/sbtinstruments/aiomqtt/actions/workflows/docs.yml\"><img alt=\"docs\" src=\"https://github.com/sbtinstruments/aiomqtt/actions/workflows/docs.yml/badge.svg\"></a>\n    <a href=\"https://codecov.io/gh/sbtinstruments/aiomqtt\"><img alt=\"Coverage\" src=\"https://img.shields.io/codecov/c/github/sbtinstruments/aiomqtt\"></a>\n    <a href=\"https://github.com/sbtinstruments/aiomqtt\"><img alt=\"Typing: strict\" src=\"https://img.shields.io/badge/typing-strict-green.svg\"></a>\n    <a href=\"https://github.com/sbtinstruments/aiomqtt\"><img alt=\"Code style: Ruff\" src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/format.json\"></a>\n    <a href=\"https://github.com/astral-sh/ruff\"><img alt=\"Ruff\" src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\"></a>\n</p>\n\n<!-- pitch start -->\n\nWrite code like this:\n\n**Publish**\n\n```python\nasync with Client(\"test.mosquitto.org\") as client:\n    await client.publish(\"humidity/outside\", payload=0.38)\n```\n\n**Subscribe**\n\n```python\nasync with Client(\"test.mosquitto.org\") as client:\n    await client.subscribe(\"humidity/#\")\n    async for message in client.messages:\n        print(message.payload)\n```\n\naiomqtt combines the stability of the time-proven [paho-mqtt](https://github.com/eclipse/paho.mqtt.python) library with an idiomatic asyncio interface:\n\n- No more callbacks! \ud83d\udc4d\n- No more return codes (welcome to the `MqttError`)\n- Graceful disconnection (forget about `on_unsubscribe`, `on_disconnect`, etc.)\n- Supports MQTT versions 5.0, 3.1.1 and 3.1\n- Fully type-hinted\n- Did we mention no more callbacks?\n\n<!-- pitch end -->\n\n---\n\n**[Read the documentation at sbtinstruments.github.io/aiomqtt](https://sbtinstruments.github.io/aiomqtt)**\n\n---\n\n<!-- documentation start -->\n\n## Installation\n\naiomqtt can be installed via `pip install aiomqtt`. The only dependency is [paho-mqtt](https://github.com/eclipse/paho.mqtt.python).\n\nIf you can't wait for the latest version, you can install aiomqtt directly from GitHub with:\n\n`pip install git+https://github.com/sbtinstruments/aiomqtt`\n\n### Note for Windows users\n\nSince 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`:\n\n```python\n# Change to the \"Selector\" event loop if platform is Windows\nif sys.platform.lower() == \"win32\" or os.name.lower() == \"nt\":\n    from asyncio import set_event_loop_policy, WindowsSelectorEventLoopPolicy\n    set_event_loop_policy(WindowsSelectorEventLoopPolicy())\n# Run your async application as usual\nasyncio.run(main())\n```\n\n## License\n\nThis project is licensed under the [BSD 3-clause License](https://opensource.org/licenses/BSD-3-Clause).\n\nNote 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 differences are:\n\n- One use of \"COPYRIGHT OWNER\" (EDL) instead of \"COPYRIGHT HOLDER\" (BSD)\n- One use of \"Eclipse Foundation, Inc.\" (EDL) instead of \"copyright holder\" (BSD)\n\n## Contributing\n\nWe're very happy about contributions to aiomqtt! \u2728 You can get started by reading [CONTRIBUTING.md](https://github.com/sbtinstruments/aiomqtt/blob/main/CONTRIBUTING.md).\n\n## Versioning\n\nThis project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Breaking changes will only occur in major `X.0.0` releases.\n\n## Changelog\n\nThe changelog lives in [CHANGELOG.md](https://github.com/sbtinstruments/aiomqtt/blob/main/CHANGELOG.md). It follows the principles of [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).\n\n## Related projects\n\nIs aiomqtt not what you're looking for? There are a few other clients you can try:\n\n- [paho-mqtt](https://github.com/eclipse/paho.mqtt.python): Synchronous client\n- [micropython-mqtt](https://github.com/peterhinch/micropython-mqtt): Asynchronous client for microcontrollers in MicroPython\n- [gmqtt](https://github.com/wialon/gmqtt): Asynchronous client\n- [fastapi-mqtt](https://github.com/sabuhish/fastapi-mqtt): Asynchronous wrapper around gmqtt; Simplifies integration with FastAPI\n- [amqtt](https://github.com/Yakifo/amqtt): Asynchronous client; Includes a broker\n- [trio-paho-mqtt](https://github.com/bkanuka/trio-paho-mqtt): Asynchronous wrapper around paho-mqtt; Based on trio instead of asyncio\n\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "The idiomatic asyncio MQTT client, wrapped around paho-mqtt",
    "version": "2.0.1",
    "project_urls": {
        "Documentation": "https://sbtinstruments.github.io/aiomqtt",
        "Homepage": "https://github.com/sbtinstruments/aiomqtt",
        "Issue tracker": "https://github.com/sbtinstruments/aiomqtt/issues",
        "Repository": "https://github.com/sbtinstruments/aiomqtt"
    },
    "split_keywords": [
        "mqtt",
        "iot",
        "internet-of-things",
        "asyncio",
        "paho-mqtt",
        "mqttv5"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c8cee2353bb4f2d4232981e5aff348c0bf8e2ca1e3abaff4278960952e603825",
                "md5": "379499a8caf11c1cf56afa39841e6b0f",
                "sha256": "7c26a867212366ae0841571e6c2d06cebc00c2de029475b920c2cd7396aeacea"
            },
            "downloads": -1,
            "filename": "aiomqtt-2.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "379499a8caf11c1cf56afa39841e6b0f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 16028,
            "upload_time": "2024-03-13T22:10:14",
            "upload_time_iso_8601": "2024-03-13T22:10:14.809915Z",
            "url": "https://files.pythonhosted.org/packages/c8/ce/e2353bb4f2d4232981e5aff348c0bf8e2ca1e3abaff4278960952e603825/aiomqtt-2.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1c93d8aae771d12ab974112868e46921215668f1d612a739e11a8b59b4ce9e33",
                "md5": "26aa7156e8ba8859828fa1ab5445da18",
                "sha256": "60f6451c8ab7235cfb392b1b0cab398e9bc6040f4b140628c0615371abcde15f"
            },
            "downloads": -1,
            "filename": "aiomqtt-2.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "26aa7156e8ba8859828fa1ab5445da18",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 16940,
            "upload_time": "2024-03-13T22:10:16",
            "upload_time_iso_8601": "2024-03-13T22:10:16.522237Z",
            "url": "https://files.pythonhosted.org/packages/1c/93/d8aae771d12ab974112868e46921215668f1d612a739e11a8b59b4ce9e33/aiomqtt-2.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-13 22:10:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sbtinstruments",
    "github_project": "aiomqtt",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "aiomqtt"
}
        
Elapsed time: 0.30320s