10.11.2018

Siemens MindSphere V3.0

Erste Schritte mit der Cloud-Plattform.

Siemens MindSphere V3.0 blog image

Einleitung

Mit der offenen IoT Cloud-Plattform MindSphere bietet Siemens ein Betriebssystem für das Sammeln, Verarbeiten und Auswerten von Daten aus nahezu jedem Edge-Device.

Wer seine Geräte an die Plattform anbinden möchte, erhält mit der sogenannten MindConnect Library eine Sammlung von Funktionen, über die Daten mit MindSphere ausgetauscht werden können. Man hat die Möglichkeit, bestehende Apps und Services, wie z. B. ConditionMonitoring oder TimeSeries, zu nutzen oder eigene zu entwickeln, in MindSphere zu hosten und letztlich auch zu verkaufen. Über eine Vielzahl an APIs (Application Interfaces), auf die man mittels des vorhandenen Rechtemanagements komfortabel zugreifen kann, lassen sich die an MindSphere übertragenen Daten eines Kunden abrufen.

Für das Hosten eigener Apps und Services setzt MindSphere auf Cloud Foundry (Platform as a Service), die den Containergedanken verfolgt und daher mit Docker vergleichbar ist. Dadurch ist man bei der Wahl einer Technologie für die Implementierung flexibel und kann auf gängige Frameworks wie Node.js, .NET Core, Java usw. setzen.

Erste Schritte zur eigenen MindSphere App

Bevor man mit der Implementierung einer MindSphere App beginnt, sollte man sich mit der Developer Documentation vertraut machen. Auf der entsprechenden Website stellt Siemens Konzepte, HowTos, die API Dokumentation und viele weitere hilfreiche Informationen für den Einstieg zur Verfügung. Durch die Vielzahl an unterstützten Frameworks in MindSphere bzw. Cloud Foundry ist man bei der Wahl der Entwicklungsumgebung frei (wir arbeiten bevorzugt mit Visual Studio Code). Allerdings sind Kenntnisse im Bereich der Webentwicklung für die erfolgreiche Entwicklung einer eigenen App unabdingbar. Mit den APIs kommuniziert man über den Kommunikationsstandard REST (Representational State Transfer), für den es in nahezu jeder Programmiersprache bereits eine Implementierung gibt. Wenn man eine App in MindSphere bereit stellen will, benötigt man die Cloud Foundry CLI. Fragen, die nicht über die Dokumentation abgedeckt sind, können in der Community oder an den Support gestellt werden.

Wie bekommt man Zugang zur Plattform?

Wer seine Geräte an MindSphere anbinden, Daten senden und diese im Browser mit Hilfe verschiedener MindSphere Applikationen betrachten oder analysieren will, braucht den MindAccess IoT Value Plan für mindestens 3.600€/Jahr. Möchte man eigene Apps und Services entwickeln, benötigt man den MindAccess DevOps Plan, der in der kleinsten Stufe (S) 4.198€/Jahr kostet. Ein wenig teurer sind die Stufen M(edium) und L(arge), in denen beispielsweise mehr Benutzer angelegt werden können oder mehr Festplattenspeicher zur Verfügung steht. Mit dem DevOps Plan können eigene Apps und Services für MindSphere implementiert und in einer Testumgebung getestet werden. Soll eine App für die eigenen Kunden oder global für MindAccess IoT Value Plan-Abonnenten bereitgestellt werden, benötigt man zusätzlich den MindAccess Operator Plan für 5.998€/Jahr. Die Preismodelle und deren zugeordnete Leistungen sind in der Praxis frei erweiterbar. Einen Testzugang zu Evaluierungszwecken oder ein einfaches Hands-On gibt es jedoch leider nicht und ist laut MindSphere in naher Zukunft auch nicht zu erwarten.

Unsere erste Entwicklung einer MindSphere Web-App

Für einen Kunden entwickeln wir derzeit unsere erste MindSphere Web-App, die Daten von der Plattform bezieht und auf einem Dashboard strukturiert darstellt. Wir haben uns dabei für eine Architektur entschieden, die es dem Kunden ermöglicht, unabhängig von MindSphere zu bleiben: Zur Datenbereitstellung entwickeln wir mit Node.js eine Middleware, die ein Connector-Gateway besitzt, um die MindSphere-spezifischen Implementierungen zu kapseln und für eventuelle weitere Cloud-Plattformen offen zu bleiben (siehe Abbildung 1). Zudem arbeitet die Middleware wie eine Pipeline, das heißt, es gibt verschiedene Services, die je nach Anforderung kombiniert und nacheinander ausgeführt werden können.

Mindsphere App Aufbau
Abbildung 1: Zusammenspiel zwischen dem UI und der Middleware

Anwendungsbeispiel:

