Suchen

Frameworks

Eine Software-Infrastruktur für das Internet der Dinge

| Autor/ Redakteur: Tuukka Ahoniemi * / Franz Graser

Um Fallstricke bei der Integration von IoT-Systemen zu vermeiden, müssen diverse Front- und Backend-Techniken angewendet werden. Bereits bei Beginn des Designs ist das gesamte System zu betrachten.

Firmen zum Thema

Entwicklung und Design zusammenführen: Die Entwicklungsoption Qt Quick bietet eine QML-Markup-Sprache, die einen deklarativen High-Level-Ansatz für das UI-Design bereitstellt, der von UI-Designern und Entwicklern zusammen verwendet werden kann.
Entwicklung und Design zusammenführen: Die Entwicklungsoption Qt Quick bietet eine QML-Markup-Sprache, die einen deklarativen High-Level-Ansatz für das UI-Design bereitstellt, der von UI-Designern und Entwicklern zusammen verwendet werden kann.
(Bild: Qt Company)

Die Anwendungen und Neuerungen, die das IoT hervorbringt, sind beeindruckend, und die Technik zur Entwicklung solcher Systeme sowie deren Cloud-Backends sind bereits vorhanden. Aus der Sicht des Embedded-Software-Designs gestaltet sich die Entwicklung solcher Systeme jedoch immer komplexer, und die technischen Anforderungen steigen erheblich. Um Fallstricke bei der Integration zu vermeiden, müssen verschiedene Front- und Backend-Techniken angewendet und bereits bei Beginn des Designs das gesamte System berücksichtigt werden.

Eine völlig neue Welt durch Cloud-Datenanbindung

Wenn Geräte oder Einrichtungen nahtlos zusammenarbeiten, ermöglicht das IoT komplexe Dienste – von denen einige bei der Implementierung noch gar nicht in Betracht gezogen wurden –, indem vergleichsweise preiswerte und energieeffiziente Geräte zum Einsatz kommen. Hinzu kommt, dass sich jederzeit weitere Dienste aufrüsten lassen, ohne dabei die auf dem Gerät laufende Software zu stören. Dies ist insbesondere dann von Vorteil, wenn die verwendeten Technologien dynamische Softwareänderungen erlauben oder flexible externe APIs haben, die Plugin-basierte Designmuster verwenden, um eine einfache Erweiterung von Diensten zu ermöglichen.

Ergänzendes zum Thema
Die Qt-Wetterstation – ein Anwendungsbeispiel

Die Qt-Wetterstation ist eine einfache Proof-of-Concept-Implementierung eines IoT-Systems. Sie verfügt über einzelne Wetterstationen, die Embedded-Systeme mit funkbasierten Wettersensoren sind. Diese Stationen sind mit der Qt Cloud verbunden, von wo aus sie überall per Mobilfunk- oder Desktop-Client-Anwendung zugänglich sind.

Architektur eines einfachen Qt-basierten IoT-Systems: die Qt-Wetterstation. Die Code-Wiederverwendung wird maximiert; alle Plattformen nutzen den gleichen Qt GUI Code und die gleichen Qt-Cloud-APIs. Die Client-Anwendungen verwenden den gleichen Code auf allen Plattformen.
Architektur eines einfachen Qt-basierten IoT-Systems: die Qt-Wetterstation. Die Code-Wiederverwendung wird maximiert; alle Plattformen nutzen den gleichen Qt GUI Code und die gleichen Qt-Cloud-APIs. Die Client-Anwendungen verwenden den gleichen Code auf allen Plattformen.
( Bild: Qt Company )

Alle Teile der Qt-Wetterstation – das Embedded-System, Cloud-Backend und die Mobilfunk- bzw. Desktop-Cients – wurden ausschließlich mit Qt implementiert. Die Mobile- und Desktop-Clients teilen sich genau die gleiche Codebasis, und die Wetterstation nutzt das Client-seitige UI, genauso wie die UI für das Embedded-System.

Die Embedded-Wetterstation läuft auf einem Raspberry Pi Developer-Board oder auf dem Boundary Device SABRE LITE (Freescale i.MX 6) und nutzt den „Boot to Qt“ Embedded Linux Software-Stack, der sich bereits in Qt Enterprise Embedded befindet. Mit Qt wird die moderne Touch-Bedienschnittstelle nahtlos mit dem Lower-Level-Gerätetreiber-Code integriert, der mit den Funk-Wettersensoren über einen USB-fähigen Funkempfänger kommuniziert. Das System könnte auch ohne lokale Benutzerschnittstelle betrieben werden (Headless-Betrieb). Mit der Qt Cloud API lädt das Embedded-System die Sensordaten in den Enginio-Datenspeicher.

