Dieses Verzeichnis enthält die Quellcodes und Softwarekomponenten für die IoT-Devices. Jede Komponente besitzt ihren eigenen Docker-Container, so dass sie mit dem Balena CLI bzw. der Balena Cloud auf die Devices verteilt werden kann.
Die IoT-Devices umfassen folgende Komponenten:
redis
: Zentraler Redis-Serversensor
: Python-Programm zum Auslesen der Sensordaten und Ablage in Redisstartstopbutton
: Python-Programm zur Simulation eines Türschlosses (System aktivieren, deaktivieren, Alarm deaktivieren)mqtthandler
: Python-Programm zum Versand der Sensordaten via MQTTgrafana
: Lokales Grafana-Dashboard zur Überwachung der Devicesactuator
: Ansteuern der Aktoren (LED + Buzzer)alarmhandler
: Bestimmt, wann ein Alarm ausgelöst wirdcamera
: Personenerkennung mittels Kamera + MLmailhlandler
: Versenden von E-Mails bei Alarmzigbee2mqtt
: Zigbee-Geräte über MQTT ansteuern
Hauptbestandteil ist hier der Redis-Server, der als strukturierter in-memory Key-Value-Store sowohl für die lokale Zwischenspeicherung der Sensordaten als auch die Kommunikation der Teilprogramme untereinander sorgt. Der Server ist so konfiguriert, dass bei einem Stromausfall maximal die Daten der letzten Sekunde verloren gehen können.
Die Sensordaten werden dabei via MQTT an das Backend sowie weitere, interessierte Empfänger verschickt. Dabei ist sichergestellt, dass bei einem Teilausfall des Systems keine Sensordaten verloren gehen, sondern der Sendevorgang automatisch nachgeholt wird. Ebenso erlauben die Devices eine einfache Fernsteuerung durch JSON-kodierte Kommandos via MQTT.