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.5.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.5-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ki2_mqtty-1.1.5.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.5.tar.gz
Algorithm Hash digest
SHA256 b199e64975173502123b508a0658a886b31587266103c10064a2c12358ac9281
MD5 ce5ecf0f0b9c5449671a2dcab0deead1
BLAKE2b-256 0cf90c9c7f7f5bbaa0fb8d32471de3a0f2d34d842f0827442b9aa7284199893c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ki2_mqtty-1.1.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ee28669444669fb3433411f0d77a053be5620dd5853ad5efae7b098c89cb1ace
MD5 37532c66bc115e4e3851c758a5f97f22
BLAKE2b-256 616be50eeb01fccee56d2185bb2f81293f747a17812e8a13ab3c5338a52cb767

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