Die Client-Anwendung ist eine reguläre Qt-Anwendung, die nativ auf allen großen Mobil- und Desktop-Plattformen läuft. Mit der Qt Cloud API werden die Wettersensordaten von der Cloud erfasst und über die Qt Quick UI-Technik visualisiert.

Für Multi-Screen-Anwendungen wie diese ist es nicht unbedingt ideal, das gleiche UI-Layout für kleine oder große Bildschirme oder Hoch- und Querdarstellungen zu verwenden. Wir haben die Code-Wiederverwendung maximiert, indem genau die gleichen skalierbaren UI-Komponenten zum Einsatz kommen, lediglich die High-Level-Layout-Dateien unterscheiden sich für die verschiedenen Variationen. Damit müssen nur einige wenige separate Codezeilen für andere Layouts geschrieben werden.

Der Entwickler arbeitete mit einem UI-Designer zusammen. Mit der Qt Quick UI-Technologie war ein schnelles UI-Prototyping möglich, um verschiedene UI-Layouts auszuprobieren. Die Prototypen-UIs konnten vor Ort auf einer Desktop-Version von Qt erprobt werden, oder wurden direkt in das Embedded-System oder ein Mobilgerät mit der Qt Creator IDE integriert. Von Qt Creator aus kann man direkt zwischen den Zielplattformen hin und herschalten. Dabei wird automatisch die zugrundeliegende Cross-Kompilierungs-Toolkette geändert und über USB oder IP einem System zugewiesen.

Die Cloud-Server können als permanente, geräteunabhängige Speicher und Archive verwendet werden und Informationen über den Zustand jedes Geräts beinhalten. Im Unterhaltungsumfeld kann ein Anwender etwa auf einem Mobilgerät Musik hören und diese pausieren, um dann zuhause vor dem PC wieder dort fortzufahren, wo pausiert wurde. Durch die Cloud können Systeme Benachrichtigungen an Geräte senden, sowie Sensordaten empfangen, verarbeiten und für Statistikzwecke analysieren.

Da die Datenspeicherung und komplexe Datenanalyse im Cloud-Backend zentralisiert sind, kann die Kapazität der Rechenleistung dynamisch skaliert werden, ohne dabei die einzelnen angeschlossenen Geräte zu beeinträchtigen. Auch der zufällige Verlust der Verbindung zu einem Gerät macht für andere Teile des Systems keinen Unterschied. Die Forderung nach Verfügbarkeit besteht zwar weiter, allerdings nur für das Cloud-Backend. Um die Funktionalität eines einzelnen Geräts ohne Verbindung zum Backend zu gewährleisten sind demnach ein Offline- Speicher und ein logisches Offline-Verhalten erforderlich.

REST Assured: Funktionalität auf höchster Ebene

Obwohl das IoT-Konzept flexible, zukunftssichere, vernetzte Systeme ermöglicht, müssen bestimmte Herausforderungen bei der Entwicklung erfüllt werden. Die Architektur des Internet und World Wide Web ermöglicht es, bestimmte Aspekte des IoT-Designs zu vereinfachen. So bietet REST (Representational State Transfer), eine Architektur auf Basis einfacher HTTP-Protokollbefehle, mehr Flexibilität als herkömmliche Client-Server-Architekturen wie SOAP.

Bildergalerie

Eine RESTful-API ermöglicht es Clients und Servern in komplexer Weise zu interagieren, ohne dass der Client Details über mögliche Dienste kennen muss, bevor er mit dem Server verbunden wird. Dies spielt bei der Erweiterung des Systems um beliebige Geräte oder Dienstleistungen eine wichtige Rolle. Ein einfacher URI (Universal Resource Identifier) reicht aus, damit der Client den Server findet. Von hier aus führen der Server und der Client mittels HTTP-Befehlen eine Reihe von Verhandlungen und Datentransferschritten aus, die Informationen über die angebotenen Dienste enthalten, und wie auf sie zugegriffen werden kann.

Artikelfiles und Artikellinks

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de (ID: 43848358)