Im Mai war die 1stQuad Solutions AG mit Reiner Ganser als Sprecher auf dem OfficeCamp 2018 (http://www.officecamp.de/OC18/Home) vertreten mit dem Thema «Die Azure IoT Plattform: Was ist drin und wie kann man es nutzen». Er zeigte von der Datenerzeugung durch verschiedene Geräte, über das Senden und Kommunikation mit Azure, dem Verteilen der Daten auf verschiedene Anwendungen bis hin zur Nutzung dieser Daten mit Power-BI, Web Applikationen, PowerApps, LogicApps und nicht zuletzt auch die Kommunikation zurück an die Geräte. Zudem wurden weitere vorgefertigte Angebote von Microsoft vorgestellt.

Die Präsentation zu diesem Vortrag kann hier heruntergeladen werden
(PDF)
.

Grund genug nochmal ein paar Eckpunkte von Azure IoT vorzustellen.

Die Hauptanwendungen von IoT liegen vor allem in den Bereichen Smart City, Connected Industry, Connected Buildings, Connected Cars und Smart Energy. Aber auch Spezialanwendungen, die auf das eigene Unternehmen zugeschnitten sind, können von der vorhandenen IoT Technologie profitieren. Dabei muss es nicht immer um tausende von Geräten gehen, um gewinnbringende Szenarien umzusetzen.

Im Grundsatz geht es bei IoT darum, Geräte (von sehr einfach bis hin zu komplexen Rechnersystemen) an die Cloud zu verbinden. So dass diese dann die Daten dort abliefern können. Die Daten lassen sich dann analysieren und daraus automatische oder manuelle Aktionen ableiten.

Microsoft hat für die Umsetzung dieses Musters eine Referenzarchitektur in einem lesenswerten Dokument zusammengestellt, welche die verschiedenen Komponenten in einer IoT Lösung aufzeigt (siehe «Microsoft Azure IoT Reference Architecture» unter https://aka.ms/iotrefarchitecture). Der Kernaufbau sieht dabei wie folgt aus:

Im oben erwähnten Dokument wird diese Übersicht stetig erweitert, so dass das ganze Spektrum der Nutzung von Azure Komponenten deutlich wird.

Wie die obige Grafik zeigt, bietet Microsoft für die Umsetzung von IoT Szenarien eine sehr grosse Bandbreite, welche bei der Unterstützung für verschiedenste Geräte in Form von Starterkits (mit zertifizierter Hardware) und Device SDK’s anfängt.

Bei den Starterkits existiert bereits eine sehr lange Liste von Geräten. Weitere Infos kann hier abgerufen werden:

https://catalog.azureiotsuite.com/kits

Die Device SDK’s werden benötigt, um mit Azure IoT (IoT Hub) zu kommunizieren. Dabei ist sowohl eine Kommunikation nach Azure, als auch von Azure zum Gerät möglich. Azure ist dadurch in der Lage, z.B. Updates anzustossen oder auch Befehle an die Geräte zu schicken. Was auffällt ist, dass Microsoft nicht nur ihre eigenen Programmiersprachen und Betriebssysteme unterstützt. Von Seiten der Programmiersprachen stehen Implementation für C, Python, Node.JS, Java und .NET bereit und mehr als 1000 zertifizierte IoT Hardware Geräte. Da die SDK’s im Sourcecode auf GitHub vorliegen, können sie auch auf eigene Hardware angepasst werden.

Weitere Infos zu den Device SDK’s: https://github.com/Azure/azure-iot-sdks

Eine interessante Variante von Geräten sind die sog. Azure IoT Edge Geräte. Hier ist die Idee, dass das Gerät intelligenter ist und einige Azure Dienste bereits auf dem IoT Edge Gerät laufen. Azure Dienste, welche auf solchen Geräten laufen können, sind Azure Cognitive Services, Machine Learning, Stream Analytics und Azure Functions. Somit lassen sich viele Analysen, Berechnungen und Entscheidungen bereits auf dem Gerät ausführen und produzieren somit weniger Daten in der Cloud und auch schnellere Entscheidungen vor Ort. Die erwähnten Dienste lassen sich mit Hilfe der Container Technologie sehr elegant auf den Geräten ausrollen und verwalten.

Weitere Infos zu Azure IoT Edge: https://docs.microsoft.com/de-de/azure/iot-edge/

Eine weitere interessante Erweiterung im Microsoft Azure IoT Umfeld ist Microsoft Sphere, welches die Sicherheit von IoT Szenarien erhöhen soll. Die Idee von Microsoft ist dabei Edge-Geräte mit spezieller Hardware, einem neuen Betriebssystem und einem Azure Security Dienst abzusichern. Interessant ist an dieser Stelle, dass es sich bei dem speziellen Betriebssystem um ein Linux basiertes Betriebssystem handelt. Erste Hardware ist bereits verfügbar (https://www.mediatek.com/products/azureSphere/mt3620).

Details zu Azure Sphere: https://www.microsoft.com/en-us/azure-sphere/details/

Die Anlieferung der Daten von den Geräten erfolgt zumeist an den sog. Azure IoT Hub. Dieser ist dafür ausgelegt, um mit einer grossen Anzahl von Geräten zu kommunizieren. Und dies in beide Richtungen. Er kümmert sich auch um die Sicherheit durch Unterstützung von sicheren Protokollen und dass die Kommunikation nur mit registrierten Geräten möglich ist. Nicht zuletzt unterstützt der Azure IoT Hub auch ein Routing der Messages an verschiedene Endpunkte, so dass diese anhand von definierten Regeln an andere Azure Services/Komponenten (wie z.B. ein Event Hub) weitergegeben werden können.

Weitere Infos zum IoT Hub: https://azure.microsoft.com/en-us/services/iot-hub/

Eine weitere wichtige Komponente in IoT Szenarien ist der Azure Stream Analytics Service. Er bietet die Möglichkeit anhand eines SQL ähnlichen Dialektes die eingelaufenen Daten an verschiedene Anwendungen weiterzugeben. Der Azure Stream Analytics unterstützt dabei mehr Endpunkte als der Azure IoT Hub und ist zudem hoch skalierbar. Unter anderen kann der Azure IoT Hub als Datenquelle dienen. Als Ausgabe werden mehrere Azure Services unterstützt wie Even Hub, Service Bus, Power-BI, Blob- und Table-Storage, verschiedene Datenbanksysteme  (SQL Server, Cosmos DB), Data Lake Store, Azure Functions.

Weitere Infos zu Azure Stream Analystics: https://docs.microsoft.com/en-us/azure/stream-analytics/

Durch die zuvor beschriebenen Komponenten stehen nun die erfassten Daten in verschiedenen bereits verfügbaren Azure Services bereit. Dies bedeutet dass sich vieles bereits durch «zusammenstecken» der verfügbaren Azure Services in recht umfangreiche Anwendungen und Szenarien umsetzen lässt. Beispiele hierfür sind Analyse der Daten mit Power-BI, Starten eines Workflows, Vorhersagen treffen durch Nutzung von Machine Learning, Informieren für Mitarbeitern bereitstellen (z.B. auf dem Mobile Gerät), Aktivitäten auf Geräten zur Steuerung von Anlagen auslösen und vieles mehr.

Da die Daten jedoch auch in verschiedenen Ablagesystem verfügbar sind, können eigene Anwendungen erstellt werden, wie z.B. Webanwendungen die Auswertungen aggregieren und bereitstellen, Überwachung und intelligente Steuerung von Anlagen, effizientere Nutzung von Energie, Optimierung von Verkehrsströmen usw.

Letzten Endes kann die ganze Palette der in Azure verfügbaren Dienste für den Aufbau von IoT Szenarien genutzt werden. Die nachfolgende Grafik gibt eine Übersicht über die verfügbare Dienste in Azure ohne Anspruch auf Vollständigkeit, da sich diese in der Azure Cloud dramatisch schnell erweitern:

Die obige Grafik stammt von Microsoft und ist unter der folgenden URL verfügbar: http://azureplatform.azurewebsites.net/

Um die Einstiegshürde in die IoT Technologien noch weiter zu reduzieren bitetet Microsoft auch fertige Applikationen an, die bereits etliches an Funktionalität zu bieten haben. Bei den angebotenen Lösungen handelt es sich zum Einen um Azure IoT Central (siehe https://azure.microsoft.com/de-de/services/iot-central). Es handelt sich dabei um verwaltete globale IoT-SaaS-Lösung (Software-as-a-Service), mit der sich IoT-Ressourcen einfach vernetzen, überwachen und verwalten lassen. Der Eingang und die Auswertungen können in gewissen Grenzen angepasst werden. Insgesamt erfordert diese Lösung aber wenig Cloud Kenntnisse.
Die anderen „fertigen“ Lösungen sind die Azure IoT solution accelerators (siehe https://azure.microsoft.com/de-de/features/iot-accelerators). Sie bieten Lösungen an in den Bereichen Remote Monitoring, Connected Factory, Predictive Maintenance und Device Simulation. Microsoft zeigt bei diesen Lösungen auch (vor allem bei Remote Monitoring), wie eine Applikation anhand von Microservices aufgebaut werden kann. Die Accelerators liegen im Source Code auf GitHub vor und können somit zum Einen als Anschauungs- und Lernobjekt, aber auch als fertige Lösung mit der Möglichkeit der Anpassung verwendet werden. Das Ausrollen der Accelerators erfolgt automatisch und kann von obiger Website angestossen werden. Da durch die Accelerators in Azure etliche Ressourcen verwendet werden, entstehen Kosten, die im Minimum etwa 100-150 CHF pro Monat und Accelerator betragen. Diese können sich aber durch Erhöhen der eingesetzten Ressourcen aber auch deutlich steigern.

Fazit: Microsoft Azure bietet einen grossen Bauchladen für IoT Anwendungen: Von den Geräten über Gateways und Anwendungen bis zu Big Data und Machine Learning. Dabei ist es möglich einfach zu starten und diese zu sehr komplexe Lösungen auszubauen. Die Anwendung kann also anhand der Anforderungen wachsen. Vom Betriebssystem des Gerätes bis zur fertigen Anwendung kann alles von Microsoft kommen. Die Nutzung von Open Source und alternativen Programmier-Sprachen und Betriebssystemen wird aber ebenfalls unterstützt, wie auch alle möglichen Mischformen. Die Komplexität, Integration und Wartung von IoT Szenarien sollte jedoch nicht unterschätzt werden, da es nicht nur darum geht entsprechende Anwendungen zu pflegen und zu erweitern, sondern weil auch die Geräte verwaltet werden müssen, welche die Daten liefern.