Softwarekonzept

Aus homeautomation.x-api.de
Wechseln zu: Navigation, Suche

Die Software für die Geräte der dezentralen Heimautomatisierung wird grundsätzlich in C/C++ geschrieben. Damit ist sie vom Ansatz her auf allen Geräten, für die entsprechende Compiler zur Verfügung gestellt werden, lauffähig. Wir haben als Grundlage für die Softwareentwicklung die Arduino Plattform gewählt. Das Konzept, sowohl die Software als auch die Hardware offen zu legen, ist natürlich eine ideale Basis für die Ausbildung angehender Ingenieure. Allerdings setzen wir für die Softwareentwicklung die Umgebung Eclipse ein, genauer ein Paket, das mit einem geeigneten Plug-in für die Arduino-Umgebung under dem Namen Sloeber als Freeware verfügbar ist. Weiteres dazu auf der Seite Firmware.

Bei unserem Projekt gehen wir noch einen Schritt weiter als bei Arduino, indem wir die Vernetzung beliebiger Geräte (neben den Mikrocontrollern auch Smartphones, Tablets und PCs) über das sogenannte Social Manufacturing Network vereinheitlichen. Die entsprechende Kommunikationssoftware ist daher auch eine der unteren Schichten in einem entsprechend organisierten Schichtenmodell für die Software. Für das Betriebssystem Android stehen entsprechende Klassen in Java zur Verfügung.

Schicht Beschreibung Dateien
IDE
Zielsystem

In dieser Schicht werden die Eigenschaften des Entwicklungssystems und des Zielsystems beschrieben. Das sind in erster Linie Schalter, die für eine bedingte Kompilation des Quellcode herangezogen werden und Parameter für die Umgebung, wie z.B. das Netzwerk.

arduinoDefs.h
environment.h
socMananetUser.h
Steuerung
des
Zeitverhalten

Für möglichst genau Zeitabläufe in der loop-Funktion, unabhängig von der eingesetzten Hardware, wurde eine Zeitsteuerung eingerichtet, die eine Software-Uhr und einen Betriebsstundenzähler mit einer Auflösung von einer Millisekunde enthält. Daneben steht eine einstellbare Anzahl von Software-Zeitgebern zur Verfügung und das Echtzeitverhalten wird überwacht.

LoopCheck.h
LoopCheck.cpp
Kommunikation

Die Kommunikation erfolgt auf Basis von zyklischen Rundrufen, deren Inhalte vom Anwender asynchron eingestellt werden. Zur Zeit wird dafür das UDP-Protokoll bei den klassischen Internet-Schnittstellen Ethernet/LAN und WiFi/WLAN verwendet. Bei den typischen Arduino-Boards über das Ethernet- oder WiFi-Shield und bei den preiswerten WiFi-Modulen ESP8266 und ESP32 über die von Espressif für die Arduino-Umgebung zur Verfügung gestellten Bibliotheken.

SocManNet.h
SocManNet.cpp
Twitter.h
Twitter.cpp
Follower.h
Follower.cpp
Wartung

Für die Wartung wird eine Schnittstelle für den Zugang durch den Gerätehersteller eingerichtet. Die kann ggf. auch proprietär ausgeführt sein. Allerdings geschieht der Zugriff auf das Gerät nach dem Pull-Prinzip (das Gerät initiiert die Kommunikation) und der Anwender wird eine angemessene Zeit vor dem Zugriff darüber informiert.

in Entwicklung
Programmierung

Mit Programmierung ist an dieser Stelle die Gestaltung von Auswertungen und Abläufen im Gerät durch den Anwender gemeint. Die Programmierschnittstelle für den Anwender ist einheitlich für alle Geräte und ermöglicht in erster Linie die Kombination einzelner vordefinierter Module.

in Entwicklung
Zustandsmaschine

Die funktionalen Abläufe erfolgen über eine Zustandsmaschine. Der aktuelle Zustand eines Gerätes ist Bestandteil der zyklischen Twitter-Botschaft.

in Entwicklung
Profile

In studentischen Projekten (auch Bachelor- und Masterarbeiten) werden Geräte für die Heimautomatisierung entwickelt und getestet. Hier ist eine enge Kooperation mit industriellen Geräteherstellern vorgesehen, soweit die hier vorgestellte dezentrale Heimautomatisierung in ihr Konzept passt.

Intelligente Bewegungsmelder
Universelle Funkschalter
Intelligente Steuerung von Jalousien
Intelligente Lichtsteuerung