Die Projektsoftware

Grundsätzlich besteht das eHive Projekt aus einem Netzwerk von Clients, einem pro eHive, die Messdaten sammeln und an einen zentralen Server senden. Dieser speichert die Daten in einer Datenbank und stellt sie für ein weites Spektrum von Anwendungen bereit.

Weg der Daten vom eHive bis auf Ihren Bildschirm.

Die Clients benutzen einen Arduino Due, um die Daten zu sammeln. Im Nachhinein bereuen wir diese Entscheidung ein wenig: Einerseits ermöglicht die Plattform einfachen Zugriff zu den grundlegenden Funktionen eines Microcontrollers, andererseits blockieren oder behindern die zugehörigen Bibliotheken den Zugriff auf komplexere und tiefer liegende Funktionen des Microcontrollers. Beispielsweise wollten wir zur Überwachung des Chips die Prozessortemperatur erfassen, eine Funktion, die Arduino nicht bereitstellt. Und unsere eigene Implementierung passt wiederum nicht in das Arduino-Konzept hinein. Für kleine Projekte und zum Testen von Konzepten ist dieses System sicher eine gute Wahl, aber in unserem Fall hat es die Dinge eher komplizierter als einfacher gemacht.

In der letzten Zeit konnten wir einige revolutionäre Features in die Software einbauen, die für andere Projekte ebenfalls interessant sein können. An dieser Stelle werden wir sie nur umschreiben. Wenn Sie an einer detaillierten technischen Beschreibung interessiert sind, können Sie uns direkt kontaktieren.

Verschlüsselung basierend auf der mbedTLS-Bibliothek

Das klingt nach einer der einfacheren Aufgaben, schließlich ist es nicht schwer, eine Bibliothek zu implementieren. Doch wir haben ein auf unsere Anwendung zugeschnittenes Verschlüsselungssystem entwickelt: Server und Clients haben ihre eigenen privaten und öffentlichen Schlüssel und tauschen damit halbstündig temporäre AES-Schlüssel aus, die dann für die eigentliche Kommunikation (Datenübertragung, Statusabfragen, Zeitsynchronisation, Updates, …) genutzt werden. Dies ermöglicht maximale Datenintegrität und -sicherheit bei gleichzeitig sehr schnellen Algorithmen, und tatsächlich führt die Verschlüsselung nur zu kleinen Performanceeinbußen, wenn Server und Client neue Kommunikationsschlüssel austauschen.

GSM mit dem Arduino Due (d.h. mobile Datenverbindung)

Wie Sie vielleicht wissen, funktioniert die GSM-Bibliothek von Arduino nur mit den Chips auf AVR-Basis, zu denen der Due nicht gehört. (Genauer gesagt basiert die GSM-Library auf einer anderen Bibliothek namens SoftwareSerial, die vom SAM3X-Chip des Due nicht unterstützt wird). Daher mussten wir eine eigene Bibliothek entwickeln (sie enthält nur Internet-Funktionalität, es gibt keine Pläne, Unterstützung für Anrufe oder SMS hinzuzufügen). Außerdem war die Arduino-Bibliothek für unsere Zwecke viel zu aufgebläht. Derzeit polieren wir sie noch an ein paar Stellen, aber sie ist schon jetzt deutlich schneller als die Arduino-Bibliothek für LAN-Verbindungen!

Firmware Over The Air-Funktionalität

Das war der vielleicht schwierigste Teil an der Softwareentwicklung: Wie kann man die Firmware des Arduino aktualisieren, ohne ihn an einen Computer anzuschließen, so dass wir automatische Updates und Verbesserungen verteilen können? Nun ja, es ist möglich! Man muss dazu lediglich das neue Programm aus dem Flash-Speicher an die Stelle verschieben, von denen Programme ausgeführt werden, wobei das aktuelle Programm im RAM weiterläuft, um das Update korrekt abzuschließen. Dann wird der Mikrocontroller durch seine eigene Software neu gestartet. Auf dieser hohen Abstraktionsebene klingt das recht einfach, aber es gibt praktisch keine Quellen zu diesem Thema, erst recht nichts Arduino-bezogenes, außer dem Datenblatt und ein paar zusätzlichen Informationen durch den Hersteller.

Das Beste daran: Das Update funktioniert unabhängig von der Netzwerkverbindung (also ob GSM oder Ethernet) und wird verschlüsselt, so dass kein fremder Code eingeschleust werden kann. Vermutlich ist die Funktionsweise sogar mit geringen Änderungen auf fast allen Atmel-ARM-Prozessoren lauffähig. Übrigens nehmen wir bereits an unserem eHive in Würzburg experimentell Daten auf, wobei die Kiste über GSM verschlüsselt verbunden ist.

Diagrammanzeige

Aber nicht nur auf Client-Seite haben wir Fortschritte bei der Software gemacht. Wir haben auch die Datenverwaltungssoftware verbessert und eine Live-Diagrammanzeige hinzugefügt, die sich noch in einem recht frühen Entwicklungsstatus befindet. Dieses Modul unserer Server-Software dient dazu, die Daten auch für Nicht-Informatiker verständlich und übersichtlich anzuzeigen. Die Seite funktioniert schon auf verschiedensten Geräten, von Smartphone bis Desktop-PC, und kann bis zu 8 verschiedene Sensoren, unabhängig von ihrer physikalischen Einheit, anzeigen! Wie bereits erwähnt, haben wir die Seite schon in 6 verschiedene Sprachen übersetzt. Übrigens sieht man, wie etwa alle 10 Minuten neue Daten ankommen. Bitte haben Sie Verständnis, wenn noch nicht alles wie geplant funktioniert. Zu finden ist es hier: Diagram. Viel Spaß damit! Wenn Sie Verbesserungsvorschläge haben, freuen wir uns über eine Mail.

(jh, ds) 2015-11-30