Java-Implementation für das Web of Things veröffentlicht

19. November 2019

Das SANE-Netz lebt von der Vielfalt an Sensoren, die aktive Bürger mit diesem verknüpfen wollen. Hierbei ist wichtig, dass all diese Sensoren miteinander kommunizieren können ohne zu wissen, mit welcher Hard- und Software dieser Sensor realisiert ist. Die virtuelle Repräsentation und Interaktion der Sensoren muss somit über das gesamte Netz einheitlich sein, sodass ein einheitliches Zugriffsschema anwendbar ist.

Für diesen Zweck hat das World Wide Web Consortium (W3C) den Standard für das Web of Things (WoT) erschaffen. Dieser Standard erschafft eine virtuelle Repräsentation der Sensoren als sogenannte Things. Diese besitzen eine definierte Thing Description im JSON-Format in der alle verfügbaren Eigenschaften und Schnittstellen beschrieben werden. Die Schnittstellen setzen sich dabei aus Properties, Actions und Events zusammen:

  • Properties ermöglichen das Lesen und Schreiben von Datenwerten (z.B. die aktuelle Temperatur)
  • Actions ermöglichen die Interaktion mit dem zugrunde liegenden Thing (z.B. Ausschalten einer Glühbirne)
  • Events erlauben es Interessenten über bestimmte Ergeignisse benachrichtigt zu werden (z.B. Erreichen einer kritischen Temperatur)

Da der WoT-Standard noch recht jung ist und auch noch nicht final verabschiedet wurde, existieren erst wenige Implementationen für die verschiedenen Programmiersprachen. Da wir bei der Entwicklung unseres Prototypen auch Studierende einbeziehen, setzen wir auf die im Lehrplan anzufindene Programiersprache Java. Für Java jedoch gab es jedoch noch keine geeignete Implementation, sodass wir uns nun freuen die bereits existierenden WoT-Implementationen um eine Implementation in Java zu erweitern.

Unsere Implementation ist in der Lage, als Server eigene Things im WoT zu veröffentlichen, sowie als Client bereits vorhandene Things im WoT zu konsumieren. Dabei werden bereits eine Reihe von Protkollen unterstützt: Neben HTTP, Websockets (in Entwicklung), MQTT und CoAP können Things auch über die Agentenplattform Jadex sowie das Aktoren-Framework Akka miteinander kommunizieren. Unsere WoT-Implementation kann als Bibliothek in eigene Software-Projekte eingebettet werden. Zudem bietet sie ein Command Line Interface (CLI), mit dem über der Skriptsprache Groovy Things direkt veröffentlicht oder konusmiert werden können. Einige Beispiele hierfür befinden sich hier auch in dem GitHub-Repository.

Die gesamte Implementation haben wir auf GitHub unter der LGPLv3 veröffentlicht. Ein Docker-Container mit dem aktuellsten CLI ist auf Docker Hub bereitgestellt und kann direkt verwendet werden. Wir freuen uns auf euer Feedback und Pull Requests!