Schwerpunkte

Mit Mozilla Open Framework

IoT-Gateway auf Raspberry-Pi-Basis

18. Oktober 2018, 11:00 Uhr   |  Von Rich Miron

IoT-Gateway auf Raspberry-Pi-Basis
© mattcabb | Shutterstock

Gateways sind die Schaltstellen zwischen IoT-Geräten und dem Netzwerk. Mit Open-Source-Software, Mozilla und einem Raspberry Pi lässt sich in kurzer Zeit ein Gateway entwickeln, das mit allen W3C-Standards konform ist.

Gateway-Geräte schlagen die Brücke zwischen Cloud-Diensten und IoT-Endgeräten. Sie beschleunigen damit die Verarbeitung, reduzieren die Latenz und sorgen für hohe Verfügbarkeit. Entwickler, die ein Gateway-Gerät entwickeln, sehen Sie sich jedoch schon bald mit einer verwirrenden Vielfalt an Optionen für Hard- und Software konfrontiert, die für die Anbindung der verschiedenen IoT-Peri­pheriegeräte an die Cloud benötigt wird. Mit einem Raspberry Pi und Open-Source-Software von Mozilla lässt sich jetzt jedoch kostengünstig ein Gateway implementieren, das auf bestehenden und kommenden IoT-Standards basiert.

Wer bin ich? Was kann ich?

Im Web machen es Standardprotokolle möglich, dass Benutzer mit unterschiedlichen Browsern die Verbindung zu vielen verschiedenen Servern herstellen können – trotz großer Unterschiede in der zugrunde liegenden Hardware und Software der Browser- und Serverplattformen. Das IoT baut auf vielen dieser Standardprotokolle auf, birgt jedoch deutlich größere Herausforderungen, was die Interoperabilität angeht, die auch in Zukunft die treibende Kraft für das Web sein wird. Webbrowser bedienen sich der Request-Header, um sich selbst und ihre Fähigkeiten auszuweisen – analog dazu benötigen auch IoT-Geräte Standardkonzepte für die Ausweisung ihres Funktionsumfangs und der Art der von ihnen gelieferten Daten.

In einer typischen mehrschichtigen IoT-Architektur können Anzahl und Typ der Dinge jedoch überwältigend groß sein, vor allem auf der untersten Schicht, wo Sensoren und Aktoren angeschlossen werden. Als bevorzugte Lösung für die Verbindung haben sich Gateway-Geräte durchgesetzt. Mit ihrer Fähigkeit, mehrere drahtgebundene und draht­lose Verbindungen zu unterstützen, kommt Gateways in IoT-Systemen eine Schlüsselaufgabe zu.

Die Aufgaben von Gateways

In ihrer einfachsten Rolle puffern Gateways die Kommunikation zwischen Cloud-Verbindungen mit hohem Durchsatz und Hunderten oder Tausenden von IoT-Peripheriegeräten, die Datenströme mit Raten erzeugen, die zwischen den einzelnen Geräten und der Cloud um mehrere Größenordnungen variieren können. Gehen Verbindungen zur Cloud verloren, kann das Gateway den IoT-Geräten lokale Versionen der Dienste bereitstellen. Dasselbe gilt umgekehrt: Wenn ein IoT-Gerät aus irgendeinem Grund offline geht, kann das Gateway der Cloud ein virtuelles IoT-Gerät bereitstellen, das die Grundfunktionen sowie den letzten bekannten Status des entsprechenden physischen IoT-Geräts emuliert. In beiden Fällen kann die IoT-Anwendung der höheren Ebene trotz der Verbindungsunterbrechung normal weiterlaufen.

Kommerzielle IoT-Plattformen wie Amazon Web Services (AWS) IoT nutzen Internetstandards der niedrigen Ebene, um die einzelnen Schichten einer IoT-Anwendung zu unterstützen – müssen aber aufgrund fehlender IoT-spezifischer Standards eigene Lösungen be
© Quelle: Amazon Web Services

