Suchen

Qt und RESTful – Eine Software-Infrastruktur für das Internet der Dinge

Seite: 2/2

Firmen zum Thema

Obwohl die zentralen REST-Mechanismen in HTTP flexibel sind, arbeiten sie auf unterer Ebene. Ein Entwicklungsumgebung wie Qt kann diese Details auf unterer Ebene durch Komfortklassen abstrahieren und High-Level-objektorientierte Klassen für andere Teile der Anwendung bereitstellen.

Da Qt C++-basiert ist, lässt sich der Embedded-Code auf unterer Ebene, etwa für Hardware-Verbindungen, in die gleiche Software integrieren, ohne dabei Teile des Codes isolieren zu müssen. Mit der Kombination aus REST und Qt-Klassen haben IoT-Einrichtungen die Möglichkeit, nicht nur Daten zu empfangen und sich Befehle zuzusenden, sondern auch mit Servern in der Cloud zu kommunizieren und ihre lokale Hardware-Peripherie zu integrieren.

Bildergalerie

Die Cloud-Dienste müssen nicht für jede Anwendung von Grund auf neu entwickelt werden. Durch Cloud Services steht Qt-Entwicklern ein Angebot an Cloud-Funktionen auf Basis der RESTful-APIs und eine umfassende Cloud-API für den direkten Einsatz seitens Qt-Kunden zur Verfügung. Zu diesen Diensten zählen der Enginio Data Storage Service, Managed WebSockets für Verbindungen in Echtzeit und Managed Runtimes zur Übergabe von Teilen der Implementierung oder Berechnung – geschrieben mit herkömmlichen serverseitigen Technologien oder direkt über Qt-APIs – auf die skalierbare Serverseite. Vor allem für Systeme, die große Datenmengen sammeln und analysieren, hilft eine skalierbare serverseitige Berechnung dabei, die eingesetzten Embedded-Einrichtungen vernünftig zu betreiben.

Verschiedene Zielplattformen unterstützen

Neben dem zentralen IoT-Software-Stack muss der Entwickler auch langfristigen Support, Wartung, Upgrades und Verbesserungen berücksichtigen. Mit jeder Weiterentwicklung müssen IoT-basierte Systeme imstande sein, neue Hardware zu integrieren, die nahtlos mit den bestehenden Geräten zusammenarbeitet. Entwickler von Embedded-Systemen stehen dann vor dem Problem, dass verschiedene Implementierungsziele erfüllt werden müssen. Erforderlich wird damit eine Entwicklungsumgebung, die eine Software-Implementierung auf verschiedenen Zielanwendungen ermöglicht, die unterschiedliche Funktionen bieten – und das mit einer minimalen Anzahl erforderlicher Änderungen des Quellcodes.

IoT-Systeme erfordern nicht nur die Entwicklung von untereinander vernetzten Embedded-Einrichtungen, sondern auch die Bereitstellung von Client-Anwendungen, um mit diesen Einrichtungen und deren Daten zu interagieren. Heute gibt es zahlreiche Zielplattformen: Web-Dienste über den Browser, jede Art von Android-, iOS- oder Windows-Smartphones oder Tablets und Desktop-PCs. Mit einer übergreifenden Plattformtechnologie wird die Mehrzahl derzeitiger und zukünftiger Plattformen abgedeckt.

Code, der mit dem Qt-Framework geschrieben wurde, läuft auf einer Vielzahl von Betriebssystemen – von Plattformen für Anwendungen auf Echtzeit-Betriebssystemen über Embedded Linux bis hin zu Desktop-PCs und Mobilgeräten. Damit lässt sich eine gemeinsame Betriebslogik für Sensorknoten und Mobilgeräte einsetzen, die grafikintensive Software wie Android verwendet.

Qt bietet einen hohen Grad an Portierbarkeit durch seine Klassen und Tools, genauso wie die UI-(User-Interface-)Ansätze. Mit einer Auswahl an Grafikansätzen können Entwickler die Portierbarkeit maximieren, aber immer noch die Feineinstellung der Anwendung für jedes Zielgerät beibehalten. So können ein Wearable-Funksensor und ein Display einfache Grafik auf Basis statischer Symbole und Zeichen verwenden. Die gleiche Displayfunktion für eine Android-App kann alle Vorteile der Animation und Multi-Touch-Funktion nutzen.

