Een blik op Azure IoT Edge

Geschreven door Matthijs Wagemakers op

Azure IoT Edge is een Azure service met als voornaamste functie het uitvoeren van workloads buiten de cloud, direct op IoT devices. Het beheren van devices, workloads en ontvangen van (real-time) data vindt plaats in de Azure Cloud.
In dit artikel kijken we naar mogelijkheden van de service, uit welke onderdelen deze bestaat en hoe deze werken.

Wat is Azure IoT Edge

Azure IoT Edge is een onderdeel van het Azure IoT platform. Azure IoT levert de infrastructuur om IoT devices te beheren vanuit de cloud en om grote hoeveelheden data uit deze devices te ontvangen en door andere Azure services te laten verwerken.

IoT Edge biedt de mogelijkheid om vanuit de cloud workloads op devices te beheren.
Hier verschillen IoT Edge devices van IoT devices: een IoT device kan alleen berichten uit de cloud ontvangen en data naar de cloud versturen, een IoT Edge device kan alles wat een IoT device kan met daarbij de mogelijkheid om workloads te draaien in de vorm van modules. IoT Edge devices zullen doorgaans wat zwaarder uitgerust zijn dan IoT devices en draaien op Linux of Windows.

Een IoT Edge device kan (vanuit de cloud) voorzien worden van (compute) workloads. Use-cases van deze workloads kunnen zijn:

  • aansturing van apparaten en industriële machines
  • lokale analyse van sensor data met machine learning
  • lokale aggregatie van data voordat deze naar de cloud verstuurd wordt
  • herkennen van afwijkende patronen en melding hiervan versturen naar de cloud

IoT Edge bestaat uit een aantal onderdelen:

  • IoT Hub
  • Edge devices met daarop de Azure IoT Edge Runtime
  • Edge modules (workloads)

IoT Hub

De IoT Hub verzorgt de communicatie met de IoT devices. Devices kunnen hier gequeried worden, modules worden uitgerold en de IoT Hub ontvangt alle data van de devices en kan deze verder het Azure landschap in routeren. Voor het opnemen van data fungeert de IoT Hub als een Event Hub. Het biedt dezelfde real-time, big data capaciteiten en integratiemogelijkheden met andere Azure Services als een Event Hub, maar heeft daarnaast specifieke IoT features voor het beheren en de interactie met devices.

Edge devices

Een Edge device is een Windows of Linux machine met daarop de IoT Edge Runtime en een aantal modules. Edge Device De runtime bestaat uit een daemon, een container engine (Moby) en twee modules: de edgeAgent en edgeHub. Samen zorgen ze onder andere voor de communicatie met Azure, het provisionen van modules, module health en life-time en de communicatie tussen modules.

Een device is in veel situaties verbonden met internet maar dit is niet vereist. IoT Edge ondersteunt ook dat devices tijdelijk of permanent offline zijn. Bij een device dat tijdelijk offline is worden berichten op het device pas verstuurd nadat deze weer verbonden is met Azure (afhankelijk van de Time to Live van de berichten).

Edge modules

IoT Edge modules zijn de kern van de IoT Edge oplossing. De modules zijn in basis niets anders dan Docker containers die vanuit de cloud gedeployed en gestart worden.

In principe kan elke Docker image gebruikt worden maar de kracht van IoT Edge wordt pas echt volledig benut door te verbinden met de (lokale) Edge Hub. Hiervoor zijn SDKs voor verschillende talen beschikbaar.
Door te verbinden met de Edge Hub kan de module method calls ontvangen, berichten versturen en ontvangen en interactie hebben met zijn module twin (een JSON document dat de staat van de module reflecteert).

Onderling kunnen modules met elkaar communiceren via method invocations en via messages.

Method invocations

Method invocations zijn zoals de naam al verklapt een manier om een actie uit te voeren op een specieke module. Modules kunnen methods van elkaar aanroepen, maar deze zijn ook beschikbaar om vanuit de cloud aan te roepen. Een method invocations bestaat uit de naam van het device, de naam van de module en de naam van de method. Verder kan er optioneel een payload meegegeven worden en kan de method data returnen.

Message routing

Messages worden door een module verstuurd via een output. De versturende module weet niet wie luistert naar de berichten. Andere modules kunnen door middel van route declaraties luisteren naar specifieke outputs door deze naar een input te laten verwijzen. Een message kan op deze manier naar 1 of meerdere andere modules en/of naar de upstream gerouteerd worden. Een message die naar de upstream gestuurd wordt zal, indien het device online is, naar de IoT Hub in de cloud worden doorgezet.

Tot slot

IoT Edge is een groot onderwerp met veel mogelijkheden en toepassingsgebieden. In dit artikel hebben we een klein deel van de basis behandeld maar er zijn nog talloze andere interesante sub-onderwerpen zoals de integratie met andere Azure services, provisioning, deployments, security en update management. Wil je hier mee over weten, neem dan gerust contact met ons op.

Matthijs WagemakersMatthijs is een .NET expert met brede kennis die hij graag inzet om organisaties te helpen met het kostenefficiënt ontwikkelen van kwalitatief hoogwaardige software. Momenteel werkt hij als software en cloud engineer bij De Nederlandsche Bank.
← Terug
XPRTZ