Ubidots je komplexný nástroj, ktorý spája budovanie IoT aplikácii, vizualizácie a dátovú analytiku. Je určená predovšetkým pre priemysel, ale využitie nájde aj vo výskumnej a akademickej sfére. Má širokú základňu nástrojov, knižníc pre integráciu širokého počtu a typov zariadení. Platforma umožňuje prijímanie dát skrz protokoly HTTP, MQTT, TCP, UDP, alebo parsovaním priemyselných protokolov. Ponúka viac ako 20 typov widgetov pre dashboardy (metriky, grafy, tabuľky, mapy, kontrolné - tlačidlá a prepínače, hodin, obrázky, či pokročilé SCADA, HTML Canvas, Custom UI), umožňuje analytiku, či postprocessing, ktorého výsledkom sú syntetické premenné.


Ubidots je výhradne typom Push aplikácie a tak nemôžeme získavať dáta z Watmonitora (webová aplikácia hladinomera) priamo requestom z platformy. Musíme využiť spôsob, ako dáta posielať priamo z Watmonitora, alebo s využitím middlewaru. Najbežnejší protokol, ako bude možné dáta do platformy poslať bude využitie HTTP(S), ktoré vieme zrealizovať z middleware, ale aj priamo z Watmonitora CURL volaním. Tento návod je univerzálny pre Ubidots účty typu STEM, či Industrial.
V hlavnej záložke klikneme na Devices pre správu zariadení. Klikneme na Create a device a vyberieme Blank device, nakoľko nevyužívame žiadne z dostupných hardvérových riešení v Ubidots. Pomenujeme, napríklad Watmonitor-device, čo nám vytvorí aj rovnomenný API label s kombináciou malých znakov.

Po rozkliknutí profilu môžeme v ľavej časti zoznamu zviditeľniť token zariadenia, ktorý autorizuje zápis dát do Ubidots, ktoré sa budú archivovať pod týmto virtuálnym zariadením. Samotný HTTPS POST request bude v URL adrese obsahovať device label (v našom prípade watmonitor-node) a tiež dvojicu HTTP hlavičiek, ktoré definujú autorizačný token zariadenia (pre účel článku BUS-NsBhGbMncIpp7GaRCD96J9jO5ZXotX) a tiež typ odosielaných dát - JSON:
- https://industrial.api.ubidots.com/api/v1.6/devices/watmonitor-node/
- X-Auth-Token: BBUS-NsBhGbMncIpp7GaRCD96J9jO5ZXotX
- Content-Type: application/json
Samotný payload bude obsahovať štandardnú JSON štruktúru s kľúčom a hodnotou { "water":123 }. Formát payloadu môže byť aj iný, v prípade, že potrebujete posielať textové reťazce (resp. nečíselné hodnoty) a vtedy sa využíva tzv. context kľúč, ale to v tomto prípade jednoduchej integrácie číselných hodnôť nevyužijeme.
V prípade, že dáta boli zapísané, získate odpoveď Ubidots backendu v JSON formáte so status kódom 201. V prípade, že je problém s tokenom, tak vám túto skutočnosť vypíše a upozorní na neoprávnenie používateľa na zápis dát.
{ "water":
[
{ "status_code": 201 }
]
}
Okrem tokenu pri zariadení môžete použiť aj token používateľa. Pozor, okrem tokenu nájdete aj API kľúč, nie je to to isté! Po uložení dát môžete tieto dáta vidieť aj v prehľade zariadenia ako premennú, kde už bude aj hodnota, ktorú backend prijal. Posielať je možné rozdielovú hodnotu (vzdialenosť medzi snímačom na veku studne a hladinou), alebo celkovú hodnotu (od dna po hladinu).

Prejdeme na hlavný prehľad kliknutím na Ubidots v ľavom hornom rohu, ktorá nás navedie čo časti Dashboardov. Vytvoríme si dashboard, v tomto prípade Watmonitor_integration. Po kliknutí na Add new Widget a vyberieme si graf, ktorý sa nám páči. Po vybratí typu vizualizácie Ubidots bude požadovať výber zariadenia a konkrétnej premennej, ktorej hodnota sa bude zobrazovať. V časti agregácie je možné nastaviť, akú hodnotu budeme zobrazovať z time-series dát. Poslednú, priemerovanú, sumár, minimum, maximum, prvú, počet záznamov...

