Skip to main content

Client for protocol MQTT-SN 1.2

Project description

mqttsn12-python3-client

Python3 Client implementation of the Protocol MQTT-SN 1.2 (https://mqtt.org/mqtt-specification/ or https://groups.oasis-open.org/higherlogic/ws/public/document?document_id=66091).

The library was tested with EMQX (https://www.emqx.com/en) and Hive MQ Edge (https://www.hivemq.com/products/hivemq-edge/).

Start from this url http://www.steves-internet-guide.com/mqtt-sn/ for understanding more about the protocol MQTT-SN.

The whole project is available on https://github.com/marcoratto/mqttsn12-python3-client

Use

Along with the library, two command-line tools are provided: mqtt_sn_pub and mqtt_sn_sub

Create a Python environment python -m venv env

Enable the new Python environment source env/bin/activate

Install the library pip install mqtt-sn-12

Execute the publisher client tool mqtt_sn_pub

Execute the subscriber client tool mqtt_sn_sub

Publisher tool

usage: mqtt_sn_pub [opts] -t <topic> -m <message>

MQTT-SN publisher in Python

options:
  -t, --topic TOPIC     MQTT-SN topic name to publish to
  -m, --message MESSAGE
                        Message payload to send
  -d, --enable-debug    Enable debug messages
  -c, --disable-clean-session
                        Disable clean session / enable persistent client mode
  -f, --file FILE       A file to send as the message payload
  -h, --host HOST       MQTT-SN host to connect to (default: 127.0.0.1)
  -i, --clientid CLIENTID
                        Client ID to use. Defaults to 'mqtt-sn-python-' + pid
  -I, --id-prefix       Define client id as prefix + pid (useful with broker clientid_prefixes)
  -k, --keepalive KEEPALIVE
                        Keep alive in seconds (default: 30)
  -e, --sleep SLEEP     Sleep duration in seconds when disconnecting (default: 0)
  -l, --line-mode       Read messages from stdin, sending a separate message for each line
  -n, --null-message    Send a null (zero length) message
  -p, --port PORT       Network port (default: 2442)
  -q, --qos {-1,0,1,2}  Quality of Service (0,1,2 or -1). Default: 0
  -r, --retain          Mark the message as retained
  -s, --stdin-message   Read one whole message from STDIN
  -T, --topicid TOPICID
                        Pre-defined MQTT-SN topic ID to publish to
  --timeout TIMEOUT     Timeout (default: 60)
  --will-payload WILL_PAYLOAD
                        Payload for the client Will
  --will-payload-file WILL_PAYLOAD_FILE
                        Payload for the client Will loaded from a file
  --will-qos {0,1}      QoS level for the client Will. Default: 0
  --will-retain         Make the client Will retained
  --will-topic WILL_TOPIC
                        The topic on which to publish the client Will
  --repeat REPEAT       Repeat publish N times (default: 1)
  --repeat-delay REPEAT_DELAY
                        Delay in seconds between repeats (default: 0)

Subscriber tool

usage: mqtt_sn_pub [opts] -t <topic> -m <message>

MQTT-SN publisher in Python

options:
  -t, --topic TOPIC     MQTT-SN topic name to publish to
  -m, --message MESSAGE
                        Message payload to send
  -d, --enable-debug    Enable debug messages
  -c, --disable-clean-session
                        Disable clean session / enable persistent client mode
  -f, --file FILE       A file to send as the message payload
  -h, --host HOST       MQTT-SN host to connect to (default: 127.0.0.1)
  -i, --clientid CLIENTID
                        Client ID to use. Defaults to 'mqtt-sn-python-' + pid
  -I, --id-prefix       Define client id as prefix + pid (useful with broker clientid_prefixes)
  -k, --keepalive KEEPALIVE
                        Keep alive in seconds (default: 30)
  -e, --sleep SLEEP     Sleep duration in seconds when disconnecting (default: 0)
  -l, --line-mode       Read messages from stdin, sending a separate message for each line
  -n, --null-message    Send a null (zero length) message
  -p, --port PORT       Network port (default: 2442)
  -q, --qos {-1,0,1}    Quality of Service (-1, 0, 1). Default: 0
  -r, --retain          Mark the message as retained
  -s, --stdin-message   Read one whole message from STDIN
  -T, --topicid TOPICID
                        Pre-defined MQTT-SN topic ID to publish to
  --timeout TIMEOUT     Timeout (default: 60)
  --will-payload WILL_PAYLOAD
                        Payload for the client Will
  --will-payload-file WILL_PAYLOAD_FILE
                        Payload for the client Will loaded from a file
  --will-qos {0,1}      QoS level for the client Will. Default: 0
  --will-retain         Make the client Will retained
  --will-topic WILL_TOPIC
                        The topic on which to publish the client Will
  --repeat REPEAT       Repeat publish N times (default: 1)
  --repeat-delay REPEAT_DELAY
                        Delay in seconds between repeats (default: 0)

Code Coverage

The following table summarizes the code coverage of the library:

Name Stmts Miss Cover
src/mqttsn12/MqttSnConstants.py 61 0 100%
src/mqttsn12/__init__.py 0 0 100%
src/mqttsn12/client/MqttSnClient.py 747 131 82%
src/mqttsn12/client/MqttSnClientException.py 12 8 33%
src/mqttsn12/client/__init__.py 0 0 100%
src/mqttsn12/packets.py 992 321 68%
tests/unit_test_publisher.py 127 1 99%
tests/unit_test_subscriber.py 293 20 93%
TOTAL 2232 481 78%

Message Types

Below you can find the list of the Message Type implemented:

MsgType Field Status Note
0x00 ADVERTISE NA
0x01 SEARCHGW Implemented
0x02 GWINFO Implemented
0x03 reserved NA
0x04 CONNECT Implemented
0x05 CONNACK Implemented
0x06 WILLTOPICREQ Implemented
0x07 WILLTOPIC Implemented
0x08 WILLMSGREQ Implemented
0x09 WILLMSG Implemented
0x0A REGISTER Implemented
0x0B REGACK Implemented
0x0C PUBLISH Implemented
0x0D PUBACK Implemented
0x0E PUBCOMP Implemented
0x0F PUBREC Implemented
0x10 PUBREL Implemented
0x11 reserved NA
0x12 SUBSCRIBE Implemented
0x13 SUBACK Implemented
0x14 UNSUBSCRIBE Implemented
0x15 UNSUBACK Implemented
0x16 PINGREQ Implemented
0x17 PINGRESP Implemented
0x18 DISCONNECT Implemented
0x19 reserved NA
0x1A WILLTOPICUPD Implemented
0x1B WILLTOPICRESP Implemented
0x1C WILLMSGUPD Implemented
0x1D WILLMSGRESP Implemented
0x1E-0xFD reserved NA
0xFE Encapsulated message NA
0xFF reserved NA

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_sn_12-1.0.9.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

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

mqtt_sn_12-1.0.9-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file mqtt_sn_12-1.0.9.tar.gz.

File metadata

  • Download URL: mqtt_sn_12-1.0.9.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for mqtt_sn_12-1.0.9.tar.gz
Algorithm Hash digest
SHA256 f32f11e1a427144746f1d9162032e37f3f925b6d1151a9b8712a5c5b41efed77
MD5 de7bfe6555c30afccf440f0683335c2a
BLAKE2b-256 4729417c69d9bbd76a26cc7205e829011e372edb15947af88f01f98a5a31650d

See more details on using hashes here.

File details

Details for the file mqtt_sn_12-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: mqtt_sn_12-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for mqtt_sn_12-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 4d66ec767553741fc663d99380d9863adf1518d38775ff6c35e1d176c57d9c75
MD5 6526e4c344a2987da6f1541d719bf54d
BLAKE2b-256 8354a275fe5c4279f582f097f1a98bed7c2930128d70667fc3f8829b1fe73031

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