„Wenn die Kaffeemaschine ausfällt, muss der Blumentopf mit der Jalousie reden können“ – das Internet of Things und seine Herausforderungen

Erst war es der Kauf von Nest, dem führenden Hersteller für vernetzte Haustechnik, durch Google. Dann die Meldung, die internetfähige Zahnbürste komme noch diesen Sommer: 2014 ist das „Internet of Things“ regelmäßig in den Schlagzeilen. IT-Agent Thomas Fuhrmann hat bereits Anfang des Jahrtausends mit seiner Forschungsgruppe am Karlsruhe Institute of Technology und später dann an der TU München an der Entwicklung des „Internet of Things“ oder der „Ambient Intelligence“ gearbeitet. Ein Gespräch über denkende Blumentöpfe, sprechende Werbung und Wege, die NSA von der Kaffeemaschine ebenso fern zu halten, wie von sensiblen Firmendaten.

IMAGE © complize / photocase.com

Was steckt technisch gesehen hinter dem Buzzword „Internet of Things“?

Das Internet of Things ist quasi der nächste Schritt in der Entwicklung der Computer: In den 1950er Jahren waren das Riesenmaschinen, die ein ganzes Unternehmen mit Rechenleistung versorgten. In den 70ern kam der Personal Computer auf die Schreibtische, einer pro Person, vor allem für Textverarbeitung, Tabellenkalkulationen etc. Seit Ende der 90er folgten die sehr kleinen Größenordnungen, die Personal Digital Assistants (PDA), Vorgänger dessen, was heute im Smartphone eingebaut ist.

Und jetzt kommen die „Dinge“ ins Spiel?

Ja, die Computer werden so klein, so billig, dass ich sie in alle Sachen einbauen kann. Das Ganze erreicht eine völlig neue Ebene: Jetzt kann ich hunderte Computer für eine Person haben, Computer in meiner Umgebung. Das Problem ist, dass diese sehr weit weg sind von meiner persönlichen Wahrnehmung, denn es gibt keine Tastatur, keinen Touchscreen, …

So wie im Kühlschrank oder im Auto?

Ja, aber es geht noch weiter: Die meisten größeren Haushaltsgeräte haben längst Computer integriert, fast alle Waschmaschinen, mir wurde sogar vor Jahren schon ein Toaster mit Computer drin empfohlen. Auch das Projekt der intelligenten Zahnbürste ist schon ein paar Jahre alt. Der interessante Dreh ist, dass ich es plötzlich mit Anwendungen zu tun habe, die dem, was man sich früher unter einem Computer vorgestellt hat, kaum mehr ähneln. In erster Linie werden hier Daten gesammelt, von zigtausenden von kleinen Computern, die in einer Umgebung sind, sich miteinander vernetzten und dann schöne Dinge tun.

Welche schöne Dinge waren das in Deinem Forschungsprojekt zum Internet of Things?

Eines der ersten war der intelligente Blumentopf: Ein kleiner eingebauter Computer misst, wie feucht die Erde im Topf ist. Das Prinzip lässt sich beliebig fortsetzen und kombinieren. Die Idee hinter der „Ambient Intelligence“ ist, dass ich so viele kleine Computer in Alltagsgegenstände einbringe, dass ich mich in einer scheinbar intelligenten Umgebung befinde.

Wie sieht so eine intelligente Umgebung aus – für den Blumentopf zum Beispiel?

Der Blumentopf selbst soll „wissen“, welche Pflanze darin ist, wie es ihr zu jedem Zeitpunkt geht und was sie braucht. An einem sehr sonnigen Tag könnte der Topf einfach mal die Jalousien herunter lassen, wenn die Pflanze keine Hitze verträgt. Dafür muss die Pflanze mit einem Erkennungsmerkmal, etwa einem RFID-Chip versehen sein. Dann kann der Blumentopf oder mein Zimmer erkennen, welche Pflanze das ist und kann im Internet „nachschauen“, wie die Pflanze gepflegt werden muss. Man kann sich auch vorstellen, dass man über eine Kamera im Raum einem Bildvergleich macht und so herausfindet, welche Pflege sie braucht und so weiter.

An welcher Stelle sitzt dann das Ding, das handelt?

Ein solches Ding gibt es eben es gar nicht. Das was man hier salopp als Intelligenz oder Smartness bezeichnet, verteilt sich auf die gesamte Umgebung. Das ist wie bei einem Schwarm, der verhält sich intelligent oder er tut zumindest etwas, das insgesamt sinnvoll ist. Das ist aber völlig abstrahierbar von dem, was die einzelne Biene tut. “Ambient Intelligence“ funktioniert im Prinzip genauso. Ich kann nicht auf eine bestimmte Stelle deuten und sagen, hier ist die Entscheidung getroffen worden, sondern alles zusammen wirkt einfach.

In Deinem Forschungsprojekt ging es weniger um das Gestalten einer intelligenten Umgebung, als darum, wie man diese programmieren kann, oder?