Es soll ein Aggregation Service bereitgestellt werden, der Daten über einen bestimmten Zeitraum aggregiert und unter anderem Mindest- und Höchstwerte ermittelt. In der Middleware gibt es den Data Collector Service und den Aggregate Data Service. Zuerst verwenden wir den Data Collector Service, um die Daten von einer oder mehreren Plattformen abzurufen und in eine einheitliche Form (definiertes Datenmodell) zu überführen. Diese Daten werden dann an den Aggregate Data Service übergeben, um aggregiert zu werden. Am Ende der Pipe werden die Daten dem Client über REST APIs bereitgestellt.

Data flow pipeline
Abbildung 2: Beispiel einer Data-Flow-Pipeline der Middleware

Das Web-App-UI wird mit VUE.js umgesetzt und kann somit auf jedem beliebigen Web-Server gehostet werden. Es bezieht die Daten losgelöst von MindSphere über die eigene Middleware. Wollte der Kunde irgendwann eine zusätzliche Cloud-Plattform in der Middleware anbinden, hätte das keinerlei Auswirkung auf die Web-App, die folglich nicht angepasst und neu bereitgestellt werden müsste.

Sowohl die Middleware als auch die Web-App werden in zwei separaten Komponenten (Cloud Foundry) in MindSphere bereitgestellt und verwaltet. Damit sind sie logisch voneinander getrennt, was uns maximale Flexibilität bei der Entwicklung, dem Testen und dem Deployment verschafft.

Welche technischen Einschränkungen erleben wir bei der Implementierung einer MindSphere App?

Als größte Einschränkung sehen wir derzeit das Fehlen einer API, die die zuletzt übermittelten Werte der Variablen eines Edge-Devices liefert. Über die IoT Time Series API lassen sich lediglich alle Wertänderungen in einem bestimmten Zeitraum abfragen. Bei MindSphere ist bereits ein Feature Request angelegt, da die fehlende Funktion vielfach benötigt wird. Ob und wann dieses Feature umgesetzt wird, ist allerdings nicht bekannt.

Des Weiteren erschließt sich uns bislang nicht, wie zwei MindSphere Komponenten in der Praxis miteinander kommunizieren können (z.B. HTTP POST/GET...), da MindSphere derartige CORS Aufrufe gegenwärtig blockiert. Laut MindSphere ist das Trennen von UI und Middleware in zwei Komponenten Best Practice, aber es gibt noch keine Anleitung, wie eine solche Konstellation konfiguriert werden muss. Auf Nachfrage beim Support konnten wir immerhin in Erfahrung bringen, dass eine entsprechende Anleitung in Kürze folgen soll.

Zudem verwundert uns die Tatsache, dass das einzig existierende MindSphere SDK in Java gehalten ist. Wir hätten mindestens ein JavaScript Node.js Paket erwartet. Wir haben leider keine Informationen darüber, ob ein solches für die Zukunft angedacht ist.

Fazit

In den inzwischen knapp neun Wochen, in denen wir uns mit MindSphere beschäftigen, haben wir bewusst lediglich einen Teil der Funktionen betrachtet und angewandt. Vielversprechende Services wie Trend Prediction oder KPI Calculation, die MindSphere direkt bereitstellt, haben wir noch nicht eingesetzt und können dazu entsprechend noch keine Erfahrungen teilen. Eines ist jedoch aufgefallen: Die APIs sind hoch performant. Die Antwortzeiten überzeugen und lassen keinen Raum für Kritik. Der Aggregation Service beispielsweise bereitet viele Berechnungen vor, sodass selbst bei komplexen Anfragen kaum eine signifikante Latenz messbar ist. Lediglich die Asset Management API zu Verwaltung der Assets und Aspects war während der letzten Wochen auffallend instabil und teilweise bis zu einer Stunde lang nicht erreichbar. Durch den zuverlässigen Support mit einer sehr kurzen Antwortzeit konnten diese Probleme jedoch schnell adressiert werden. Auch andere Fragen zur Implementierung ließen sich mithilfe des Supports schnell klären oder lösen.

Eines darf dabei nie vergessen werden: Siemens stellt mit MindSphere die Plattform zur Verfügung – die Entwicklung erfolgreicher Geschäftsmodelle, die den Entwicklungsaufwand von eigenen Apps nachhaltig finanziell rechtfertigen, obliegt aber den Unternehmern. Diese stehen vor der Herausforderung, anhand der über MindSphere gewonnenen Daten neue digitale Geschäftsideen zu kreieren, die den Mehrwert ihrer Produkte nachhaltig steigern. codeunity steht hier als Partner bei der Implementierung neuer Apps und Services oder komplexer Algorithmen als starkes Team bereit, um gemeinsam Lösungen im noch jungen IoT Umfeld zu schaffen.

In den Grafiken werden Icons von icons8.com verwendet.