...
The LoRaWAN protocol is a protocol designed for occasional, energy-efficient wireless transmission of a small amount of data called
Kotva | ||||
---|---|---|---|---|
|
The gateway can then communicate directly with the D2000 COM 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 COM KOM process. In any case, the payload is packed in an
Kotva | ||||
---|---|---|---|---|
|
Payload processing is dependent on device type (defined in parameter of 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 COM 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 through 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 through TCP via TCP connection)
The Sigfox protocol is similar to LoRaWAN, and 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 a 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 httpsHTTPS connection.
Kotva | ||||
---|---|---|---|---|
|
...
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
...
Communication line - configuration dialog - Protocol parameters tab.
The parameters influence some optional protocol parameters. The following protocol line parameters can be used:
Table 1
...
- 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 network server or cloud using MQTT protocol. Line must be of the TCP/IP-TCP type.
...
- 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) - for Connection Type=MQTT Client communicating with Loriot and Slovanet clouds
- None - message contains a payload without encoding - not yet used
...
- 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 miliseconds from epoch 00:00:00.000 01.01.1970 UTC.
...
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.
Kotva | ||||
---|---|---|---|---|
|
...
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 | ||||||
---|---|---|---|---|---|---|---|---|---|
| Type of connection between the D2000 KOM process and the other party (LoRaWAN gateway, network server, cloud). Currently supported are:
| - | Kerlink IoT Station SPN | ||||||
| Name of the field with an identifier of the LoRaWAN device (mote). | - | rx.moteeui | ||||||
| Name of the field with the payload. See the notes next to the Mote Field Name parameter. | - | rx.userdata.payload | ||||||
| A method of payload encoding in the message. Supported encoding:
| - | Base16 + Base64 encoding | ||||||
| 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 | ||||||
| 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:
| - | yyyy-mm-dd hh:mi:ss | ||||||
| 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.) | - | |||||||
| 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. | - | |||||||
| Writing detailed information about sending and receiving values in a log file. | YES/NO | NO | ||||||
Parameters specific for Connection Type=MQTT Client. | |||||||||
| See the description of the User Name parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Password parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Topic Filter parameter in the MQTT protocol documentation. | +/+/+/up | |||||||
| See the description of the Subscribe QoS parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Client ID parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Clean Session Flag parameter in the MQTT protocol documentation. | ||||||||
| 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#} | ||||||
| See the description of the Publish QoS parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Ping Interval parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Reply Timeout parameter in the MQTT protocol documentation. | ||||||||
| See the description of the Wait Timeout parameter in the MQTT protocol documentation. | ||||||||
| 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 | *** |
MQTT Topic Filter | app/(appEUI)/node/+/rxdata |
MQTT Client ID | D2000kom |
MQTT Clean Session Flag | YES |
MQTT Publish Format | {"reference":"","confirmed":true,"fPort":3,"dataHex":#PAY#} |
MQTT Publish QoS | QoS_0 |
MQTT Ping Interval | 60 |
MQTT Reply Timeout | 20 |
MQTT Wait Timeout | 00.100 |
MQTT Max. Wait Retry | 3 |
* Note.: Timestamp is sent in local time. Station time settings are to be configured accordingly.
Line parameters tested for Connection Type=Sigfox Client (JSON via HTTPS) towards Sigfox cloud
Parameter | Hodnota |
---|---|
Connection Type | Sigfox Client (JSON via HTTPS) |
Mote Field Name | data[].device |
Payload Field Name | data[].data |
Payload Encoding | Base16 encoding (Slovanet, Loriot, Sigfox) |
Time Field Name | data[].time |
Time Mask | UNIX |
Frame Type Field Name | |
Frame Type Field Required Value |
Kotva | ||||
---|---|---|---|---|
|
...
- Communication protocol "IoT over LoRaWAN/Sigfox".
- Station address: the address of the station is the identifier of the specific device (mote) that is in the Mote Field Name field.
- for Connection Type=Kerlink IoT Station SPN address is a text representation of an 8-byte LoRaWAN address (e.g. 00-00-00-00-21-1a-e3-c8)
- for Connection Type=MQTT Client the address may be a text representation of an 8-byte LoRaWAN address (e.g. 0018B2000000147D) or a symbolic address defined within the MQTT server (e.g. fieldtestdevice)
- for Connection Type=Sigfox Client (JSON via HTTPS) address is a device identifier (e.g. 21FDA5)
Kotva | ||||
---|---|---|---|---|
|
Dialog station configuration - Protocol Parameter field.
They affect some optional protocol parameters. The following station parameter parameters can be entered:
Table 2
Parameter | Description | Unit | Default Value | ||||||
| Type of device. Each device type may have its own structure of transmitted data (payload). The list of supported devices will gradually increase. Currently supported devices are:
| - | None | ||||||
| Name of external DLL library with code for payload parsing for Device Type=OEM device. | - | |||||||
| Timeout after which the station goes into a communication error state if no data has been received. | hh:mi:ss | 01:00:00 | ||||||
| The topic used when writing the value (for Connection Type=MQTT client). Note: for ipesoft-test user and fieldtestdevice device writing was tested towards TheThings.network with MQTT_TOPIC=ipesoft-test/devices/fieldtestdevice/down. | - | |||||||
| For Sigfox: the path to the file for downloading data from the Sigfox cloud to the input directory (specified by parameter Input file of the File I/O line) together with possible parameters. The path may contain (like the Input File parameter) the symbolic constant #APPDIR# (application directory) as well as #ADDR# (station address) so that a single file can be used to handle multiple stations. Example for Windows platform - file get.bat (download is via a proxy server, server identity verification is disabled, xxx:yyy is user name and password for Sigfox cloud): rem default count=1, possible to download up to 100 values Example for Linux platform - file get.sh (it is necessary to explicitly specify that files are downloaded e.g. to Sigfox_input directory): #/bin/sh# default count=1, possible to download upto 100 values Note: if command files are edited prior to running the D2000 KOM process, parameter count can be increased up to 100, resulting in downloading not only the latest value but also previous (up to 99) historical values. Then, after the first polling, the parameter count can be decreased to 1. | ||||||||
| For Sigfox: timeout for downloading data via Sigfox Download Command File. If downloading takes longer, the station will go to error. | sec | 30 |
...
Line parameters tested for Connection Type=Kerlink IoT Station SPN towards Kerlink IoT Station 868 with firmware SPN
...
Line parameters tested for Connection Type=MQTT client towards TheThings.network
...
Line parameters tested for Connection Type=MQTT client towards Loriot.io with following setup:
- Output via protocol MQTT
- MQTT broker: iot.eclipse.org
- MQTT topic: com/ipesoft/iot
...
Line parameters tested for Connection Type=MQTT client towards LoraLINK Slovanet:
...
* Note.: Timestamp is sent in local time. Station time settings are to be configured accordingly.
...
- Communication protocol "IoT over LoRaWAN".
- Station address: the address of the station is the identifier of the specific device (mote) that is in the Mote Field Name field.
- for Connection Type=Kerlink IoT Station SPN is address a text representation of 8 byte LoRaWAN address (e.g. 00-00-00-00-21-1a-e3-c8)
- for Connection Type=MQTT Client the address may be a text representation of 8 byte LoRaWAN address (e.g. 0018B2000000147D) or a symbolic address defined within MQTT server (e.g. fieldtestdevice)
...
Dialog station configuration - Protocol Parameter field.
They affect some optional protocol parameters. The following station parameter parameters can be entered:
Table 2
Parameter | Description | Unit | Default Value | ||||||||||||||||||||
Kotva | dt | dt | Device TypeLoRaWAN type of device. Each device type may have its own structure of transmitted data (payload). The list of supported devices will gradually increase. Currently supported devices are:
| - | None | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Kotva | ed | ed | External Dll NameName of external DLL library with code for payload parsing for Device Type=OEM device. | - | |||||||||||||||||||
Kotva | nd | nd | No Data TimeoutTimeout after which the station goes into communicatoin error state if no data has been received. | hh:mi:ss | 01:00:00 | ||||||||||||||||||
Kotva | mt | mt | MQTT Topic (for writing)Topic used when writing the value (for Connection Type=MQTT client). Note: for ipesoft-test user and fieldtestdevice device was tested towards TheThings.network writing with MQTT_TOPIC=ipesoft-test/devices/fieldtestdevice/down. | - |
Kotva | ||||
---|---|---|---|---|
|
...
Value type | Address (address type) | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ai, Di, Ci, Qi, TxtI |
| I/O tags parsed from the payload. Address (Address) depends on the device type (Device Type parameter). Address The address is not case sensitive.
Payload addresses for device type of Adeunis RF LoRaWAN TEMP (ARF8180BACodea WZU-SG (Landis+Gyr Ultraheat T550)
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ai, Di, Ci, Qi, TxtI |
| I/O tag parsed from the envelope of the message. The address is the name of the field in the envelope of the message. 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 level1[index1].level2[index2].level3 ... syntax, e.g. rx.gwrx[1].time. Example of JSON message for Connection Type=Kerlink IoT Station SPN (added spacing and alignment for better legibility): { "rx": { "moteeui": "00-00-00-00-00-1e-fc-1d", "userdata": { "seqno": 77, "port": 1, "payload": "NzM3RjAwZTgwMA==", "motetx": { "freq": 868500000, "modu": "LoRa", "datr": "SF7BW125", "codr": "4/5" } }, "gwrx": [ { "time": "2017-07-05 16:06:52", "chan": 2, "rfch": 0, "rssi": -33, "lsnr": 7.5 } ] } }I/O tags of envelope may have addresses e.g. rx.moteeui, rx.userdata.seqno, rx.userdata.motetx.freq, rx.gwrx[1].time. Example of JSON message for Connection Type=MQTT Client (JSON via MQTT) (added spacing and alignment for better legibility): { "app_id":"ipesoft-test", "dev_id":"fieldtestdevice", "hardware_serial":"0018B2000000147D", "port":2, "counter":549, "payload_raw":"niNJElVwAYQ5UBYfBBBN", "metadata":{ "time":"2017-08-10T08:12:26.06860368Z", "frequency":867.5, "modulation":"LORA", "data_rate":"SF7BW125", "coding_rate":"4/5", "gateways":[ { "gtw_id":"eui-000000000003080b", "timestamp":705621508, "time":"2017-08-10T08:12:26.434682Z", "channel":5, "rssi":-34, "snr":7.8, "latitude":49.20927, "longitude":18.73184, "altitude":359 } ] } }I/O tags of envelope may have addresses e.g. dev_id, metadata.time, metadata.gateways[1].latitude. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TxtI |
| I/O tag, that will contain the complete received message - the whole envelope (e.g. JSON message). The I/O tag is intended for debugging purposes and for eventual processing of the entire message in the script. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TxtO |
| I/O tag for writing. Currently implemented just for Connection Type=MQTT client and tested towards cloud TheThings.Network. The value of the I/O tag is considered to be a payload that will be encoded (depending on the Payload Encoding parameter) and inserted into the message template defined by the MQTT Publish Format parameter, where it will replace the #PAY# string. The resulting message will be sent to the MQTT server. |
...
- Ver. 1.0 - August 10th, 2017 - Document creation.
- Ver. 1.1 - August 25th, 2017 - Extended line configuration (Frame Type, Time Mask - UNIX, UNIXMS, PayloadEncoding - Base16), support of AdeunisRF LoRaWAN TEMP device and communication with Loriot.io.
- Ver. 1.2 - October 26th, 2018 - Added support for Sigfox protocol.
Info | ||
---|---|---|
| ||
...