ThingSet via LoRaWAN

WARNING

This part of the protocol specification is still work in progress.

As the data rate of LoRa is very low, only the binary protocol version is supported.

The ThingSet mapping is optimized for Class A devices, which allow only a very limited amount of downlink messages from the gateway to the device. This means that a request/response model is not suitable over LoRaWAN.

Instead, the communication mainly relies on statements sent from the device to the gateway.

Port mapping

LoRaWAN supports to specify a so-called port for each message to differentiate between different types of payload. The port can be an integer in the range of 1..223 (0x01..0xDF).

The ports are mapped to the ThingSet data object IDs and only IDs from 0x01..0x3F are used for communication via LoRaWAN.

Only the values are communicated regularly. The corresponding IDs for each statement are sent only once during startup to the port with ID + 0x40.

The following table gives an overview of the LoRaWAN ports as they are planned to be used for ThingSet:

Port(s)Usage
0x00Reserved for LoRaWAN MAC messages
0x01..0x3FThingSet statement values (corresponding to ID of group or subset)
0x40Reserved for future use in ThingSet
0x41..0x7FThingSet statement IDs (corresponding to ID + 0x40)
0x80..0xBFThingSet statement key/value pairs (corresponding to ID + 0x80)
0xC0..0xDFThingSet request/response channels
0xE0..0xFFReserved for LoRaWAN

Remark: key/value ports are necessary so that event statements don't have to transfer also the values of the subset that didn't change.

JavaScript CBOR payload decoderopen in new window.

Open questions

  • How to transfer data object names?
  • How to transfer node ID?