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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f32f11e1a427144746f1d9162032e37f3f925b6d1151a9b8712a5c5b41efed77
|
|
| MD5 |
de7bfe6555c30afccf440f0683335c2a
|
|
| BLAKE2b-256 |
4729417c69d9bbd76a26cc7205e829011e372edb15947af88f01f98a5a31650d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d66ec767553741fc663d99380d9863adf1518d38775ff6c35e1d176c57d9c75
|
|
| MD5 |
6526e4c344a2987da6f1541d719bf54d
|
|
| BLAKE2b-256 |
8354a275fe5c4279f582f097f1a98bed7c2930128d70667fc3f8829b1fe73031
|