lorawan2mqtt
Decode LoRaWAN sensor payloads into clean MQTT / Home Assistant data.
Like Zigbee2MQTT, but for LoRaWAN sensors — without running a full
network server stack. This project is being built in the open, starting with its
foundation: a community codec database that turns raw LoRaWAN payloads into named,
typed values (temperature = 24.1 °C), one JSON file per sensor model.
Status
| Component | Status |
|---|---|
| Codec database | 🟢 open for contributions |
| Codec validator + CI | 🟢 working (tools/validate.py) |
| USB bridge (gateway on USB → MQTT + HA Discovery) | 🟡 early preview |
| Home Assistant add-on | 🟡 early preview |
| MQTT bridge (UDP packet forwarder → decoded MQTT + HA Discovery) | 🔜 planned |
USB bridge — "the Zigbee dongle of LoRaWAN"
Plug an Awaro gateway (firmware 3.4.0+) into any machine over USB: it streams every decoded sensor frame as JSON lines on the serial port, and the bridge republishes them as MQTT + Home Assistant discovery entities — zero cloud, zero WiFi, zero codec configuration on the host:
pip install pyserial paho-mqtt
python -m lorawan2mqtt.usb_bridge --port /dev/ttyUSB0 --mqtt-host 127.0.0.1
Early preview: developed and bench-tested against firmware 3.4.0; the Home Assistant add-on packaging is untested in container yet.
The codec format
A codec is a small JSON file describing how to read a sensor's payload:
{
"vendor": "acme",
"model": "TH-1",
"name": "acme-th1",
"description": "Temperature & humidity sensor",
"spec": "temp:i16@0/10#°C hum:u8@2#% bat:u16@3/1000#V",
"tests": [
{ "fport": 2, "payload": "00F1480BB8",
"expect": { "temp": 24.1, "hum": 72, "bat": 3.0 } }
]
}
The spec grammar is documented in codecs/README.md.
Every codec ships with test vectors; CI replays them on every pull request.
These files are directly importable into the Awaro gateway (Decoders tab → Import a file), and will be the decoding engine of the upcoming bridge. Contributing a codec makes your sensor work everywhere at once.
Contributing
- Copy
codecs/example/example-sensor.jsontocodecs/<vendor>/<model>.json. - Fill in the fields and at least one real test vector (a payload captured from the sensor).
- Check it locally:
python tools/validate.py - Open a pull request.
No build environment needed — a codec is just a JSON file.
Maintained by Awaro
This project is maintained by the team behind Awaro — a plug-and-play LoRaWAN gateway (ESP32-S3 + SX1302, 8 channels) with this decoding engine, a local network server, MQTT / Home Assistant / Domoticz integrations built in, and no server to run. If you want lorawan2mqtt without maintaining anything: that's the box.
License
MIT — codecs included. Sensor payload layouts are published by their vendors; each codec file credits its source.
Release files for lorawan2mqtt 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lorawan2mqtt-0.0.1.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lorawan2mqtt-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.1 kB
Release files / lorawan2mqtt-0.0.1.tar.gz
| Download URL | lorawan2mqtt-0.0.1.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b5ec82cba61b3e5ff32e88dc6ad775ad0ac51fe10b8a34a1b31956c984c689dc
|
|
BLAKE2b-256 checksum How to use checksums |
0e0dc146d60afef1b71568f0efa36e10a80601f5d07d0cf19d4892ba96ee6fdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.
Transparency logRelease files / lorawan2mqtt-0.0.1-py3-none-any.whl
| Download URL | lorawan2mqtt-0.0.1-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60fc936e5cd24105503c79dd8a527724c1699c73b9a1fbb77a6df395dcfb6666
|
|
BLAKE2b-256 checksum How to use checksums |
c9e6ddb806fc758d9fd4484c306727d900222b889a8b7fb548459fcc58dd3a97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 25, 2026.
Transparency log