Hoe start je snel een schaalbaar IoT platform?

-

Steeds meer bedrijven denken na over de voordelen en uitdagingen die horen bij het monitoren en/of aansturen van allerlei apparatuur op afstand. Wanneer je net aan het inlezen bent over Internet of Things word je geconfronteerd met heel veel vragen. Met deze blog wil ik je een vliegende start geven met Azure IoT Hub, zodat je direct kan beginnen met experimenteren, zonder dat je eerst door een heleboel documentatie moet worstelen.

Microsoft Azure IoT Hub

Schaalbaarheid is een groot probleem in de IoT wereld, maar gelukkig zijn hiervoor bouwblokken beschikbaar. Microsoft Azure biedt deze bouwblokken aan in een tried-and-tested omgeving, genaamd IoT Hub. Deze omgeving kun je met vrij weinig moeite opzetten waardoor je direct kunt beginnen met het aansluiten van IoT apparaten. Het voordeel van een platform als Microsoft Azure is dat je niet hoeft te beginnen met het doen van aannames over rekenkracht en opslagcapaciteit. Daarnaast is het mooie van een cloudprovider dat je praktisch oneindig kan schalen en je alleen betaalt voor de service die je daadwerkelijk gebruikt.

Microsoft Azure IoT Hub is een standaard service van het Microsoft Azure platform. De data die vanuit een IoT apparaat gestuurd kan worden wordt niet aan banden gelegd. Het platform kan garanderen dat data van honderdduizenden of miljoenen apparaten afgehandeld kan worden, zodat je niet na hoeft te denken over een passende infrastructuur. De belangrijkste keuzes die jij dan nog moet maken zijn bijvoorbeeld: welke gegevens zijn essentieel en hoe moeten deze opgeslagen en verwerkt worden? Ga je edge computing inzetten op je IoT apparaat of laat je Microsoft Azure al het werk voor je verzetten? De antwoorden hierop hebben wel invloed op de kosten die Microsoft in rekening brengt. Bij het inzetten van edge computing kun je kosten besparen op datatransmissie, rekenkracht en opslag. Het gevolg daarvan is dat het mogelijk is om jouw IoT apparaat zo te dimensioneren dat het optimaal past bij alle eisen en wensen.

Microsoft Azure Portal

Voorbeeld van vragen die gesteld worden door het Quickstart script

Voorbeeld Quickstart script

De Azure IoT Hub activeer je via het Microsoft Azure platform d.m.v. Azure Portal, maar dit is niet reproduceerbaar, vrij complex en kan veel vragen oproepen. Daarnaast betekent het gebruik van Azure Portal vaak ook dat er veel documentatie doorgelezen en mogelijkheden uitgeprobeerd moeten worden. Om je snel op weg te helpen hebben we bij Luminis een open-source Quickstart project opgezet. Hiermee zet je met het invullen van slechts enkele gegevens binnen een paar minuten een project op basis van Azure IoT Hub op. Het enige wat je nodig hebt, is een Microsoft Azure platform account. Het script leid je vervolgens door het proces.

Hoe werkt IoT Hub (in het kort)

Een IoT apparaat stuurt data naar de IoT Hub in de vorm van een JSON-bericht waarvan je de inhoud zelf bepaalt. IoT Hub geeft je de mogelijkheid om configuraties aan te passen voor IoT apparatuur of instructies te sturen om taken uit te voeren. Hoe mooi is het dat je tegen een IoT apparaat kan zeggen dat het vaker of minder vaak taken moet uitvoeren? Of dat je graag wil dat het een self-test uitvoert omdat je vreemde waarden ontvangt. De configuraties van de IoT apparaten worden in de IoT Hub vastgelegd. Er hoeft dus niet altijd een actieve verbinding te zijn. Wanneer een IoT apparaat weer verbinding krijgt, kan deze de configuraties uitlezen en zichzelf instellen.

Het quickstart project

In ons Quickstart project staat als voorbeeld een virtueel weerstation die de fictief gemeten temperatuur en luchtvochtigheid gegevens doorstuurt naar de Microsoft Azure IoT Hub. Deze is beschikbaar als een .Net en Java applicatie. Er zijn voor IoT Hub bibliotheken beschikbaar gesteld voor diverse programmeertalen, zodat je snel en gemakkelijk van de mogelijkheden gebruik kunt maken. Om de doorgestuurde gegevens te bekijken is er een .NET Function App gemaakt waarvan de logging in Microsoft Azure Portal bekeken kan worden.

Voorbeeld van logregels in de FunctionApp

Voorbeeld van logregels in de FunctionApp

Dit is jouw startpunt om ook echt iets met deze gegevens te doen. Als laatste zijn er voorbeelden in .Net en Java om IoT apparaten aan te sturen door middel van een device manager. In de device manager configureer je een ander interval voor één of meerdere IoT apparaten. Of je geef je alle apparaten de fictieve opdracht om een nieuwe software versie te downloaden.

