IoT over LoRaWAN/Sigfox

IoT over LoRaWAN/Sigfox

Supported device types and versions
Communication line configuration
Communication line parameters
Communication station configuration
Station parameters
I/O tag configuration
Literature
Document revisions

Supported device types and versions


The protocol allows communication with devices communicating using the LoRaWAN and Sigfox protocols.

The LoRaWAN protocol is a protocol designed for occasional, energy-efficient wireless transmission of a small amount of data called

payload (typically several bytes) over long distances between linked objects - in LoRaWAN terminology called mote (typically battery-powered sensors) and LoRaWAN gateway.
The gateway can then communicate directly with the D2000 KOM process or send the payload to the network servers or to the cloud, where data processing is performed (deduplication, filtration), followed by the data sent to the D2000 KOM process. In any case, the payload is packed in an
envelope (e. g. such as a field in a JSON message or in a CSV file) and transferred up to the D2000 KOM process. The payload is decoded there (using Base64 encoding or Base64 + Base16 encoding) and processed.
Payload processing is dependent on device type (defined in the Device Type protocol parameter).


The communication was tested between sensors and LoRaWAN gateway Kerlink IoT Station 868. It was, depending on the installed firmware:

  • sending data directly to the D2000 KOM process (JSON messages in UDP packets)

  • sending data to the cloud TheThings.Network, from where it was read by D2000 KOM process (JSON messages in MQTT protocol via TCP connection)

  • sending data to the cloud Loriot.io, which was forwarding them via MQTT to iot.eclipse.org, from where it was read by D2000 KOM process (JSON messages in MQTT protocol via TCP connection)

  • sending data to the cloud Slovanet (loralink.slovanet.sk), from where it was read by the D2000 KOM process (JSON messages in MQTT protocol via TCP connection)

 

The Sigfox protocol is similar to LoRaWAN, however, it uses different frequency bands. It uses the infrastructure built by Sigfox and its partners and messages (with a maximum payload size of 12 bytes, and a maximum frequency of 140 messages per day) are transmitted to the cloud (backend.sigfox.com) from which they can be obtained through the REST API.

The communication was tested between sensors and the Sigfox cloud using curl utility to retrieve data via HTTPS connection.

 

Communication line configuration


 

Configuration for LoRaWAN protocol:

  • Communication line category: SerialOverUDP Device Redundant, TCP/IP-TCP, File I/O.

  • Configuration of SerialOverUDP Device Redundant line:

    • Local port: port, where the D2000 KOM process receives UDP packets

    • Primary / Backup Device: IP address LoRaWAN gateway
      (pre Connection Type=Kerlink IoT Station SPN)

    • Port: port, where the LoRaWAN gateway receives UDP packets (currently unused, as there is no implemented record)

  • Configuration of TCP/IP-TCP line:

    • Host: IP address of the server, to which the D200 KOM process connects or redundant addresses separated by a comma or semicolon
      (for Connection Type=MQTT client)

    • Port: server port, to which the D200 KOM process connects

Configuration for Sigfox protocol:

  • Configuration of File/IO line:

    • Input file: name of the directory where data (JSON files) downloaded from the Sigfox cloud will be located. A symbolic constant #APPDIR#, which specifies application directory, may be used, e.g. #APPDIR#/Sigfox_input (valid syntax for Windows and Linux).

    • Archive: name of the directory where data files will be moved after being processed. The D2000 KOM process will move the data files after processing to the subdirectories of this directory, which will be named according to respective stations (e.g B.Sigfox_1) and it will add a timestamp indicating the processing time (e.g. a file msg_21FDA7.txt may be archived as msg_21FDA7_2018-10-26 -06-26-08.txt).
      Similarly to the input file, a symbolic constant #APPDIR# may be used, e.g. #APPDIR#/Sigfox_archiv
      Note 1: Invalid files or files for which no station has been identified will be moved to the subdirectory BAD after processing.
      Note 2: If the archive directory is not specified, all files will be deleted after processing.

Communication line configuration


Communication line - configuration dialog - Protocol parameters tab.
The parameters influence some optional protocol parameters. The following protocol line parameters can be used:

Table 1

Parameter

Description

Unit / size

Default Value

Connection Type

Type of connection between the D2000 KOM process and the other party (LoRaWAN gateway, network server, cloud).
Currently supported are:

  • Kerlink IoT Station SPN (JSON via UDP packets): communication with Kerlink IoT Station with firmware SPN (Small Private Network). Line must be of the SerialOverUDP Device Redundant type.

  • MQTT Client (JSON via MQTT): communication with a network server or cloud using MQTT protocol. The line must be of the TCP/IP-TCP type.

  • Sigfox Client (JSON via HTTPS): communication with Sigfox cloud

-

Kerlink IoT Station SPN

Mote Field Name

Name of the field with an identifier of the LoRaWAN device (mote).
Note: For JSON messages that can be structured, the syntax level1.level2.level3 ... is supported e.g. rx.moteeui and if they contain fields (indexed from 1) then also the syntax level1[index1].level2[index2].level3 ... is supported e.g. rx.gwrx[1].time. As examples, see the description of I/O tags of the Envelope type.
Note: For Sigfox data files, which may contain multiple values (historical), index 0 resp. empty index (e.g. data[].device) can be used. This indicates that all field elements are to be processed.

-

rx.moteeui

Payload Field Name

Name of the field with the payload. See the notes next to the Mote Field Name parameter.

-

rx.userdata.payload

Payload Encoding

