IoT-lab to MQTT bridge
This module provides an easy way to redirect the input/output of the serial ports of iot-lab nodes to a MQTT broker.
The core of the module is a script intended to be run on an iotlab ssh frontend. Utilities are provided to help you run that script on the server automatically when the experiment start.
Installation
pip3 install iotlab_mqtt_bridge
On your own computer you will not be able to launch the module directly, but you will be able to use the module in scripts (see Examples).
On iotlab ssh frontends, the script may already be installed by your local admin (toulouse.iot-lab.info for example). If not, you can ask them or install it in your home directory.
Options
See iotlab-mqtt-bridge --help for detailed options. Notably, the following parameters of the bridge can be configured :
- broker (IP, broker port, encryption certificate, authentification)
- verbosity
- topic root (
topic_roothereafter) is used to construct individual node topics. - ID dictionnary (json file) used to convert iotlab IDs to a custom set of ids (each must be unique).
The arguments not described in iotlab-mqtt-bridge --help are passed down the serial_aggregator (on which this project is based).
Node topics
Each individual node topic root is constructed as follow :
- The local node name is extracted from its address. Ex:
dwm1001-1.toulouse.iot-lab.infobecomesdwm1001-1 - If an ID dictionnary was provided, this local node name (
dwm1001-1in our example) is used as a key in the dictionnary to determine the new identifier, otherwise the local name is used as identifier. topic_rootis prepended to this identifier to form thenode_topic
Node output handling
The serial output of each node is split into substrings at every '\n' character, then each substring is published in a single message (containing also the node id and a timestamp) on a specific topic (<node_topic>/out) for each node.
If this substring can be parsed as a JSON object, it is also published on a second topic (<node_topic>/out_json). The payload of messages on the latter topic are thus guaranteed to be valid json objects.
Node input handling
Each message published on <node_topic>/in gets written directly on the serial port of the associated node.
Examples
On site ssh frontend
Run on iotlab ssh frontend :
python3 -m iotlab_mqtt_bridge -b <x.x.x.x> -u <broker_username> -p <broker_password> -t "topic_root/"
If TLS is used on the broker, it may be necessary to use the argument -C <ca_cert>.
If iotlab-mqtt-bridge is already installed, running iotlab-mqtt-bridge without arguments will bridge the serial ports to mqtt4.iot-lab.info (it requires that you run iotlab-auth at least once before).
In python script
See examples/script_launcher.py in module directory.
Known issues
- The serial port can be opened only once. Consquently :
- A given node can be bridged by only one iotlab_mqtt_bridge at a time
- Web serial consoles must be closed before starting the MQTT bridge
serial_aggregatorcan not access a given node at the same time asiotlab\_mqtt\_bridge
- Serial ports can be disturbed when nodes are flashed, so it may be necessary to restart
iotlab\_mqtt\_bridgeafter re-flashing the nodes.
Metadata
Release files for iotlab-mqtt-bridge 0.1.22
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| iotlab_mqtt_bridge-0.1.22.tar.gz | 17.8 kB | Without provenance | Details for iotlab_mqtt_bridge-0.1.22.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| iotlab_mqtt_bridge-0.1.22-py3-none-any.whl | Python 3 | none | any | Details for iotlab_mqtt_bridge-0.1.22-py3-none-any.whl |
Total release size: 32.9 kB
Release files / iotlab_mqtt_bridge-0.1.22.tar.gz
| Download URL | iotlab_mqtt_bridge-0.1.22.tar.gz |
|---|---|
| Size | 17.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fb4ebe4ff812143ba8c17c34bb44d6395aeee40f2b352dbba96f04a27749e891
|
|
BLAKE2b-256 checksum How to use checksums |
442a1ce91768a8e87e5763b436b9001703d9ebd316621c3bcc0ef9ae5cef0763
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.2
|
Release files / iotlab_mqtt_bridge-0.1.22-py3-none-any.whl
| Download URL | iotlab_mqtt_bridge-0.1.22-py3-none-any.whl |
|---|---|
| Size | 15.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f19d867cbaa70da08e01ab2991dc95c519b35a70782ff6ca1850b3955ab09729
|
|
BLAKE2b-256 checksum How to use checksums |
bed7ff236942b3b59d9511cbe0c14b8216b300398928a58fd7a36431fe55e50c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.2
|
Security for iotlab-mqtt-bridge 0.1.22
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.