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.1.4.tar.gz (6.2 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.1.4-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ki2_mqtty-1.1.4.tar.gz
  • Upload date:
  • Size: 6.2 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.1.4.tar.gz
Algorithm Hash digest
SHA256 621b12357f96a3e36ab4ca372758b6a79b166791d9217f2cc1201f38eaafcc73
MD5 8d5e69c22559ae92277873d93f6aa064
BLAKE2b-256 32c08a110be56c8d67e836c23bdea1e4546e58edc4310bbee0e5caeaf43493a2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ki2_mqtty-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 7.8 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.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4fb02f6912413a52604529871aead9708ab50f654233557ac80a73255d82dc11
MD5 5f81428443475baf0088e82dcb2594a1
BLAKE2b-256 fe1f189b6bd336b4b175f8371a122e7ac5c0f69af4e76fc412aafbe24cac7b16

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