Aangemaakte resources

Het Quickstart project bevat een PowerShell script dat gebruik maakt van de Microsoft Azure Command Line Interface (CLI), die een aantal keer vraagt om antwoorden. Bijvoorbeeld de naam van het IoT Hub project in Microsoft Azure, resources, locaties etc. Er worden een aantal aannames gedaan in het gebruik van bepaalde resources op gebied van rekenkracht en opslag. Er is gekozen om hierbij zo veel mogelijk gebruik te maken van de Free Tier. Op deze manier kan het project in veel gevallen kosteloos gedraaid worden om zo de functionaliteiten te proberen.

Weergave van resource in Azure

Weergave van aangemaakte resources

Hoewel deze keuzes voor je gemaakt worden, kan je de resources in Azure Portal uitbreiden indien je dit nodig acht. Zodra je daarna een virtueel weerstation project opstart zal je gelijk de demo in elkaar zien haken. Hierdoor krijg je direct een beeld over de mogelijkheden van Microsoft Azure IoT Hub.

Mocht je geïnteresseerd zijn en IoT Hub willen proberen of wil je snel een proof of concept kunnen opzetten? Dan raad ik je aan om ons QuickStart project te downloaden (of te klonen) van onze GitHub pagina.

https://github.com/Luminis-Arnhem/azure-iot-hub-quickstart

Hoe nu verder

Er zijn een aantal onderwerpen waarop ik graag extra focus wil leggen bij het gebruik van een platform als Microsoft Azure en het inzetten van IoT apparaten.

Kosten

De kosten van een dergelijk platform kunnen soms complex en onoverzichtelijk zijn. Denk bijvoorbeeld aan de kosten van datatransmissie tussen de verschillende Azure services. Wanneer het aantal aangesloten apparaten explosief groeit, doen de kosten dat ook. Houd daarom van begin af aan de kosten in de gaten. Blijf constant op de hoogte van nieuwe Azure services, zodat je kostenbesparende services in kunt zetten.

Beveiliging

Hoewel IoT Hub zorgt voor een bepaalde mate van beveiliging, wil dat zeker niet zeggen dat dit voldoende is voor elke situatie. Verzeker daarom jezelf ervan dat je tijdens implementatie een zo hoog mogelijke graad van beveiliging inbouwt en daar continu mee bezig blijft. Het Quickstart project garandeert dit niet voor iedere situatie. Wanneer de beveiliging van één of meerdere apparaten gecompromitteerd is, wil je hier direct en ook heel gericht op kunnen acteren.

Privacy

Data privacy is tevens een onderwerp waarvoor IoT Hub niet standaard voorzieningen heeft. Elk project heeft hierin zijn eigen eisen. Maak daarom een plan voor het gebruik en de beveiliging van gevoelige gegevens binnen het project.

Life cycle

Een dergelijk project zet je hoogstwaarschijnlijk niet op voor een korte periode. Je wil waarschijnlijk op afstand nieuwe firmware versies uitrollen voor bestaande apparaten met bugfixes of nieuwe features. Zorg ervoor dat jouw IoT hardware op afstand een firmware upgrade kan installeren en houd er rekening mee dat na verloop van tijd nieuwe IoT hardware ingezet kan worden met meer functionaliteiten. In beide situaties kunnen daarmee verschillende versies van berichten ontstaan. Bericht versies of hardware en firmware versies meesturen kan je in deze situaties helpen.

Afwegingen

In elk project zul je keuzes moeten maken over de implementatie. Door gebruik te maken van IoT Hub verbind je jezelf aan Microsoft Azure, want hoewel andere cloud providers zoals AWS vergelijkbare diensten aanbieden, zijn die services niet compatible met elkaar. Voor de één is deze keuze makkelijker gemaakt dan voor een ander. En hoewel IoT Hub in veel situaties een uitkomst biedt, betekent dit niet dat het voor iedereen de oplossing is. Bij Luminis staan wij natuurlijk altijd klaar om je te adviseren rondom de services van Microsoft Azure. Voel je vrij om contact met ons op te nemen.

Enkele tips

Bij het aanmaken van een Azure account, krijg je tegoed. Wanneer je weinig gebruik maakt van de infrastructuur zal dit tegoed ruim afdoende zijn om ons project meerdere malen te proberen. Ik raad je aan de resources in Azure te verwijderen zodra je deze niet meer gebruikt. Dit zorgt ervoor dat je niet opeens een onverwachte factuur binnenkrijgt.

Er bestaan meerdere mogelijkheden om jouw project reproduceerbaar te maken. Denk hierbij bijvoorbeeld aan tools als Azure Resource Manager of Terraform. Maar je kan natuurlijk het script uit ons project aanpassen naar jouw wensen.

Wil je meer weten over Microsoft Azure IoT hub of heb je vragen over ons Quickstart project? Onze experts helpen je graag bij het beantwoorden van al je vragen en het oplossen van problemen.