Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Parametre protokolu linky
Konfigurácia komunikačnej stanice
Parametre protokolu stanice
Konfigurácia meraných bodov
Literatúra
Revízie dokumentu
Podporované typy a verzie zariadení
Protokol umožňuje komunikáciu so zariadeniami komunikujúcimi pomocou LoRaWAN - protokolu. Protokol LoRaWAN je protokol určený na občasný, energeticky efektívny bezdrôtový prenos malého množstva dát nazývaných payload (typicky niekoľko bajtov) na dlhé vzdialenosti medzi prepojenými objektami - v terminológii LoRaWAN nazývanými mote (typicky senzory napájané batériou) a LoRaWAN gatewayom.
Gateway následne môže komunikovať priamo s D2000 KOM procesom alebo posielať payload na sieťové servery resp. do cloudu, kde sa vykoná spracovanie údajov (deduplikácia, filtrácia) a následne sú údaje poslané procesu D2000 KOM. V každom prípade je payload zabalený do obálky (napr. ako pole v JSON správe alebo v CSV súbore) a prenesený až do procesu D2000 KOM. Tam je payload dekódovaný (používa sa napr. Base64 kódovanie alebo Base64 + Base16 kódovanie) a spracovaný.
Spracovanie payloadu je závislé od typu zariadenia (definovaného v parametri protokolu Device Type).
Komunikácia bola testovaná medzi senzormi a LoRaWAN gatewayom Kerlink IoT Station 868. Ten v závislosti od inštalovaného firmware:
- posielal údaje priamo D2000 KOM procesu (JSON správy v UDP packetoch)
- posielal údaje do cloudu TheThings.Network, odkiaľ ich D2000 KOM proces čítal (JSON správy v MQTT protokole cez TCP spojenie)
- posielal údaje do cloudu Loriot.io, ktorý ich preposielal protokolom MQTT do iot.eclipse.org, odkiaľ ich D2000 KOM proces čítal (JSON správy v MQTT protokole cez TCP spojenie)
Konfigurácia komunikačnej linky
- Kategória komunikačnej linky: SerialOverUDP Device Redundant, TCP/IP-TCP.
- Konfigurácia linky SerialOverUDP Device Redundant:
- Lokálny port: port na ktorom D2000 KOM proces prijíma UDP pakety
- Primárne/záložné zariadenia: IP adresa LoRaWAN gatewaya
(pre Connection Type=Kerlink IoT Station SPN) - Port: port na ktorom LoRaWAN gateway prijíma pakety (v súčasnosti nevyužité, keďže nie je implementovaný zápis)
- Konfigurácia linky TCP/IP-TCP:
- Host: IP adresa servera, ku ktorému sa D2000 KOM proces pripája, prípadne redundantné adresy oddelené čiarkou alebo bodkočiarkou
(pre Connection Type=MQTT client) - Port: port servera, ku ktorému sa D2000 KOM proces pripája
Parametre protokolu linky
Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu linky:
Tab. č. 1
| Parameter | Popis | Jednotka / rozmer | Náhradná hodnota |
|---|---|---|---|
| Connection Type | Typ spojenia medzi D2000 KOM procesom a druhou stranou (LoRaWAN gateway, sieťový server, cloud). Aktuálne podporené sú:
| - | Kerlink IoT Station SPN |
| Mote Field Name | Názov poľa s identifikátorom LoRaWAN zariadenia (mote). Pozn: Pre JSON správy, ktoré môžu byť štruktúrované, je podporená syntax level1.level2.level3 ..., napr. rx.moteeui a pokiaľ obsahujú polia (indexované od 1) tak aj level1[index1].level2[index2].level3 ..., napr. rx.gwrx[1].time. Príklady viď popis meraných bodov typu Envelope. | - | rx.moteeui |
| Payload Field Name | Názov poľa s payloadom. Viď poznámku pri parametri Mote Field Name. | - | rx.userdata.payload |
| Payload Encoding | Spôsob kódovania payloadu v správe. Podporené kódovania:
| - | Base16 + Base64 encoding |
| Time Field Name | Názov poľa s časovou značkou. Ak pole nie je nájdené, hodnotám je priradený aktuálny čas. Viď poznámku pri parametri Mote Field Name. | - | rx.gwrx[1].time |
| Time Mask | Maska pre parsovanie hodnoty v poli s časovou značkou. Pozn: od nastavení časových parametrov stanice závisí, či je čas interpretovaný ako lokálny alebo UTC s nakonfigurovaným offsetom. Špeciálne masky sú:
| - | yyyy-mm-dd hh:mi:ss |
| Frame Type Field Name | Názov poľa, ktoré označuje typ správy. Ak je hodnota prázdna, typ správy sa nerozlišuje. (Napr. cloud Loriot posiela správy rozličného typu.) | - | |
| Frame Type Field Required Value | Ak je rozlišovanie typu správy aktívne (vyplnený parameter Frame Type Field Name), typ správy musí byť zhodný s uvedenou hodnotou. Inak je správa ignorovaná. | - | |
| Full Debug | Zapnutie podrobných výpisov o posielaní a prijímaní hodnôt. | YES/NO | NO |
| Parametre špecifické pre Connection Type=MQTT Client. | |||
| MQTT User Name | Viď popis parametra User Name v dokumentácii MQTT protokolu. | ||
| MQTT Password | Viď popis parametra Password v dokumentácii MQTT protokolu. | ||
| MQTT Topic Filter | Viď popis parametra Topic Filter v dokumentácii MQTT protokolu. | +/+/+/up | |
| MQTT Subscribe QoS | Viď popis parametra Subscribe QoS v dokumentácii MQTT protokolu. | ||
| MQTT Client ID | Viď popis parametra Client ID v dokumentácii MQTT protokolu. | ||
| MQTT Clean Session Flag | Viď popis parametra Clean Session Flag v dokumentácii MQTT protokolu. | ||
| MQTT Publish Format | Formát JSON správy použitej pri zápise hodnoty. Obsah meraného bodu typu Write bude zakódovaný (v závislosti od parametra Payload Encoding) a vložený do tejto správy, kde nahradí reťazec #PAY#. Náhradná hodnota "{"port":1, "confirmed":false, "payload_raw":#PAY#} bola vyskúšaná pri posielaní údajov do cloudu TheThings.Network. | - | "{"port":1, "confirmed":false, "payload_raw":#PAY#} |
| MQTT Publish QoS | Viď popis parametra Publish QoS v dokumentácii MQTT protokolu. | ||
| MQTT Ping Interval | Viď popis parametra Ping Interval v dokumentácii MQTT protokolu. | ||
| MQTT Reply Timeout | Viď popis parametra Reply Timeout v dokumentácii MQTT protokolu. | ||
| MQTT Wait Timeout | Viď popis parametra Wait Timeout v dokumentácii MQTT protokolu. | ||
| MQTT Max. Wait Retry | Viď popis parametra Max. Wait Retry v dokumentácii MQTT protokolu. | ||
Parametre linky otestované pre Connection Type=Kerlink IoT Station SPN voči Kerlink IoT Station 868 s firmware SPN
| Parameter | Hodnota |
|---|---|
| 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 |
Parametre linky otestované pre Connection Type=MQTT client voči TheThings.network
| Parameter | Hodnota |
|---|---|
| Connection Type | MQTT client |
| Mote Field Name | dev_id alebo 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 |
Parametre linky otestované pre Connection Type=MQTT client voči Loriot.io s nastavením:
- Výstup protokolom MQTT
- MQTT broker: iot.eclipse.org
- MQTT topic: com/ipesoft/iot
| Parameter | Hodnota |
|---|---|
| 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 |
Parametre linky otestované pre Connection Type=MQTT client voči 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 |
* Pozn.: Odoslaná hodnota je v lokálnom čase, je potrebné podľa toho nastaviť časové parametre príslušných staníc.
Konfigurácia komunikačnej stanice
- Komunikačný protokol "IoT over LoRaWAN".
- Adresa stanice: adresa stanice je identifikátor konkrétneho zariadenia (mote), ktorý sa nachádza v poli Mote Field Name.
- pre Connection Type=Kerlink IoT Station SPN je adresa textová reprezentácia 8-bajtovej LoRaWAN adresy (napr. 00-00-00-00-21-1a-e3-c8)
- Pre Connection Type=MQTT Client môže byť adresa textová reprezentácia 8-bajtovej LoRaWAN adresy (napr. 0018B2000000147D) alebo symbolická adresa definovaná v rámci MQTT servera (napr. fieldtestdevice)
Parametre protokolu stanice
Dialóg konfigurácia stanice - pole Parameter protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu stanice:
Tab. č. 2
| Parameter | Popis | Jednotka | Náhradná hodnota |
| Device Type | Typ LoRaWAN zariadenia. Každý typ zariadenia môže mať vlastnú štruktúru prenášaných dát (payload). Zoznam podporovaných zariadení bude postupne narastať. Aktuálne podporené zariadenia sú:
| - | None |
| External Dll Name | Názov externej DLL knižnice s kódom pre parsovanie payloadu pre Device Type=OEM device. | - | |
| No Data Timeout | Timeout, po ktorom stanica prejde do chybového stavu, ak neboli prijaté žiadne dáta. | hh:mi:ss | 01:00:00 |
| MQTT Topic (for writing) | Topic použitý pri zápise hodnoty (pre Connection Type=MQTT client). Pozn: pre užívateľa ipesoft-test a zariadenie fieldtestdevice bol otestovaný voči TheThings.network zápis s MQTT_TOPIC=ipesoft-test/devices/fieldtestdevice/down. | - |
Konfigurácia meraných bodov
Možné typy hodnôt meraných bodov: Ai, Di, Ci, TxtI, Qi, TxtO.
| Typ hodnoty | Address (typ adresy) | Popis | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ai, Di, Ci, Qi, TxtI | Payload | Merané body parsované z payloadu. Adresa (Address) závisí od typu zariadenia (parameter Device Type). Adresa nie je citlivá na malé/veľké písmená.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ai, Di, Ci, Qi, TxtI | Envelope | Meraný bod parsovaný z obálky správy. Adresa je názov poľa v obálke správy. Pozn: Pre JSON správy, ktoré môžu byť štruktúrované, je podporená syntax level1.level2.level3 ..., napr. rx.moteeui a pokiaľ obsahujú polia (indexované od 1) tak aj level1[index1].level2[index2].level3 ..., napr. rx.gwrx[1].time. Príklad JSON správy pre Connection Type=Kerlink IoT Station SPN (doplnené medzery a zarovanie kvôli lepšej čitateľnosti):
{
"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
}
]
}
}
Merané body obálky môžu mať adresy napr. rx.moteeui, rx.userdata.seqno, rx.userdata.motetx.freq, rx.gwrx[1].time. Príklad JSON správy pre Connection Type=MQTT Client (JSON via MQTT) (doplnené medzery a zarovanie kvôli lepšej čitateľnosti):
{
"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
}
]
}
}
Merané body obálky môžu mať adresy napr. dev_id, metadata.time, metadata.gateways[1].latitude. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TxtI | All data | Meraný bod, ktorý bude obsahovať kompletnú prijatú správu - celú obálku (napr. JSON správu). Tento bod je určený na ladiace účely a pre prípadné spracovanie celej správy v skripte. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| TxtO | Write (MQTT) | Meraný bod na zápis. V súčasnosti implementované iba pre Connection Type=MQTT client a vyskúšané voči cloudu TheThings.Network. Hodnota meraného bodu je považovaná za payload, ktorý bude zakódovaný (v závislosti od parametra Payload Encoding) a vložený do šablóny správy definovanej parametrom MQTT Publish Format, kde nahradí reťazec #PAY#. Výsledná správa bude poslaná MQTT serveru. |
Literatúra
Odkazy
Oficiálna stránka LoRaWAN aliancie https://www.lora-alliance.org/technology
Oficiálna stránka MQTT protokolu http://mqtt.org
Špecifikácie a štandardy
MQTT 3.1.1 špecifikácia http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
ISO/IEC 20922:2016 http://www.iso.org/standard/69499.html
Popisy dátových formátov a API
www.loriot.io - Application API Data Format https://www.loriot.io/home/documentation.html#docu/app-data-format
www.thethingsnetwork.org - API Reference https://www.thethingsnetwork.org/docs/applications/mqtt/api.html
Revízie dokumentu
- Ver. 1.0 - 10. august 2017 - vytvorenie dokumentu.
- Ver. 1.1 - 25. august 2017 - doplnená konfigurácia linky (Frame Type, Time Mask - UNIX, UNIXMS, PayloadEncoding - Base16), podpora zariadenia AdeunisRF LoRaWAN TEMP a komunikácie s Loriot.io.
Súvisiace stránky:
Pridať komentár