Open-Source-Tools für Sensornetzwerke Code-Automatik für Datenschnittstellen

SensiDL  - für Sensorsysteme und -netzwerke
SensiDL - für Sensorsysteme und -netzwerke

Im Forschungsprojekt SensIDL (Sensor Interface Definition Language) wurde eine Möglichkeit geschaffen, mit der sich Kommunikationsschnittstellen in Sensorsysteme einfacher implementieren lassen. Seit Anfang 2017 ist nun Release 1.0.0 als Open-Source-Projekt frei verfügbar.

Für die reibungslose Kommunikation von Sensorinformationen von einem Sensorsystem zu einem mobilen Endgerät sind diverse Verarbeitungsschritte notwendig. Mit dem SensIDL-Werkzeug werden sowohl die Sensorentwickler als auch die Entwickler der empfangenden Systeme bei wiederkehrenden Implementierungsaufgaben unterstützt, indem der notwendige Implementierungscode automatisch erzeugt wird.

Ziel des Forschungsprojektes

Der Schwerpunkt von SensIDL lag auf der Unterstützung und Vernetzung rechenschwacher Sensorknoten, die teilweise über keine permanente Stromversorgung und eine schmalbandige Netzwerkanbindung verfügen. Diese vielfältigen Sensorknoten sollen effizient in Kommunikationsnetzwerke, inkl. Server und mobile Geräte, eingebunden werden können. SensIDL richtet sich dabei an kleine und mittelständige Unternehmen (KMUs), die im Gegensatz zu Großunternehmen nicht in der Lage sind, Komplettsysteme anzubieten, sondern auf gemeinsame unternehmensübergreifende und kompatible Schnittstellen zugreifen müssen. Durch die Veröffentlichung als Open Source Software ist SensIDL ein Werkzeug, das KMUs bei den Integrationsaufgaben unterstützt und ihnen dadurch erlaubt, sich weiterhin auf ihre Kernkompetenzen zu konzentrieren.

Um diese Unterstützung zu erreichen, hatte das Forschungsprojekt SensIDL diese beiden Hauptziele:

  • Definition einer Beschreibungssprache speziell für Kommunikationsschnittstellen von Ressourcen-eingeschränkten Sensorsystemen
  • Realisierung von Code-Generatoren, die ausgehend von der Schnittstellenbeschreibung den für die Kommunikation notwendigen Implementierungscode automatisch erzeugen

Der SensIDL-Ansatz

Den schematischen Aufbau des SensIDL-Werkzeuges veranschaulicht Bild 1. Kernelemente sind die SensIDL-Sprache als domänenspezifische Sprache, die sich aus den Teilen Metamodell, Grammatik und Editor zusammensetzt, und die Code-Generatoren, die auf der SensIDL-Sprache aufbauen.

Durch den Editor wird der Benutzer des SensIDL-Werkzeuges unterstützt, die formale Beschreibung einer Sensorschnittstelle zu definieren. Hierbei gibt das Metamodell vor, welche Elemente mit welchen Attributen für die Definition notwendig sind und wie diese in einer textuellen Beschreibung umzusetzen sind. Der Editor bietet dann entsprechend der Grammatik eine Editierunterstützung in Form von Auto-Vervollständigung, Syntax-Hervorhebungen usw., wie es aus Programmierumgebungen bekannt ist.

Die Code-Generatoren greifen auf die durch den Entwickler im Editor erzeugte Schnittstellenbeschreibung und die im Metamodell definierten Zusammenhänge zu und generieren aus diesen Informationen den entsprechenden sensorspezifischen Implementierungscode. Jeder Generator unterstützt dabei eine spezifische Programmiersprache oder Technik.

Die verschiedenen Artefakte, die zum Einsatz kommen, wenn das SensIDL-Werkzeug eingesetzt wird, verdeutlicht Bild 2. Ausgehend von der schon erwähnten Beschreibung (1) einer Kommunikationsschnittstelle ermöglichen Code-Generatoren (2) ein automatisiertes Erzeugen einer sensorspezifischen API (Application Programming Interface) für verschiedene Programmiersprachen und -plattformen, die das Setzen und Auslesen von Sensorwerten ermöglicht. Diese generierte API schließt die Lücke zwischen der anwendungsnahen Programmierung durch die Software-Entwickler und dem generischen Kommunikations-Framework (3), das die verschiedenen Kommunikationstechniken abstrahiert. Die Generatoren können dazu genutzt werden, sowohl den Code auf Sensorseite zu erzeugen als auch den Code auf Empfängerseite zu generieren. Hierdurch wird nicht nur der Entwicklungsaufwand reduziert, sondern auch potenzielle Fehlerquellen beim Parsen der Datenpakete vermieden. Zur einfachen Anwendbarkeit wurden diese verschiedenen Bausteine von SensIDL in einem Werkzeug integriert (4) und als Eclipse-Plug-in realisiert, sodass es sich direkt in Entwicklungsumgebungen integrieren lässt.