Minule som priniesol tutoriál pre pripojenie na HTTP server s vykonaním POST requestu pre LTE Cat 1 modul EG21-G od Quectelu. Tutoriál obsahoval okrem samotného príkladu na HTTP server aj prehľad dôležitých príkazov zodpovedných za pridelenie konektivity do mobilnej siete a využívanie dátových služieb.
Dnes to nebude dlhý tutoriál, skôr len sled AT príkazov nakoľko časťou pripojenia na mobilnú sieť, ani preferovanou LTE / 3G / 2G sieťou sa zaoberať nebudeme. Priblížime si však rovno pripojenie na Broker cez MQTT s využitím tohto zaujímavého modulu od Quectelu. Najprv niečo málo o IoT platforme Thingsboard.
Platforma Thingsboard je populárna IoT platforma, ktorá existuje v profesionálnej, komunitnej verzii, pričom obsahuje viacero možností predplatného vrátane doplnkových analytických funkcií, podpory produktu a podobne. Prichádza s webaplikáciou pre vizualizáciu dát a admin nástroje. Obsahuje správu alertov, automatizácii a podobne. Okrem webaplikácie poskytuje aj aplikáciu pre Android, iOS. Projekt je poskytovaný prostredníctvom cloudu s mesačným preplatným (aj zdarma v najnižšej verzii s limitami), ale je tu aj možnosť zakúpenia projektu a hostovania ho na vlastnom serveri, kedy si túto licenciu viete zakúpiť raz a následne prevádzkovať, pričom štandardne podpora pre takýto projekt funguje na rok.
Každá verzia má svoje výhody a nevýhody. Štandardne sú balíčky odstupňované podľa toho, čo poskytujú a limitujú napríklad počet zariadení, automatizácii, integrácii a podobne. Thingsboard má nespočet funkcií vrátane automatizácii cez Rule Chain (niečo na spôsob NodeRED) a taktiež aj pre profesionálne použitie na Big data, analytické nástroje, white-labelling pre možnosť distribúcie web rozhrania s rôznym pozadím, farbami pre konkrétnych zákazníkov, veľa customizačných možností.
Na úrovni dát rozlišujeme telemetriu a taktiež aj atribúty. Telemetria sú dáta z IoT zariadenia, ktoré meria, teda tu môžeme zaradiť teplotu, vlhkosť, GPS súradnice a iné, vrátane systémových dát ako aktuálny stav zariadenia, operačný režim, stav vstupov, výstupov. Atribúty slúžia predovšetkým na opak a to Subscribe zo strany klienta, avšak je ich možné aj prepísať. Medzi najčastejšie použitie atribútov patrí spustenie určitej akcie na vyžiadanie, napr. reset dosky, odpojenie od WiFi, prekonfigurovanie dôležitých dát zodpovedných za beh, napr. časový interval rutiny a podobne. Funguje to ako flag, ktorý si stiahnete, následne nastavíte na opačnú hodnotu a vykonáte danú funkcionalitu, ktorú flag spúšťa iba raz, vhodné pre takéto one-time akcie, avšak je ho možné čítať aj bez prepisovania hodnoty.
Do Thingsboardu môžete dáta zaslať aj po HTTP protokole cez dostupné API. Možností je niekoľko. V našom prípade ostaneme u MQTT protokolu a zatiaľ iba s využitím Publishu telemetrie. Predpokladajme, že naše zariadenie meria teplotu a vlhkosť a následne tieto dáta odosiela na Thingsboard. Pre MQTT pripojenie je nutné nastaviť niekoľko konfiguračných parametrov príkazmi AT+QMTCFG, kde sa definuje predovšetkým, či používate zabezpečené / nezabezpečené MQTT spojenie a pod.
Ďalším dôležitým parametrom je nastavenie adresy MQTT servera a portu. Nakoľko používame štandardné MQTT spojenie, port je 1883. V prípade šifrovaného MQTT protokolu by sme zvolili port 8883. V tomto prípade využívame cloudovo hostovanú inštanciu Thingsboardu priamo na ich stránke, teda môžeme použiť aj ich MQTT Broker na adrese thingsboard.cloud. Príkazom AT+QMTCONN nastavíme id klienta (môže byť čokoľvek) a taktiež prístupový token. V tomto prípade je token EG21G. Ak by sa token nezhodoval s tým, čo je zadané v administrácii projektu, nebolo by možné pripojiť sa k brokru a zaslať telemetriu. Okrem tokenu je možné vybrať aj iný spôsob autorizácie klienta, napríklad bez, či s menom a heslom, kedy je meno i heslo unikátne pre každého klienta. V tomto prípade je token validný iba pre jedno zariadenie. Teda ak by vysielalo iné zariadenie s identickým tokenom, zapisovalo by dáta inému zariadeniu, ktorý ten token používa.
EG21-G sa v tomto kroku pripojí na MQTT Broker Thingsboardu. Publish smeruje na topic v1/devices/me/telemetry. V tomto kroku sa vyžaduje aj počet znakov payloadu. Payload je vo formáte JSON, môžete ho využívať rôzne, ako popisuje dokumentácia. Od jednoduchých kľúčov a hodnôt až po polia, časové značky a pod. podľa toho, čo vyžadujete pre vašu aplikáciu. V našom prípade má ukážkový payload {"temperature":25,"humidity":60} 32 znakov a tak túto hodnotu posúvame na posledný parameter príkazu AT+QMTPUBEX. Následne je potrebné zadať daný payload, avšak je tam potrebné pridať aj znak Ctrl+Z. To docielime znakom \x1A, čo je Ctrl + Z a zároveň tento znak nazývame aj EOF (End of the File). V tomto kroku sa už vykoná samotný Publish dát. Príkazom AT+QMTCLOSE=0 ukončíme spojenie s Brokerom.
Sled AT príkazov pre zaslanie telemetrie na Thingsboard (za predpokladu, že použijete svoj token). Použitá sieť je irelevantná vzhľadom na príakzy nižšie. Bude fungovať s LTE, 3G, aj 2G.
AT+QMTCFG="recv/mode",0,0,1
AT+QMTCFG="version",0,4,1
AT+QMTOPEN=0,"thingsboard.cloud",1883
AT+QMTCONN=0,"random","EG21G"
AT+QMTPUBEX=0,0,0,0,"v1/devices/me/telemetry",32
{"temperature":25,"humidity":60}\x1A
AT+QMTCLOSE=0