Bild 1. Kommerzielle IoT-Plattformen wie Amazon Web Services (AWS) IoT nutzen Internetstandards der niedrigen Ebene, um die einzelnen Schichten einer IoT-Anwendung zu unterstützen – müssen aber aufgrund fehlender IoT-spezifischer Standards eigene Lösungen bereitstellen.

Weil sie in der Regel nicht den Echtzeit- und Leistungsbeschränkungen von IoT-Peripheriegeräten unterliegen, können IoT-Edge-Geräte die Vorteile von leistungsstarken Prozessorarchitekturen nutzen, um nahe an der Quelle der IoT-Daten eine hohe Verarbeitungsleistung zu bieten. IoT-Spezialisten machen sich diese lokale Verarbeitungsleistung zunutze, indem sie komplexere Cloud-Dienste und sogar hochentwickelte Maschinenlernalgorithmen von diesen Geräten verarbeiten lassen. Das sorgt bei lokalen Prozessen für kürzere Reaktionsschleifen und verringert die Datenmengen, die in Richtung der Cloud-Anwendung fließen.

Kommerzielle IoT-Plattformen wie Amazon Web Services IoT, IBM Watson IoT und Microsoft Azure IoT bieten in ihren Komplett-Serviceangeboten ihre eigenen proprietären Schnittstellen (Bild 1). Aus vielerlei Gründen – wie etwa der Sorge um die Abhängigkeit von einem Anbieter oder aufgrund komplexerer Anforderungen – suchen IoT-Anwendungsentwickler jedoch weiterhin nach Lösungen für die vereinfachte Nutzung einer größeren Vielfalt an IoT-Geräten und -Diensten. Führend bei der Formulierung von IoT-Standards ist das World Wide Web Consortium (W3C), auch wenn es noch andere gibt, die an der Definition der Elemente einer Standard-IoT-Architektur arbeiten. In seinen eigenen entstehenden Spezi­fikationen definiert das W3C Web of Things (WoT) einige Schlüsselschnittstellen, die es einzelnen Geräten ermöglichen, mit einem Gateway, Cloud-Server, Webclient oder sogar einem anderen IoT-Gerät zu kommunizieren (Bild 2).

Das W3C will die Interoperabilität im Web of Things über eine Reihe von Standardschnittstellen und Datenmodelle wie die Thing Description (Dreieck) realisieren, die Informationen für jedes Gerät enthält.
© Bildquelle: W3C

Bild 2. Das W3C will die Interoperabilität im Web of Things über eine Reihe von Standardschnittstellen und Datenmodelle wie die Thing Description (Dreieck) realisieren, die Informationen für jedes Gerät enthält.

Die Details der W3C-Architektur würden den Rahmen dieses Artikels sprengen, einige zentrale Definitionen sollen jedoch erwähnt werden. Ein Schlüsselelement ist das »Thing«, das ein physisches Gerät und seine Metadaten umfasst, bzw. die »Thing Description« – dargestellt durch die kleinen Dreiecke in Bild 2.

Über eine bloße Auflistung grund­legender Metadaten wie Name und Klartextbeschreibung hinaus kann die Thing Description die Anwendung mit bestimmten Features direkt unterstützen – dazu zählen die Typisierung von Daten, die Validierung und sogar spezifische Endpunkte, die andere Dinge aufrufen können, um diese Thing-spezifischen Funktionen auszuführen.

Unter Rückgriff auf standardmäßige Kommunikationsverfahren (»WoT Binding Templates» in Bild 2) müssen die verschiedenen Teilnehmer in einer IoT-Anwendung lediglich die Thing Description eines neuen Geräts oder Gateways »lesen«, um zu ermitteln, wie mit ihm und seinen Datenfähigkeiten gearbeitet werden kann. Mit seinen Datenmodell- und API-Definitionen bietet Mozilla den Entwicklern eines der ersten verfüg­baren Frameworks für die Entwicklung dieser Art von interoperablen Gateways.

