Internet der Dinge (IoT) – ein kleiner Einstieg
Dieser Artikel zeigt die einzelnen Schritte vom normalen Gebrauchsgegenstand zu einem «Smart Object» im Internet der Dinge inkl. Backend-Server auf.
Das «Internet der Dinge» oder Internet of Things (IoT) ist eine der interessantesten neuen Plattformen. Mit Hilfe der Cloud macht das IoT mit dem Backend-Server, der App zur Bedienung und bestehenden Fachapplikationen aus einfachen Gebrauchsgegenständen «Smart Objects», die unseren Alltag vereinfachen können.
Dieser Artikel zeigt die einzelnen Schritte vom normalen Gebrauchsgegenstand zu einem «Smart Object» im Internet der Dinge inkl. Backend-Server auf.
Das Smart Object
Schauen wir uns zuerst an, was es braucht, um aus einem Gebrauchsgegenstand ein Smart Object zu machen:
- Intelligenz: einen Mikroprozessor
- Sensor und Aktor: Die Möglichkeit, die Umwelt wahrzunehmen (z.B. mittels Helligkeitssensor, Temperaturfühler) und Einfluss darauf zu nehmen (z.B. Motor)
- Internet-Anschluss: Ethernet, WLAN etc.
Sensoren und Treiber für Aktoren gibt es als vorgefertigte Hardware-Module. Bei der Verwendung von Mikroprozessoren greift man am besten auf vorgefertigte Entwicklerboards zurück. Ich verwende am liebsten das K64F Board von Freescale, das über einen Ethernet-Anschluss verfügt und einfach ins Internet eingebunden werden kann.
Die Programmierung erfolgt in der Cloud mittels C/C++. Als Pendant zu den Hardware-Modulen existieren auch hier vorgefertigte C++ Objekte. AnalogIn steuert das Lesen eines analogen Sensors, DigitalOut lenkt die Ansteuerung eines Aktors.
So wird die LED-Leuchte smart
Als Beispiel für ein Smart Object möchte ich in diesem Beitrag aufzeigen, wie eine LED-Leuchte mittels Helligkeitssensor die Umwelt wahrnehmen kann, darauf reagiert und mittels App das ein- und ausschalten auch manuell vorgenommen werden kann.
Als Erstes muss der Helligkeitssensor ausgewertet werden, damit sich die Leuchte bei Einbruch der Dunkelheit einschaltet:
Im obigen Beispiel haben wir jetzt zwar ein Smart Object, das die Umwelt wahrnimmt und darauf reagieren kann. Was noch fehlt, ist die Verbindung zum Internet. Auch ist der programmierte Wert zum Einschalten der LED fix (0.8 oder weniger als 80% Helligkeit) und somit nicht sehr flexibel.
Mittels Verwendung von vorgefertigten RPC-Klassen können wir das einfach ändern und so unsere Schaltung zu einem echten Smart Object erweitern.
Beispiel (gekürzt):
Das Ergebnis ist ein echtes Smart Object, das z.B. via Browser, «curl», Java etc. gesteuert werden kann. Soll der Wert zum Einschalten der LED geändert werden, kann dies nun ohne Änderung des Smart-Objects-Programms erfolgen.
Beispiel Linux Shellscript mit curl:
Was uns jetzt noch fehlt, ist der Backend-Server, um unser Smart Object zu verwalten und die Daten (z.B. wie lange hat die LED pro Tag geleuchtet hat) auszuwerten sowie eine App, um das Smart Object zu steuern.
In unserem Beispiel nehmen wir den Eclipse Smart Home Server von den Java IoT Services & Frameworks aus dem Eclipse-IoT-Projekt. Zusätzlich zum Backend-Server beinhaltet Eclipse Smart Home auch eine App, die wir 1:1 für die Steuerung des Smart Objects verwenden können. Damit haben wir nun alle benötigten Bauteile zusammen.
Die Anbindung an Eclipse Smart Home erfolgt mittels einer XML Definition für die Sensoren und Aktoren.
Beispiel (vereinfacht):
Im zweiten Schritt brauchen wir eine Reihe von Java-Klassen, die das sogenannte «Binding» implementieren. Die wichtigste Klasse ist von BaseBridgeHandler abgeleitet und implementiert die Methode handleCommand, die die Verbindung zum Smart Object herstellt.
Beispiel handleCommand zum Abfragen von Sensoren:
Beispiel handleCommand zum Reagieren auf User Interface Aktionen und Ansteuerung der Aktoren:
Die benötigten User-Interface-Objekte für den Browser und die App, eine REST-Schnittstelle zur Integration der Smart Objects in eigene Applikationen, wurde automatisch anhand der XML-Konfiguration erzeugt und benötigt keine weiteren Aktionen. Somit lässt sich die LED-Leuchte auch via App steuern.
Fazit
Dieses Beispiel zeigt auf, dass mit der passenden Hardware und den nötigen Programmierkenntnissen einfache Gebrauchsgegenstände in smarte Objekte umgewandelt werden, die teil des Internet der Dinge sind. Diese Möglichkeiten nutzen nicht nur Technologiebegeisterte, sondern auch grosse Elektronikkonzerne.