Wir haben uns konkret Gedanken über die Beschaffenheit der kleinen Computer im Blumentopf oder etwa im Bürostuhl gemacht, die dann zusammenwirken. Die Fragestellung dahinter ist: Wie schreibt man Computerprogramme, die nicht auf einem Computer verortet sind, sondern die sich in einer Umgebung eine große Zahl von Computern suchen müssen. Ich gehe also nicht hin und lade ein Programm vom Computer auf den Blumentopf, nein, die App ist irgendwo zwischen Blumentopf und Jalousie und funktioniert ohne konkreten Punkt.

Welchen Weg habt ihr gefunden?

Wir sind von der Idee der Java Virtual Machine (JVM) ausgegangen und haben dann eine JVM so gebaut, dass sie auf winzigen Maschinen läuft – 8-Bit-Prozessoren mit ein paar Kilobyte RAM – also winzig. Das Programm konnte von dort aus auch weiterwandern.

Was heißt das für die Programmierer?

Das war die spannende Frage: Wie schaffe ich es, dem Programmierer die Illusion zu geben, dass er etwas vor sich hat, was er programmieren kann, wo es hier doch in Wirklichkeit gar nicht diese eine Maschine gibt. Normalerweise funktioniert ein Programm ja so, dass ich Objekte im Speicher einer einzelnen Maschine habe und aufgrund der Befehle, die mit diesen Objekten verknüpft sind, passieren dann irgendwelche Dinge.

Okay – und jetzt gibt es aber den Ort für einen solchen Speicher nicht…

Dafür haben wir eine Art Zwischenschicht gebaut, so dass der Programmierer nicht mehr gesehen hat, wo die Daten liegen, sondern mit ihnen einfach sehr abstrakt umgehen konnte. Ich muss mir dann als Programmierer keinen Kopf machen, sondern gehe einfach davon aus, dass es den Topf gibt und die Jalousie. Dann stelle ich die ganzen Wenn-Dann-Aufgaben, was etwa zu tun ist, wenn die Sonne stark scheint etc. Es wirkt dann, als hätte ich zum Beispiel eine klassische Anlagensteuerung mit einem Steuerrechner vor mir, die JVM ersetzt diese eine Stelle.

All die kleinen Computer rechnen dann parallel, oder?

Ja, das erscheint aus heutiger Sicht relativ normal, weil die Computer, mit denen wir arbeiten, ja auch mehrere Kerne haben: vier, acht, 16, gerne auch mehr. Da ist der Geist heute schon da. Für uns war das neu, dass gleichzeitig viele Dinge gerechnet wurden. Trotzdem musste für den Programmierer das klassische Bild transportiert werden – Stichwort imperative Programmierung. Das Gegenstück dazu ist die funktionale Programmierung. Wir kamen aus dem imperativen Modell.

Was mache ich, wenn ein Gerät ausfällt?

Dann müssen die anderen das ersetzen können: Wenn die Kaffeemaschine ausfällt, kann der Blumentopf immer noch mit der Jalousie reden. Wenn aber die Befehlsschritte ausgerechnet auf der Kaffeemaschine ausgeführt wurden, muss diese ersetzbar sein, das darf die anderen gar nicht interessieren. Ich muss also mit einem Szenario umgehen, wo plötzlich ein paar Player ausfallen und die anderen deren Aufgaben übernehmen. Wenn ein paar Bienen nicht nach Hause finden, darf der Bienenstock daran nicht zugrunde gehen. Die gleiche Frage stellt sich in Bezug auf das Speichern. Was mache ich, wenn wichtige Daten gerade auf der kaputten Kaffeemaschine waren? Alle Zustände, Daten, Informationen müssen also an mehreren Orten liegen.

Wie kann das Wissen aus diesen Projekten in Deiner jetzigen Arbeit genutzt werden?

Da wäre zum Beispiel das Thema transaktionaler Speicher. Normaler Speicher ist einfach da, wie eine Tafel die irgendwo hängt und auf der man Sachen aufschreiben und wieder wegwischen kann. Wird man bei der Arbeit unterbrochen, dann stehen dort unfertige, möglicherweise falsche Dinge. Das ist nicht schlimm, wenn man die Tafel nur für sich selbst nutzt. Arbeitet man aber mit anderen zusammen, können halbfertige Sachen schnell problematisch werden. Man braucht also ein neues Modell: Kleine Täfelchen auf denen jeder für sich arbeitet und die man für andere sichtbar an die Wand hängt, sobald man mit seiner Arbeit fertig ist. In diesem Modell kann das Gesamtsystem trotzdem laufen, wenn etwas kaputt geht. Wenn jemand mit seinem Täfelchen nicht fertig wird, macht das halt ein anderer. Datenbanken haben genau diese Anforderungen schon immer. Nimm die Kontoführung bei einer Bank: Soll Geld von Konto A auf Konto B überwiesen werden, darf es nicht unterwegs verschwinden. Die Überweisung muss also eine sogenannte atomare Transaktion sein, sie muss unteilbar sein. Sie lautet: Nimm das Geld von Konto A und buche es auf Konto B, egal was passiert. Entweder passiert genau das …

