IoT: Zapojení Arduina do Azure IoT Hub a vizualizace s Time Series Insight

Začínám si trochu hrát s IoT, ale nečekejte něco bůh ví jak sofistikovaného. Pokud také začínáte, vezměme Azure do hrsti a pojďme do toho společně. Dnes si vezmeme IoT senzor, připojíme na Azure IoT Hub a posbírané údaje nahrneme do vizualizační platformy Time Series Insights.

Kde vzít senzor

Já začínám s IoT DevKit AZ3166 od MXCHIP. Je to "Azure Ready" destička postavená na Arduinu a má na sobě rovnou krásně připravené senzory teploty, vlhkosti, tlaku, magnetometr, gyroskop a akcelerometr. Kromě toho i rozhranní jako je audio čip a k němu patřící mikrofon a výstup na sluchátka, WiFi modul a modul na infračervenou komunikaci. Dvě uživatelská tlačítka, diody a pěkný OLED displej.  Na zařízení mrkněte zde: https://microsoft.github.io/azure-iot-developer-kit/

Na stránkách projektu najdete mnoho hezkých příkladů, ale já jsem si chtěl do toho taky šáhnout a žádný mi nevyhovoval přesně. Chtěl jsem odesílat data ze všech senzorů a tlačítkama si moci volit interval odesílání. Navíc u akcelerometru mi dávalo smysl dělat odečty relativně často o odesílat maximum (největší naměřené zrychlení v rámci intervalu) a průměrné zrychlení v rámci intervalu. Nezbylo, než zkusit v tom Céčku něco nabastlit.

Začněte návodem na stránkách projektu a stažením kompletní sady nástrojů včetně Visual Studio Code a modulů do něj: https://microsoft.github.io/azure-iot-developer-kit/docs/get-started/

Pro svoje příklady budu používat tento můj pokus - pokud chcete, nahrajte si ho do zařízení: https://github.com/tkubica12/iot-demo-arduino

Napojení na IoT Hub

IoT Hub je řešení pro příjem dat ze senzorů, obousměrnou komunikaci, správu zařízení včetně autentizace a umí toho ještě víc. Data přijímá buď na HTTP API nebo AMQP protokol či MQTT. Já použil přímo IoT Hub SDK pro Arduino a při provisioningu credentials jsem postupoval dle návodu na GitHubu DevKitu.

Takhle můj IoT Hub vypadá po připojení senzoru.

Data nám do něj vesele padají a můžeme je zpracovávat. Já chci ale začít jednoduše, takže využiji hotovou platformní službu na vizualizaci. Ta bude mít nastarost si z Event Hub data vysosat, parsovat je, dlouhodobě uložit, vizualizovat a agregovat. Takové hotové řešení se jmenuje Time Series Insights.

Vizualizace dat s Time Series Insights

Pro vizualizaci prakticky čehokoli je nesmírně oblíbené Power BI, které o parník vede v příslušných studiích Gartneru. Můžete ho samozřejmě velmi dobře použít i pro IoT, ale data mu potřebujete trochu připravit - agregovat, zakulatit. Time Series Insights je zaměřena jen a čistě na datové řady. Nemusíte nic moc znát, připojíte na IoT Hub (typicky data ze senzorů) nebo Event Hub (například click stream z obchodní aplikace) a už si prohlížíte obrázky.

Vytvořme si Time Series Insights.

Přidáme IoT Hub jako zdroj dat.

Jednodušší to snad být nemůže. Ze záložky Overview skočte do Time Series Insights GUI a rovnou uvidíme naše události.

V menu uvidíme vyparsovaná data tak, jak je ze senzoru posílám.

Udělal jsem nejjednoduší experiment co mě napadl. Nechal jsem destičku ležet a pak ji vzal do ruky a dal zase zpět. Chtěl bych vědět, zda tohle bude v grafech vidět. První co uděláme je, že si do grafu dáme údaje z magnetometru (řekněme kompasu) ve všech třech dimenzích. To zvednutí destičky rukou je dost jasně vidět.

Nejen změna polohy vůči kompasu, ale uvedení destičky do pohybu by mělo vykazovat zrychlení. Podívejme na grafy s hodnotou maximálního zrychlení v průběhu intervalu (posílám po 2 vteřinách, v krabičce odečítám asi 5x za vteřinu).

Ještě další důkaz? Krabičku jsem určitě vzal do ruky tak, že se změnila jeji orientace vůči zemi (naklonil jsem ji nějak). Podívejme se na údaje z gyroskopu.

Co se podívat trochu blíž. Označím si část s tím výkyvem a přizoomuji.

Možná by stálo za to si prohlédnou vstupní data.

Systém nám ukáže i nějaký vhled do dat, statistické zastoupení hodnot apod.

Někdo rád graf, někdo tabulku, ale někdo třeba heat mapu.

Já mám jen jeden senzor, ale představte si, že máte hromady senzorů, továren apod. Přímo v GUI můžete snadno shlukovat/agregovat údaje podle nějakého kritéria.

Všimněte si, že surová data mám po dvou vteřinách, ale vlevo je ovládací prvek, který přímo v reálném čase provede zahlazení grafu agregací třeba po 10 vteřinách. Křivka je lépe čitelná. Abych ale nepřišel o případné extrémní údaje, je možné do obrázku promítnout i maxima a minima.

Jakmile se vám obrázek líbí, můžete si ho uložit a nakonec si poskládat pěkný dashboard.

 

Jakmile jste měl Arduino napojené na IoT Hub, během chvilky jsem se dostal ke schopnosti při obrovské škále data posbírat, parsovat, uložit a dělat krásné interaktivní grafy. Zkuste si to v Azure i Vy.

Příště už začneme s daty něco dělat a na pomoc si vezmeme Azure Stream Analytics.



Pohled na hybridní svět IT nově i s Azure Arc IoT
Azure Blob Storage endpoint ve vašem Raspberry s IoT Edge IoT
Azure IoT Edge: využívání Edge modulů na příkladu Azure Function a Stream Analytics IoT
Azure IoT Edge: cloudové řešení s kouskem Azure v Raspberry IoT
IoT: živé přechroupávání dat do Azure SQL DB, Cosmos DB a Power BI s Azure Stream Analytics IoT