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
Protokol umožňuje komunikáciu so zariadeniami komunikujúcimi pomocou protokolov LoRaWAN a Sigfox.
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:
Protokol Sigfox má podobné vlastnosti ako LoRaWAN, akurát využíva iné frekvenčné pásma. Používa infraštruktúru vybudovanú firmou Sigfox a jej partnermi a správy (s maximálnou veľkosťou payloadu 12 bajtov, maximálna 140 správ denne) sú prenášané do cloudu (backend.sigfox.com), odkiaľ je možné ich získať cez REST API.
Komunikácia bola testovaná medzi senzormi a Sigfox klaudom s použitím utility curl na získanie dát cez https.
Konfigurácia pre LoRaWAN protokol:
Konfigurácia pre Sigfox protokol:
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 |
|---|---|---|---|
| Typ spojenia medzi D2000 KOM procesom a druhou stranou (LoRaWAN gateway, sieťový server, cloud). Aktuálne podporené sú:
| - | Kerlink IoT Station SPN | |
| 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 | |
| Názov poľa s payloadom. Viď poznámku pri parametri Mote Field Name. | - | rx.userdata.payload | |
Spôsob kódovania payloadu v správe. Podporené kódovania:
| - | Base16 + Base64 encoding | |
| 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 | |
| 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 | |
| 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.) | - | ||
| 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á. | - | ||
| Zapnutie podrobných výpisov o posielaní a prijímaní hodnôt. | YES/NO | NO | |
| Parametre špecifické pre Connection Type=MQTT Client. | |||
| Viď popis parametra User Name v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Password v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Topic Filter v dokumentácii MQTT protokolu. | +/+/+/up | ||
| Viď popis parametra Subscribe QoS v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Client ID v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Clean Session Flag v dokumentácii MQTT protokolu. | |||
| 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#} | |
| Viď popis parametra Publish QoS v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Ping Interval v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Reply Timeout v dokumentácii MQTT protokolu. | |||
| Viď popis parametra Wait Timeout v dokumentácii MQTT protokolu. | |||
| 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:
| 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.
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 |
| 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 | |
| Názov externej DLL knižnice s kódom pre parsovanie payloadu pre Device Type=OEM device. | - | ||
| Timeout, po ktorom stanica prejde do chybového stavu, ak neboli prijaté žiadne dáta. | hh:mi:ss | 01:00:00 | |
| 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. | - |
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 | 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 | 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 | 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 | 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. |
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