Die Mozilla-Gateway-Spezifikation

Die Mozilla Gateway Thing Description nutzt zur Beschreibung eines Thing und seines Funktionsumfangs ein JSON-Standardformat.
© Quelle: Mozilla

Listing 1. Die Mozilla Gateway Thing Description nutzt zur Beschreibung eines Thing und seines Funktionsumfangs ein JSON-Standardformat.

Im Rahmen der W3C-WoT-Arbeit umfasst die Things-Gateway-Spezifikation von Mozilla ein Datenmodell für eine Thing Description und zugehörige Thing-Typen sowie einfache APIs für die Nutzung von WebSockets oder ein­fachen REST-Mechanismen. Die Thing Description von Mozilla spezifiziert grundlegende Metadaten wie Name, Typ und Beschreibung sowie Eigenschaften wie »ein« und »Pegel«, z. B.
für eine angeschlossene LED-Leuchte (Listing 1).

Andere Einträge in der Thing Description enthalten komplexere Objekte mit Handlungen wie beispielsweise dem Dimmen einer Leuchte. Durch Zugriff auf »fade« (Dimmen) in der Thing Description kann ein Gateway oder eine anderes Gerät den Einstiegspunkt zu einer Funktion finden, die auf der Basis von Eigenschaften wie Dimmstufe und -dauer den »fade«-Vorgang ausführen kann. Folglich bietet die Thing Description ein Standardkonzept für die Identifizierung eines IoT-Gerätes und die Ausführung der verschiedenen Aufgaben, für die es konstruiert wurde.

Unter Rückgriff auf den in der Thing Description spezifizierten Einstiegspunkt sowie die zugehörigen Eigenschaften kann der Entwickler per POST eine Fade-Anforderung schicken. Als Antwort erhält er eine 201-Antwort und einen JSON-Body zur Bestätigung
© Quelle: Mozilla

Listing 2. Unter Rückgriff auf den in der Thing Description spezifizierten Einstiegspunkt sowie die zugehörigen Eigenschaften kann der Entwickler per POST eine Fade-Anforderung schicken. Als Antwort erhält er eine 201-Antwort und einen JSON-Body zur Bestätigung der Eigenschaften und des Status der angeforderten Aktion.

Für die Interaktion mit einem Thing können Entwickler das bekannte REST-Webprotokoll zum Lesen (GET) oder Schreiben (PUT oder POST) von in der Thing Description definierten Thing-Eigenschaften nutzen. Die reguläre REST-Antwort liefert ihrerseits die mit einem Lesebefehl angeforderten Daten oder den Status des Schreibvorgangs.

Um eine LED im Verlauf einer Übergangsphase von zwei Sekunden auf 50 % der Helligkeit zu dimmen, schickt der Entwickler mit POST den entsprechenden JSON-Body an den zugehörigen Fade-Endpunkt. Als Antwort erhält er eine 201-Antwort und einen JSON-Body zur Bestätigung der Eigenschaften und des Status der vom Gerät angeforderten Aktion (Listing 2).

Auch wenn die Mozilla-Dokumen­tation eine detaillierte Beschreibung ihrer Datenmodelle und APIs bietet, müssen Entwickler nach wie vor die umfangreichen Softwarepakete ent­wickeln, die erforderlich sind, damit aus diesem theoretischen Rahmen ein funktionsfähiges Gateway wird. Glücklicherweise verzichtet Mozilla in einer vollständigen Implementierung speziell für die Raspberry-Pi-Familie auf die theoretischen Aspekte ihrer Spezifikation.

Seite 1 von 2

1. IoT-Gateway auf Raspberry-Pi-Basis
2. Gateway-Plattform Raspberry Pi

Auf Facebook teilen Auf Twitter teilen Auf Linkedin teilen Via Mail teilen

Das könnte Sie auch interessieren

Verwandte Artikel

Digi-Key Corporation