Geschichte, Technologie, Risiken

Vom Internet der Dinge zu Apps für Dinge

Leiter der Forschungsgruppe Internet of Things & Services bei Fortiss
Obwohl der Begriff bereits 15 Jahre alt ist, befindet sich das Internet der Dinge aktuell noch in Entwicklung. So wird es in Zukunft etwa möglich sein, Software wie Apps auf verschiedene Geräte zu laden. Damit drohen aber auch ähnliche Probleme wie bei Apps auf Smartphones und Tablets - nur mit potenziell gravierenderen Folgen.
Der Begriff Internet der Dinge ist bereits 15 Jahre alt, das Thema sogar deutlich älter.
Der Begriff Internet der Dinge ist bereits 15 Jahre alt, das Thema sogar deutlich älter.
Foto: nopporn, Shutterstock.com

Das Schlagwort Internet der Dinge ist zurzeit in aller Munde. Es beschreibt die Vernetzung von Gegenständen jeder Art, in verschiedenen Anwendungsbereichen, über Internet-Protokolle. Die Anwendungsbereiche erstrecken sich von vernetzten Hausgeräten oder Gadgets über öffentliche Infrastruktur bis hin zu industriellen Anwendungen.

Dabei wurde die Vision des Internets der Dinge schon früh, nämlich 1999, vom Technologie-Pionier Kevin Ashton vom MIT geprägt, damals jedoch mit dem Fokus auf Dinge, die mit RFID-Tags ausgestattet sind. Über diese ursprünglich rein passiven Tags kann ein virtuelles Abbild dieser Objekte im Internet realisiert werden.

Heute wird der Begriff des Internet der Dinge viel breiter verwendet, und passive Objekte sind nur ein Teil dieser Vision, die aktuell viel stärker über die Vernetzung und Digitalisierung von alltäglichen Gegenständen geprägt ist. In den letzten 10 Jahren war zudem ein enormer Fortschritt in Hinblick auf energieeffiziente und kostengünstige Vernetzung sowie Betriebssysteme für das Internet der Dinge zu verzeichnen.

Vernetzung im Internet der Dinge

Während in der frühen Ausprägung des Internets der Dinge lediglich passive RFID-Tags verwendet wurden, ist durch mehrere aktuelle Standards die Verwendung von Internet-Protokollen für das Internet der Dinge möglich geworden. Dies begründet auch den Begriff Internet der Dinge im engeren Sinne. Konkret handelt es sich um mehrere Standards der IEEE und der IETF (Internet Engineering Task Force).

Die Standards für das Internet der Dinge
Die Standards für das Internet der Dinge
Foto: Fortiss

Zum einen wurden schon 2004 der Standard IEEE 802.15.4 für Funkverbindungen mit niedriger Datenrate (10 bis 250 Kbit/s) und hoher Energieeffizienz verabschiedet. Dieser Standard deckt die Anforderungen für viele Anwendungen gut ab, auch wenn es für spezielle Bereiche weitere Alternativen und gibt. Eine interessante Neuentwicklungen ist zum Beispiel Bluetooth 4.0 Low Energy, was auch in vielen Mobilgeräten unterstützt wird.

Auf der Ebene der Protokolle ist es durch die aktuellen Standards der IETF, vor allem 6LowPAN und CoAP möglich geworden, Internet-Protokolle mit IPv6 und HTTP auch auf sehr eingeschränkten Geräten zu implementieren. Während andere proprietäre Standards auf neue Protokolle setzten, wurde hier gezeigt, dass IPv6 derartig optimiert werden kann, dass es auch über Netze mit IEEE 802.15.4 eingesetzt werden kann, auch wenn diese z.B. nur eine Nutzlast von 127 Bytes in jedem gesendeten Datenblock (Frames auf ISO/OSI Schicht 2) zulassen.

Ebenso wurden mit dem CoAP-Protokoll eine vereinfachte Version des HTTP-Protokolls entworfen, die es ermöglich mit den üblichen Konzepten von HTTP wie im Web auf Ressourcen zuzugreifen. Speziell können hiermit APIs nach den sogenannte REST-Prinzipien auch für eingeschränkte Systeme erfolgen.

Mit REST-APIs werden Ressourcen als URIs beschrieben, zum Beispiel ein Sensor für Temperatur, auf die dann über standardisierte HTTP-Methoden wie GET, PUT und POST zugegriffen werden kann. Auch wenn für CoAP und 6LowPAN eine Umsetzung der Protokolle nötig ist, kann ist dies einfach und erhält die Ende-zu-Ende-Semantik von Nachrichten und Anwendungen. Der wesentliche Vorteil ist nun, dass bekannte und bewährte Konzepte eingesetzt werden können, was für die Entwicklung von Diensten von wesentlichem Vorteil ist.

Zum Beispiel kann ein Temperatursensor über die URL myhome.de/home/zimmer1/sensor1 addressiert werden. Mit CoAP kann dann über GET CoAP ://myhome.de/home/zimmer1/sensor1 beispielsweise der aktuelle Wert abgerufen werden. Daneben können Ressourcen über CoAP gefunden werden ("discovery"), oder auch Werte für Aktuatoren gesetzt werden, wie zum Beispiel Lichtschalter.

Betriebssysteme und Softwareplattformen

