Zum Hauptinhalt springen

In diesem Blogbeitrag zeigen wir Dir, wie man Maschinendaten mit einem Edge Device auslesen und diese anschließend in Azure visualisieren und zur weiteren Verarbeitung vorbereiten kann. 

Und zwar anhand eines Proof of Concept: Kern dessen ist ein Edge Device, das Daten via OPC-UA von einem Roboter abgreift und an IoT Central sendet. 

Das Edge Device fragt die Daten ab und sendet sie an IoT Central. Der Code dafür wird in VS Code entwickelt, als Docker Image in die Azure Container Registry hochgeladen und über IoT Central auf das Device deployt. Abschließend werden die Daten in den Azure Blob Storage exportiert. 

 

Vorbereitung – Hardware 

Auf dem Device installieren wir zunächst Ubuntu Server 18.04 und anschließend die IoT Edge Runtime, die als Laufzeitumgebung zur Ausführung von Code auf dem Edge Device mit Containern dient. Details dazu findest Du hier. Die Dokumentation zeigt zudem, wie man auf dem Gerät die Verbindung zu IoT Central hinterlegt.  

Vorbereitung – Software 

Als Nächstes richten wir die Development-Umgebung ein, in der wir den Code für das Edge Device entwickeln wollen. Dafür nutzen wir Visual Studio Code mit der Azure-IoT-Erweiterung. Nun erstellen wir eine neue IoT Solution in Python und entwickeln den Code, um die Daten von der Maschine auszulesen. 

 

Unsere IoT Edge Solution ist in zwei Module aufgeteilt: Das DataModule ist zuständig für das Auslesen der Daten, das UploadModule nimmt diese ausgelesenen Daten, filtert und formatiert sie und schickt sie an IoT Central. Für die Kommunikation zwischen den Modulen und mit IoT Central nutzen wir Routen: In der config.json wird hier definiert, welche Inputs und Outputs von welchem Modul wo landen. Hier die JSON-Konfiguration der Modulkommunikation: 

In unserem Fall geht der output1 vom DataModule in den input1 vom UploadModule. Der output1 wiederum geht vom UploadModule nach $upstream, was IoT Central ist. Auf die Inputs und Outputs können wir dann im Python-Code zugreifen, indem wir asynchron Nachrichten davon erhalten oder dorthin schicken. Der entsprechende Python-Code zum Auslesen und Verschicken von Nachrichten sieht so aus: 

Build vom Container Image und Deployment 

Wenn wir eine Version unseres Codes haben, die wir deployen wollen, erstellen wir mit der IoT-Erweiterung die Docker Images und laden sie in die Container Registry hoch.  

Die Erweiterung erstellt für uns außerdem eine Deployment-Datei. Diese enthält alle Informationen, die das Edge Device benötigt, um auf die neueste Version migriert werden zu können: Welche Module werden in welcher Version benötigt? Wie ist die Registry erreichbar, inkl. Credentials, Netzwerkkonfigurationen etc.? 

Auslesen und Visualisieren in IoT Central 

In IoT Central erstellen wir jetzt eine neue Gerätevorlage für „Azure IoT Edge“ und laden dafür die eben erstellte Deployment-Datei hoch. Damit erkennt IoT Central, welche Module wir deployen wollen. Wir müssen zudem noch die Details der Daten für das jeweilige Modul festlegen. In unserem Fall senden wir ein JSON, das auf der obersten Ebene aus vier Dictionaries besteht. Also legen wir zuerst vier Elemente vom Typ „Object“ an und darunter die jeweiligen Felder als Double, String, Boolean etc. 

Unter „Views“ können wir die gewünschte Visualisierung festlegen. Es stehen verschiedene Standardansichten zur Verfügung. Ziel ist es, einen schnellen Blick in die Daten der letzten Minuten oder Stunden zu gewinnen. Ein umfassendes Visualisierungs- oder Reportingtool ist IoT Central jedoch nicht. Für umfangreichere Reports sollte deshalb z. B. PowerBI genutzt werden. 

 

Ist die Vorlage fertig, können wir sie veröffentlichen und unser Gerät darauf migrieren. Das Vorgehen, um unser Gerät auf eine neue Version zu aktualisieren, ist ähnlich: Statt einer neuen Vorlage können wir eine neue Version der bestehenden erstellen. Sie wird veröffentlicht und das Gerät auf die neue Version migriert. Das Edge Device lädt automatisch die neue Version der Software herunter und startet die nötigen Module neu, ohne dass wir uns mit dem Gerät direkt verbinden müssen. Hier zeigt sich eine Stärke von IoT Central: Auch ohne direkten Zugriff auf die Geräte können wir eine größere Menge von Edge Devices updaten – die Geräte brauchen lediglich eine Verbindung zu IoT Central. 

  

In der Geräteübersicht sehen wir jetzt mehrere Tabs: 

  • View zeigt die Visualisierung der Daten an. 

  • Module zeigt, welche Module in welcher Version auf dem Gerät laufen. 

  • Rohdaten zeigt die unverarbeiteten Daten. 

 

Um die Daten auch langfristig speichern zu können, wählen wir im Menü den Punkt „Datenexport“ und konfigurieren hier einen Export der Telemetrie. So können wir die Daten für andere Zwecke weiterverwenden. 

Zusammenfassung 

Wir sind in der Lage, eigenen Code auf einem Device zu deployen, der Daten von einem Produktionsroboter abfragt, um diese in Azure zu visualisieren und zu speichern. Mögliche nächste Schritte wären die weitere Verarbeitung und Visualisierung der gesammelten Daten ebenfalls in Azure, was wir in Kürze auf unserem Blog betrachten werden.  

 

Azure bietet uns alle nötigen Tools, um IoT-Daten zu sammeln und zu verarbeiten. Wir können die Kombination aus eigener Programmierung in unseren Python-Modulen und einem vordefinierten Weg zum Deployment des Codes und der weiteren Verarbeitung der Daten in IoT Central nutzen. So sind wir flexibel, wo Flexibilität nötig ist, und müssen Dinge nicht neu entwickeln, wo ein standardisiertes Vorgehen möglich ist. 

 

 

 

Du willst Deine IoT-Daten in die Cloud bringen oder im nächsten Schritt mit Visualisierungen, Reportings und Predictive Maintenance einsteigen? Melde Dich bei uns und wir unterstützen Dich bei jedem Schritt Deiner Reise ins Internet of Things! 

Mach jetzt Deinen ersten Schritt!