Implementace IoT v ABRA Gen
V této kapitole je uvedeno, jak postupovat v případě implementace IoT dat v rámci ABRA Gen. Viz též ABRA IoT platforma.
Dále je třeba si nakonfigurovat IoT číselníky:
Aby bylo možné IoT data do systému ABRA Gen přijímat, je nejdříve potřeba si nadefinovat používané senzory v číselníku Senzory IoT. Senzor, který má být používán, musí být nastaven jako aktivní. Počet aktivních senzorů je omezen licencí.
Číselník Senzory IoT
Dále je třeba si nadefinovat pravidla přiřazení dat IoT.
Agenda Správa licencí – Počet aktivních senzorů IoT
Pravidla jsou zadávána buď ke konkrétnímu senzoru, nebo bez určení senzoru - poté fungují pro všechny senzory. Pomocí pravidel je možné data uložit u zvoleného objektu ABRA Gen (záznamy agend a číselníků), kde je pak možné data zobrazovat. Data, která vyhoví podmínkám, jsou uložena do tabulky IoT dat. Pokud by data vyhověla více pravidlům, založí se více záznam IoT dat se stejným UNID.
Příjem IoT dat je možné ovlivnit i pomocí skriptování, pomocí háčku ProcessData_Hook na Business objektu - Pravidla přiřazení dat IoT k objektům. Háček je volán v rámci příjmu IoT dat a je možné pomocí něj vstupní data upravit, zamítnout příjem nebo odmítnout pouze použití daného pravidla k uložení dat.
Do Web API byla doplněna možnost příjmu IoT dat pomocí http požadavků zaslaných na adresu {webapi server}/iot. Data se posílají standardně v JSON formátu pomocí http požadavku typu PUT.
Původně používaná adresa {webapi server}/IoTData byla z technických důvodů změněna. Změna se týká pouze požadavků typu PUT, pro metody GET a POST zůstávají v platnosti adresy ve tvaru {webapi server}/iotdata.
V případě velkého množství vstupních dat je vhodnější vstupní IoT data uložit v RT (real time) a následně je pouze v omezeném množství např. filtrovaná resp. agregovaná zasílat do ABRA Gen.
Zasílaná vstupní data musí obsahovat hodnoty:
- SensorCode – řetězcová identifikace senzoru, který data zaznamenal např.: "F3799"
- SensorQuantity – řetězcové pojmenování veličiny, kterou senzor zaznamenal např.: "Temperature"
- RecordedAt – datum a čas zaznamenání hodnoty senzorem např. "2016-03-4T17:55:00.000"
- Jako další je třeba předat hodnotu pomocí pole, které určuje i typ dat:
- NumericValue - pro číselnou hodnotu např: 10.5
- DateTimeValue - pro hodnotu typu datu a čas např.: "2016-03-4T17:55:00.000"
- ShortStringValue - pro hodnotu krátký text (do 500znaků) např.: "krátký text"
- BinaryBlobValue - pro hodnotu s binárními daty zadané pomocí Base64 např.: "FDSA="
- TextBlobValue - pro hodnotu s dlouhým řetězcem např.: "dlouhý text"
- BooleanValue - pro logickou hodnotu např.: true resp. false
Použijeme metodu PUT. Budeme ji směřovat na kolekci dat IoT, čili URL adresa bude následující:
PUT http://localhost/data/iot
Předvedeme si přidání záznamu teploty. V datech stačí uvést jen to, co chceme na Business objektu změnit. Data v JSON reprezentaci (tělo požadavku):
{
"SensorCode": "F3799",
"SensorQuantity": "Temperature",
"RecordedAt": "2017-05-15T16:31:00.000",
"NumericValue": 22.5
}
Požadavek odešleme. Po úspěšné modifikaci Web API vrátí status 200 OK.
Nepovinně může být součástí požadavku také
- UNID – univerzální identifikátor např.: "T0BX5PNTY03O3IRDGNVQVACJGW“ nebo "{F3799000-0000-0000-0000-000000000154}"
V tomto případě po příjmu vstupních dat Web API ověří, jestli zaslaná data již nejsou v systému zapsána (zda se zaslané UNID neshoduje s uloženým UNID v ABRA Gen). Pokud již zapsaná jsou, vrátí se jako odpověď status 200 OK a zpracování se ukončí.
Opět použijeme metodu PUT.
PUT http://localhost/data/iot
Tentokrát si předvedeme přidání záznamu stavu baterie, včetně specifikace UNID v těle požadavku.
{
"SensorCode": "F3799",
"SensorQuantity": "Battery",
"RecordedAt": "2017-05-15T16:32:00.000",
"ShortStringValue": "low",
"UNID": "S5Q15UOPWSMOXCGQFHTOBNXHDW"
}
Pokud data doposud nejsou v systému zadána, dochází dle pravidel nadefinovaných v číselníku Pravidel přiřazení dat IoT k vyhodnocení, jestli vstupní IoT data budou přijata a k jakému záznamu v ABRA Gen budou přiřazena. Pokud vstupní data IoT nevyhoví žádnému pravidlu, je požadavek zamítnut - vrátí se status 406 Not Acceptable.
Data, která vyhoví podmínkám, jsou uložena do tabulky IoT dat. Pokud by data vyhověla více pravidlům, založí se více záznamů IoT dat se stejným UNID.
Pokud potřebujeme v jednom kroku odeslat data a současně získat UNID vytvořeného objektu pro budoucí použití, je možné místo metody PUT použít metodu POST, která vytvoří nový business objekt IoT data a v odpovědi vrátí celou jeho reprezentaci (ve formě JSON objektu), včetně UNID.
Požadavek:
POST http://localhost/data/iotdata
Tělo požadavku:
{
"Sensor_ID": "1000000101",
"SensorQuantity": "Fullfillment",
"RecordedAt$Date": "2019-02-13T13:57:00",
"NumericValue": 1
}
Odpověď:
{
"binaryblobvalue": "",
"booleanvalue": false,
"classid": "SLMOWS2CG2Y41434QE52D3PW3K",
"createdat$date": "2019-02-20T11:21:29.195Z",
"datetimevalue$date": null,
"displayname": "K3TIVBCC2XHON1UXJ00NZFC3SS-SMH SMH_senzor/Fullfillment",
"id": "6400000101",
"numericvalue": 1,
"object_id": "0000000000",
"object_idobj": "0000000000",
"objectclass": "00000000000000000000000000",
"objversion": 1,
"recordedat$date": "2019-02-13T12:57:00.000Z",
"sensor_id": "1000000101",
"sensorquantity": "Fullfillment",
"shortstringvalue": "",
"textblobvalue": "",
"unid": "K3TIVBCC2XHON1UXJ00NZFC3SS",
"valueastext": "1,000",
"valuedatatype": 0
}
- V URL požadavku je zapotřebí uvést identifikátor iotdata (nikoli iot, který se používá pro metodu PUT).
- V těle požadavku je zapotřebí specifikovat Sensor_ID (povinné pole při vytváření objektu metodou POST), nikoli SensorCode.
- V těle požadavku je zapotřebí místo RecordedAt uvést RecordedAt$Date.
Více viz Web API. Postup nastavení, spuštění a použití základního dotazování krok za krokem viz ABRA API Tutoriál - První kroky s Web API.
K dispozici jsou následující možnosti:
Všechna uložená IoT data lze spravovat v agendě Data IoT. Zde jsou k dispozici buď ve formě tabulkového seznamu nebo ve formě grafů.
Agenda Data IoT - záložka Seznam
Agenda Data IoT - záložka Detail
Agenda Data IoT - záložka Data graficky
Kromě agendy IoT data si lze tato data prohlížet v agendách těch objektů, k nimž byla přiřazena. Ve většině agend je v menu Nastavení k dispozici volba Zobrazovat IoT data, pomocí níž si lze zapnout zobrazování záložky IoT k záznamů dané agendy. Tudíž, zapněte si zobrazování záložky v těch agendách, k jejichž záznamům budete nějaká data přijímat.