Zu den GUI-Entwicklungsoptionen innerhalb von Qt zählen Qt Quick und Qt Widgets, die vor allem für relativ statische Schnittstellen optimiert sind. Sie eignen sich für Geräte mit beschränkter Verarbeitungsleistung und einfachen, kleineren Displays. Qt Quick bietet die Markup-Sprache QML, die einen deklarativen High-Level-Ansatz für das UI-Design bereitstellt, der von UI-Designern und Entwicklern zusammen verwendet werden kann. Qt Quick unterstützt moderne Rapid-Prototyping-Prozesse zum Erstellen interaktiver touch-basierter Benutzeroberflächen. Zur Integration von HTML5 in die Bedienoberfläche bietet Qt eine Chromium-basierte Engine, genannt Qt WebEngine.

Für eine Anwendung, die auf mehreren Zielplattformen eingesetzt werden kann – ob nun Embedded, Mobil oder Desktop – kann der Betriebslogik-Code, der Qt nutzt, für alle Anwendungen bis zu 80 Prozent übereinstimmen. Mit den Funktionen von Qt Quick wird die Bedienoberfläche über verschiedene Zielplattformen skalierbar. Sind separate UI-Layouts gewünscht, helfen eine gemeinsame GUI-Ebene oder gemeinsame Komponenten und Designs mit kleinen, separaten Layout-Dateien, die Code-Wiederverwendung zu maximieren. Selbst wenn verschiedene Zielanwendungen vorliegen, ist nur eine kleine Änderung zwischen den GUIs erforderlich – und das alles innerhalb einer einzigen Technologie. Es müssen keine verschiedenen Teams für jede Zielplattform beschäftigt werden.

Fazit: Embedded-Prototyping einfach gemacht

Um Rapid Prototyping auf einem echten Embedded-System vorzunehmen, damit sich Formfaktoren und Systemoptionen ausprobieren lassen, können Entwickler den „Boot to Qt“ Software-Stack nutzen, der in Qt Enterprise Embedded integriert ist. Dabei handelt es sich um einen vorkonfigurierten Software-Stack für eine Embedded-Hardware-Plattform – entweder auf Embedded Android oder Embedded Linux. Mit dem Stack und der vorkonfigurierten Qt Creator IDE (integrierte Entwicklungsumgebung) lässt sich eine Qt-Anwendung sofort in der gewünschten Hardware für das Rapid Prototyping umsetzen. Der in der Regel langwierige Code-Compile-Deploy-Zyklus wird auf wenige Klicks verkürzt.

Für das Rapid Prototyping von Embedded-Systemen benötigen Entwickler ein frühes Feedback von den Endkunden. Dazu dienen Usability-Tests des Projektkunden, um die Entwicklung in die richtige Richtung zu lenken. Dieser Prozess macht auch die Anforderungen für die Hardware ausfindig, damit die letztendliche Hardwareentscheidung nach anfänglichen Durchläufen erfolgen kann und genau den Wünschen entspricht. Der „Boot to Qt“-Software-Stack lässt sich dann für die endgültige Hardware und gewünschten Middleware-Inhalte anpassen. Dies erfolgt über entsprechende Tools oder für Embedded Linux über die proprietären Rezepte für Yocto-Projekt-Tooling. Der übergeordnete, eigentliche Anwendungscode bleibt genau der gleiche.

Durch die vielen Möglichkeiten der Cross-Plattform-Entwicklung, die Qt bietet, lassen sich IoT-Systeme mit Embedded- und Cloud-vernetzten Systemen sowie entfernten Client-Anwendungen umsetzen – ohne dabei für das gesamte Portfolio verschiedene Technologien verwalten zu müssen. Mit einer flexiblen Plugin-basierten Architektur – sowohl für lokale Software als auch das Networking – lassen sich neue Systeme mit beliebigen Diensten hinzufügen, ohne dabei andere Teile des Systems verändern zu müssen.

Qt’s Portierbarkeit und Flexibilität ermöglicht es, vorhandene Software auf aktualisierte Hardware zu migrieren, sobald diese zur Verfügung steht. Damit wird sichergestellt, dass eine IoT-Implementierung wettbewerbsfähig bleibt.

Bei der Arbeit auf einer höheren Abstraktionsebene mit einer erweiterbaren Architektur können sich Unternehmen auf die Bereiche des IoT konzentrieren, mit denen sich eine Differenzierung ergibt, anstatt sich mit Details auf unterer Ebene und dem IoT-Protokoll beschäftigen zu müssen.

* Tuukka Ahoniemi ist Technical Product Marketing Manager bei der Qt Company.

Artikelfiles und Artikellinks

(ID:43805178)