… oder gar nichts.

Genau, wenn ein Fehler passiert, dann passiert gar nichts. Dieses Modell haben wir auch für unser Ambient-Intelligence-Projekt genutzt und auf iterative Programmierung übertragen. Ich habe also einen Speicher, definiere im Programmablauf atomare Abschnitte und ich sage, dieser Abschnitt passiert ganz oder gar nicht. Wenn ein Fehler auftritt, dann sieht es immer so aus, als sei er kurz vor oder kurz nach Ende eines Blockes passiert, nie zwischendrin. Änderungen durch ein Stück Software werden erst sichtbar, wenn der Block erfolgreich durchgelaufen ist, ansonsten bleibt nichts Halbfertiges hängen. Das ist transaktionaler Speicher.

Was wäre ein Anwendungsfall hierfür?

Momentan glauben wir, dass alles eine App sein muss, vor 10 Jahren haben wir geglaubt, dass alles eine Webseite sein muss. Vor 20 Jahren konnten wir uns beides nicht vorstellen. Das heißt, mit ein wenig Phantasie kann man sich überlegen, dass Smartphones in fünf Jahren Schnee von gestern sind. Sie werden nicht verschwinden aber es wird etwas Zusätzliches geben: diese scheinbar intelligente Umgebung mit der ich etwas tun kann. Nimm den Film „Minority Report“, wo einen jedes Werbeplakat anguckt und anspricht, wenn man durch die Stadt läuft, und passgenaue Werbung abgibt. Das lässt sich in 1000 weiteren Facetten ausmalen.

Das klingt eher abschreckend.

Man könnte dann das werbefinanzierte Modell von Zeitungen oder Webseiten auf die physische Realität anwenden: Ich gehe in den Baumarkt und bekomme kostenlos meinen Badezimmerspiegel, ich muss mir aber jeden morgen die Werbung angucken. Davon sind wir nicht mehr weit weg. Anderes Beispiel: Die EU hat letzten Sommer beschlossen, den automatischen Notruf in Autos verbindlich zu machen. Das heißt aber auch, dass damit die Infrastruktur existiert, um immer zu wissen, wer mit seinem Auto wo ist oder um flächendeckende Geschwindigkeitskontrollen zu machen. Ich sehe diese Gefahren durchaus.

Also kommen am Ende wieder nur weitere Überwachungstools heraus?

Nein, das Internet of Things ist auch ganz anders denkbar: Der Unterschied zwischen dem, was wir gemacht haben und dem, was NSA und Co. betreiben, ist, dass wir ein System gebaut haben, das vor Ort verteilt mit den beteiligten Dingen arbeitet. Es ist also nicht so wie bei der Cloud, dass alle Daten reingeschnorchelt werden in ein großes Rechenzentrum, dort verarbeitet und dann wieder zurückgespielt werden. Nein, die Daten bleiben vor Ort.

Das heißt, im Internet of Things könnten die Dinge unter sich bleiben, ohne Anschluss ans WWW?

Ja. Wie man dann verhindert, dass sich jemand von außen einklinkt, ist ein anderes Thema. Aber zumindest vom technischen Ansatz her bleiben die Daten genau dort, wo sie gebraucht werden und sie gehen keinen Anderen was an. Wenn die Zahnbürste also mit dem Spiegel redet, tut sie das nur, um mir dort Feedback darüber anzuzeigen, wie ich besser putzen könnte. Die Krankenkasse, die das naturgemäß sehr interessiert, ist erst mal völlig außen vor. Sie bekommt die Daten nicht.

Systeme wie Facebook oder Google sind das genaue Gegenteil – und sie geben einem das Gefühl, das wäre völlig normal und unausweichlich.

Ja, diese Systeme funktionieren so, dass sie Daten von uns, von unseren Smartphones etwa, nehmen und in ein großes Datacenter pumpen. Was dann dort passiert, wie lang sie da liegen, das habe ich nicht unter Kontrolle. Ich habe keine Chance, sie zurückzuholen. Das ist bei unserem Ansatz nicht der Fall. Er ist schwieriger, technisch herausfordernder, aber möglich.

Wäre das auch für Unternehmen ein Modell, um ihre Daten zu schützen?

Im Prinzip ist das die gleiche Technik: Ich muss Firmendaten nicht unbedingt in große Rechenzentren geben, bei denen ich nicht weiß, was dort damit passiert. Ich kann diese Firmendaten genauso gut in der Firma behalten. Trotzdem kann ich den Vorteil nutzen, dass diese Daten zuverlässig, vertraulich gespeichert sind, weil die Daten sich bewegen können, weil die Stellen, wo gerechnet wird, sich bewegen können, ohne ein großes Rechenzentrum zu brauchen.