Skip to main content

mqtty is a flexible Python package that bridges MQTT communication with serial devices. It provides an agnostic approach to MQTT client libraries, supporting both paho-mqtt and aiomqtt through helper functions, while allowing developers to manage multiple serial devices seamlessly.

Project description

mqtty

mqtty is a flexible Python package that bridges MQTT communication with serial devices. It provides an agnostic approach to MQTT client libraries, supporting both paho-mqtt and aiomqtt through helper functions, while allowing developers to manage multiple serial devices seamlessly.

Key Features

  • Serial Device Integration: Easily connect serial devices using serial_device_factory and register them under unique MQTT topics.
  • Execution Mode Flexibility: Choose between synchronous (threaded) or asynchronous modes to suit your application's requirements.
  • MQTT Client Agnostic: Use your preferred MQTT library, with helper functions like connect_paho_mqtt and connect_aio_mqtt.
  • Multi-Device Management: Use the manager to register and manage multiple serial devices, routing messages between MQTT topics and serial ports effortlessly.

Installation

Install mqtty via pip:

pip install ki2-mqtty

Quick Start

Here are examples of how to use mqtty in synchronous and asynchronous modes.

Synchronous Example

import paho.mqtt.client as mqtt
from paho.mqtt.enums import CallbackAPIVersion

from mqtty import serial_device_factory, manager_setup, connect_paho_mqtt

def main():
    mqttclient = mqtt.Client(CallbackAPIVersion.VERSION2)

    device = serial_device_factory("/dev/ttyACM0")
    manager = manager_setup("threaded").register("device-topic", device)

    connect_paho_mqtt(mqttclient, manager=manager)

    manager.start()
    mqttclient.connect("localhost", 1883, 60)
    mqttclient.loop_forever()

if __name__ == "__main__":
    main()

Asynchronous Example

from datetime import datetime
import asyncio

from aiomqtt import Client as AioMqttClient

from ki2_python_utils import run_parallel
from mqtty import serial_device_factory, manager_setup, connect_aio_mqtt

async def main():
    mqttclient = AioMqttClient("localhost", 1883)

    device = serial_device_factory("/dev/ttyACM0")
    manager = manager_setup("async").register("device-topic", device)

    mqtt_loop = connect_aio_mqtt(mqttclient, manager=manager)

    await run_parallel(
        manager.loop,
        mqtt_loop,
    )

if __name__ == "__main__":
    asyncio.run(main())

How It Works

  1. Device Registration: Use serial_device_factory to create a serial device and register it with the manager. Each device is associated with an MQTT topic for message routing.
  2. Manager Setup: Initialize the manager in either "threaded" or "async" mode, depending on your application's requirements.
  3. MQTT Integration: Use the provided helper functions to connect the manager to your MQTT client (paho-mqtt or aiomqtt).
  4. Run Your Application: Start the manager and MQTT client loop to enable communication.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ki2_mqtty-1.0.1.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ki2_mqtty-1.0.1-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file ki2_mqtty-1.0.1.tar.gz.

File metadata

  • Download URL: ki2_mqtty-1.0.1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.10.12 Linux/5.15.0-130-generic

File hashes

Hashes for ki2_mqtty-1.0.1.tar.gz
Algorithm Hash digest
SHA256 3812def5a4451364307c2fa74071b615fd3a63d6442f61e6bd0462010ab6c7cd
MD5 c15d14f20e7f493eb1346e843c1879bd
BLAKE2b-256 64e302897bdc6484d7c1ca61eeca992759e8d433b1ff89421b0f2ad1141e7235

See more details on using hashes here.

File details

Details for the file ki2_mqtty-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ki2_mqtty-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.5 CPython/3.10.12 Linux/5.15.0-130-generic

File hashes

Hashes for ki2_mqtty-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6d0f5b4d55a8f1fab34e8a71950ca85be7833b95814dbdf6ef975bc2cd66b7fa
MD5 d8ace81cd3f6598f42fcde5a8eb9c2fd
BLAKE2b-256 734e95c0568603f4a3aab74adbbca60941dbac6dfc559f419c0840801b630632

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page