V sekcii Appearance môžeme widget dodatočne upravovať. Nastaviť meno, počet desatinných miest, farby, formát dátumu a času. Pre pokročilých používateľov je tu aj možnosť úpravy widgetu cez HTML editor. Jednotka premennej sa tu nenastavuje.

Tá sa nastavuje v premennej pod kontrétnym devicom v Devices sekcii. V prípade, že použijeme graf pre vizualizáciu, budeme vidieť dáta z Watmonitora za dané časové obdobie, ktoré si navolíme (za prepokladu, že prijímame dáta kontinuálne z Watmonitora aj do Ubidots).

Príklad CURL volania z Watmonitora pre ukážkové dáta:
$hodnota = 48;
$ch = curl_init("https://industrial.api.ubidots.com/api/v1.6/devices/watmonitor-node/");
$data = json_encode([ "water" => $hodnota ]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"X-Auth-Token: BBUS-NsBhGbMncIpp7GaRCD96J9jO5ZXotX" ]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch); if (curl_errno($ch)) {
echo "Chyba CURL: " . curl_error($ch); }
else { echo "Odpoveď Ubidots: " . $response; }
curl_close($ch);
Middleware - Node-RED
Obdobným spôsobom by dokázal dáta posielať aj Node-RED (ako middleware) flow, ktorý by využíval node function pre preformátovanie dát na požadovaný formát, ak by získal dáta priamo z JSON endpointu Watmonitora json_output.php, ktorý poskytuje dáta v takomto formáte:
{
"name": "Waterwell at home",
"value": 340,
"depth": 400,
"volume": 1709.03,
"time": "26. Oct 18:11",
"time_now": "26. Oct 22:22"
}
Preformátovanie je tu nutnosťou, nakoľko sa v JSON-e nachádza aj textový reťazec, ktorý štandardne neposielame, ale je ho nutné "odrezať", prípadne sa môže poslať, ale vyžaduje sa použitie context kľúča v JSON formáte. Obdobne môže po úprave dát na požadovaný formát Node-RED poslať dáta do Ubidots metódou MQTT klienta s pripojením na Ubidots MQTT broker, ktorý je dostupný na adrese: industrial.api.ubidots.com na štandardných portoch 1883 pre MQTT, či 8883 pre MQTTS.

Tento MQTT Broker môžu používať aj STEM používatelia Ubidotsu, i keď v súčasnosti je dostupný Broker pre nich aj na adrese: things.ubidots.com, ale plánuje sa jeho ukončenie a Industrial MQTT Broker bude fungovať aj pre STEM používateľov. Ubidots vyžaduje použitie používateľského mena, ktoré reprezentuje token a nepoužíva heslo. Samotný publish sa realizuje na topic, ktorý obsahuje label zariadenia, napr.: /v1.6/devices/watmonitor-node pre naše zariadenia watmonitor-node. Ako vidíme, dosiahli sme zhodné dáta na Ubidotse s tými, ktoré má v rozhraní Watmonitor.


Ďalšími z bohatých nástrojov platformy Ubidots je možné vykonávať dátovú analytiku z nameraných údajov, prepovedať stavy, vytvárať syntetické premenné. Rovnako môžete konfigurovať Events (notifikácie, akcie), či Data pipelines pre vytváranie automatizácii.
Vyskúšajte Watmonitor s vašim hardvérom (dostupné ukážkové zdrojové kódy pre ESP32, ESP8266, Arduino, Rpi Pico W s WiFi / Ethernet konektivitou a ultrazvukovým / laserovým ToF snímačom), alebo Watmonitor integrujte cez JSON endpoint do vášho rozhrania Ubidots, či priemyselnej aplikácie priamo / cez Node-RED middleware: https://your-iot.github.io/Watmonitor/sk/