Neben den oben betrachteten Netzwerkthemen haben sich auch in den letzten Jahren einige neue Betriebssysteme und Softwareentwicklungsumgebungen sehr prominent entwickelt. Ein wichtiges Prinzip ist hier die reaktive Programmierung, die speziell hierfür optimierten Betriebssystemen umgesetzt wurde. Reaktive Systeme basieren auf dem Prinzip, dass ein System nur dann aus einem Schlaf- oder Ruhemodus erwacht, wenn Daten zu verarbeiten sind. Beispielsweise wenn Daten aus dem Netz eintreffen, oder wenn eine zeitgesteuerte Aufgabe ansteht, etwa um einen Sensorwert zu lesen und über das Netz zu verteilen.

Dies bedeutet dann auch eine im Wesentlichen Ereignis-gesteuerte Programmierung, was in TinyOS und auch in anderen Systemen wie Contiki umgesetzt wurde und sehr energieeffiziente Systeme ermöglich. Sensor- und Aktuatorsysteme mit Batterielaufzeiten von mehreren Jahre sind hier möglich. Neben Contiki und TinyOS, die seit über 10 Jahre weiterentwickelt werden und aus Forschungsprojekten in den kommerziellen Einsatz gekommen sind, gibt es auch neue Systeme, wie zum Beispiel Riot, das eine bessere Kompatibilität mit Posix/Linux Betriebssystemen bietet.

Neben diesen hochoptimierten Betriebssystemen sind auch einige populäre Systeme entstanden, die sich auf einfache Programmierung von Animationen, Grafik und einfachen Steuerungsaufgaben fokussiert haben. Ein sehr bekannter Vertreter ist hier Arduino, das auch eine einfache Programmiersprache anbietet. Im Gegensatz zu den obigen Systemen wird hier aber weniger Wert auf nebenläufige Prozesse (oder Threads) legen, wie sie typischerweise in komplexen reaktiven Systemen verwendet werden. In Arduino werden Threads nur über zusätzliche Bibliotheken unterstützt, für die es verschiedenen Varianten gibt.

Herausforderungen und Risiken

Die oben beschriebenen Technologien ermöglichen die schnelle Entwicklung von energieeffizienten, kostengünstigen Systemen für das Internet der Dinge, was zu dem enormen Interesse in den letzten Jahren beigetragen hat. Für den Einsatz dieser Technologien in den vielfältigen Anwendungsszenarien ergeben sich jedoch eine Reihe von neuen Herausforderungen: Viele Anwendungsbereiche haben sehr spezifische Anforderungen, wie zum Beispiel Reichweite oder Zuverlässigkeit von Funkverbindungen, auf die wir hier nicht im Detail eingehen können. Es lassen sich jedoch aus Sicht der Systementwicklung eine Reihe von übergreifenden Themen identifizieren.

Eine wesentliche Herausforderung ist die Geräte- und Plattformunabhängige Entwicklung von Applikationen für das Internet der Dinge. Viele Betriebssysteme, Hardware-Plattformen, Sensoren/Aktuatoren und deren APIs erzeugen eine enorme Heterogenität und erschweren die Entwicklung von Software für eine breite Palette von Produkten. Ein Ansatz hier ist der Einsatz von virtuellen Ausführungsumgebungen, wie zum Beispiel Java, das auch in einer hochoptimierten Form für das IoT von IBM als Beta-Version angeboten wird, und eine homogenere Entwicklung für verschiedene Plattformen anbietet. Ein weiterer, wichtiger Ansatz ist die modellbasierte Entwicklung. Diese ermöglicht es, aus Plattform-unabhängigen Systemmodellen effizienten Code für spezifische Umgebungen zu generieren.

Ein weiteres Problem ist die Sicherheit von Applikationen und Systemen. In Zukunft werden wir auch für das Internet der Dinge die Möglichkeit erhalten, Software wie Apps auf Geräte zu laden. Hier entstehen dann Probleme ähnlich wie für Apps auf mobilen Geräten - nur dass die Geräte im Internet der Dinge auch Steuerungsaufgaben übernehmen können, und somit wesentlich höhere Anforderungen entstehen. Dies umfasst sowohl externe Sicherheitsangriffe als auch schadhafte Apps, die wie ein Virus agieren.

Wenn also beispielsweise in Zukunft eine neue App für einen Mikrowellenofen installiert wird, die ein bestimmtes Gericht automatisch zubereitet, dann darf diese App keinen Schaden anrichten können. Hierfür sind neue Techniken nötig, um diese funktionale Sicherheit von solchen Systemen sicherzustellen. Ein Ansatz der Forschung bei Fortiss ist es, hier modellbasierte Entwicklung einzusetzen und neue Apps auf der Ebene von Modellen zu überprüfen. Weitere, wichtige Herausforderungen sind die Selbstorganisation und die Selbstkonfiguration von verteilten Geräten im Internet der Dinge, wenn mehrere Geräte vernetzt werden sollen.

Zusammenfassend lässt sich beobachten dass der enorme technische Fortschritt im Internet der Dinge zu breitem Interesse und vielen neuen Anwendungsszenarien geführt hat. Es sind jedoch für den breiten, kommerziellen Einsatz noch einige wichtige Herausforderungen zu beachten, wie vor allem funktionale Sicherheit und die sehr fragmentierten Entwicklungs- und Hardwareumgebungen. (mb)