Skip to main content

Weapons grade MQTT packet codec.

Project description

A weapons grade MQTT packet encoder and decoder (codec).

Status

The mqtt-codec package is an MQTT 3.1.1 packet encoder and decoder (codec). The library has high test coverage (~94%) and is known to perform well in distributed IoT networks with thousands of nodes.

Installation

The mqtt-codec package can be from pypi.org with pip:

pip install mqtt-codec

Usage

An encode/decode cycle looks like this:

>>> from io import BytesIO
>>> from binascii import b2a_hex
>>> import mqtt_codec.packet
>>> import mqtt_codec.io
>>>
>>> # Encode a Connect packet
>>> will = mqtt_codec.packet.MqttWill(qos=0, topic='hello', message='message', retain=True)
>>> connect = mqtt_codec.packet.MqttConnect(client_id='client_id', clean_session=False, keep_alive=0, will=will)
>>> with BytesIO() as f:
...   num_bytes_written = connect.encode(f)
...   buf = f.getvalue()
...
>>> assert len(buf) == num_bytes_written
>>> print('0x{} ({} bytes)'.format(b2a_hex(buf), len(buf)))
0x102500044d515454042400000009636c69656e745f6964000568656c6c6f00076d657373616765 (39 bytes)
>>>
>>> # Decode the connect packet and assert equality.
>>> with mqtt_codec.io.BytesReader(buf) as f:
...   num_bytes_read, decoded_connect = connect.decode(f)
...
>>> assert len(buf) == num_bytes_written
>>> assert connect == decoded_connect
>>> print('  Encoded {}'.format(connect))
  Encoded MqttConnect(client_id='client_id', clean_session=False, keep_alive=0, username=***, password=***, will=MqttWill(topic=hello, payload=0x6d657373616765, retain=True, qos=0))
>>> print('= Decoded {}'.format(decoded_connect))
= Decoded MqttConnect(client_id=u'client_id', clean_session=False, keep_alive=0, username=***, password=***, will=MqttWill(topic=hello, payload=0x6d657373616765, retain=True, qos=0))

Python Requirements

The mqtt-codec project has been tested on Linux against these environments:

  • Python 2.7

  • Python 3.4

  • Python 3.5

  • Python 3.6

  • Python 3.7

Python versions Python 3.0 - 3.3 may work but are not tested as part of the project continuous integration infrastructure.

Library Requirements

When running Python versions less than 3.4 the enum34 package is required. There are no other package requirements.

Project Infrastructure

The project is coordinated through public infrastructure available at several places:

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

mqtt-codec-1.0.1.tar.gz (14.2 kB view details)

Uploaded Source

File details

Details for the file mqtt-codec-1.0.1.tar.gz.

File metadata

  • Download URL: mqtt-codec-1.0.1.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for mqtt-codec-1.0.1.tar.gz
Algorithm Hash digest
SHA256 bdb9d50a2f3823e499820c548baff90759e11c6d569a30238d8f52dfb68bad50
MD5 9083e47ff66c67413b056d2f197b9ec5
BLAKE2b-256 52ac0a10cd94097c90661ccad1919a8598e9b5f785611a094d86bcb18d6013f8

See more details on using hashes here.

Supported by

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