A method of payload encoding in the message. Supported encoding:

  • Base16 + Base64 encoding (Kerlink SPN) - for Connection Type=Kerlink IoT Station SPN

  • Base64 encoding (TheThings.network) - for Connection Type=MQTT Client communicating with TheThings.network cloud

  • Base64 encoding (Loriot, Slovanet, Sigfox) - for Connection Type=MQTT Client communicating with LoRaWAN clouds (Lorio, Slovanet) as well as Sigfox

  • None - message contains a payload without encoding - not yet used

-

Base16 + Base64 encoding

Time Field Name

Name of the field with a timestamp. If the field is not found, the current time is assigned to the values. See the notes next to the Mote Field Name parameter.

-

rx.gwrx[1].time

Time Mask

Mask for parsing a value in the field with a timestamp.
Note: from settings of time station parameters depends whether the time is interpreted as local or UTC with configured offset.
Special masks are:

  • UNIX - the numeric value represents the number of seconds from epoch 00:00:00 01.01.1970 UTC.

  • UNIXMS - the numeric value represents the number of milliseconds from epoch 00:00:00.000 01.01.1970 UTC.

-

yyyy-mm-dd hh:mi:ss

Frame Type Field Name

The name of the field indicating the message type. If the value is empty, the message type is not distinguished. (For example, cloud Loriot sends messages of various types.)

-

 

Frame Type Field Required Value

If the message type differentiation is active (non-empty value of Frame Type Field Name parameter), the message type must match the specified value, otherwise, the message is ignored.

-

 

Full Debug

Writing detailed information about sending and receiving values in a log file.

YES/NO

NO

Parameters specific for Connection Type=MQTT Client.

MQTT User Name

See the description of the User Name parameter in the MQTT protocol documentation.

MQTT Password

See the description of the Password parameter in the MQTT protocol documentation.

MQTT Topic Filter

See the description of the Topic Filter parameter in the MQTT protocol documentation.

+/+/+/up

MQTT Subscribe QoS

See the description of the Subscribe QoS parameter in the MQTT protocol documentation.

MQTT Client ID

See the description of the Client ID parameter in the MQTT protocol documentation.

MQTT Clean Session Flag

See the description of the Clean Session Flag parameter in the MQTT protocol documentation.

MQTT Publish Format

Format of JSON message used while writing a value. The content of the I/O tag of Write type will be encoded (depending on the Payload Encoding parameter) and inserted into the message, where it will replace the #PAY# string.
The default value "{"port":1, "confirmed":false, "payload_raw":#PAY#} was tested when sending data to cloud TheThings.Network.

-

"{"port":1, "confirmed":false, "payload_raw":#PAY#}

MQTT Publish QoS

See the description of the Publish QoS parameter in the MQTT protocol documentation.

MQTT Ping Interval

See the description of the Ping Interval parameter in the MQTT protocol documentation.

MQTT Reply Timeout

See the description of the Reply Timeout parameter in the MQTT protocol documentation.

MQTT Wait Timeout

See the description of the Wait Timeout parameter in the MQTT protocol documentation.

MQTT Max. Wait Retry

See the description of the Max. Wait Retry parameter in the MQTT protocol documentation.

Line parameters tested for Connection Type=Kerlink IoT Station SPN for Kerlink IoT Station 868 with firmware SPN

Parameter

Value

Connection Type

Kerlink IoT Station SPN

Mote Field Name

rx.moteeui

Payload Field Name

rx.userdata.payload

Payload Encoding

Base16 + Base64 encoding

Time Field Name

rx.gwrx[1].time

Time Mask

yyyy-mm-dd hh:mi:ss

Frame Type Field Name

 

Frame Type Field Required Value

 

Line parameters tested for Connection Type=MQTT client for TheThings.network

Parameter

Value

Connection Type

MQTT client

Mote Field Name

dev_id or hardware_serial

Payload Field Name

payload_raw

Payload Encoding

Base64 encoding

Time Field Name

metadata.time

Time Mask

yyyy-mm-dd hh:mi:ss.mss

Frame Type Field Name

 

Frame Type Field Required Value

 

MQTT User Name

ipesoft-test

MQTT Password

***

MQTT Topic Filter

+/+/+/up

MQTT Client ID

D2000kom

MQTT Clean Session Flag

NO

MQTT Publish Format

{"port":1, "confirmed":false, "payload_raw":#PAY#}

MQTT Publish QoS

QoS_0, QoS_1, QoS_2

MQTT Ping Interval

60

MQTT Reply Timeout

20

MQTT Wait Timeout

00.100

MQTT Max. Wait Retry

3

Line parameters tested for Connection Type=MQTT client for Loriot.io with the following setup:

  • Output via protocol MQTT

  • MQTT broker: iot.eclipse.org

  • MQTT topic: com/ipesoft/iot

Parameter

Value

Connection Type

MQTT client

Mote Field Name

EUI

Payload Field Name

data

Payload Encoding

Base16 encoding

Time Field Name

ts

Time Mask

UNIXMS

Frame Type Field Name

cmd

Frame Type Field Required Value

rx

MQTT User Name

 

MQTT Password

 

MQTT Topic Filter

com/ipesoft/iot

MQTT Client ID

D2000kom

MQTT Clean Session Flag

NO

MQTT Publish Format

 

MQTT Publish QoS

QoS_1

MQTT Ping Interval

60

MQTT Reply Timeout

20

MQTT Wait Timeout

00.100

MQTT Max. Wait Retry

3

Line parameters tested for Connection Type=MQTT client towards LoraLINK Slovanet:

Parameter

Hodnota

Connection Type

MQTT client

Mote Field Name

devEUI

Payload Field Name

dataHex

Payload Encoding

Base16 encoding

Time Field Name

timeStamp

Time Mask *

yyyy-mm-ddThh:mi:ss.mss

Frame Type Field Name

 

Frame Type Field Required Value

 

MQTT User Name

(podľa AppEUI)

MQTT Password