Komplexe Projekte

IoT-Bienenstock mit Anomalieerkennung

Dieses Projekt verfolgt das Ziel, verschiedene Anomalien in einem Bienenstock zu erkennen um den Imker frühzeitig zu informieren. In Zusammenarbeit mit unseren Projektpartnern wurde dafür ein Bienenstock mit verschiedenen Sensoren ausgestattet. Die generierten Daten werden mittels eines Mikrokontrollers in einer Cloud (Internet of Things – IoT) abgespeichert, um durch einen Auswertealgorithmus auf Basis Künstlicher Intelligenz (KI) Handlungsempfehlungen für Imker zu generieren.

Je nach Charakteristik der Daten unterscheidet die KI zwischen Vandalismus, Wespenangriff, Gärungsgefahr Honig, Schwärmen und Gefahr für den Nachwuchs. Im Falle der Erkennung einer Anomalie wird, je nach Umsetzung, eine E-Mail oder SMS an den Imker gesendet, sodass dieser direkt reagieren kann ohne wertvolle Zeit zu verlieren.

Bienenstock

Geruchskonzentration Gewicht Luftfeuchtigkeit Flüge Temperatur

Durch das Anklicken der in der Grafik blau hinterlegten Begriffe, gelangen Sie zu den AKTUELLEN LIVEDATEN aus unserem Bienenstock. Die Werte sind bisher nicht kalibriert, eignen sich jedoch, um Tendenzen zu erkennen. Die Messung des Gewichts, des Geruchs und des Flugverhaltens sind bisher nur prototypisch umgesetzt. Den Geruch ermitteln wir mithilfe eines VOC-Sensors, der schon zur Unterscheidung verschiedener Getränke genutzt wurde.

 

Zurück zur Übersicht

Zurück zur Übersicht

Zurück zur Übersicht

Zurück zur Übersicht

Zurück zur Übersicht

Die dargestellten Livedaten des Bienenstocks innerhalb der Graphen werden durch verschiedene Sensoren erfasst. Die Messergebnisse der Sensoren werden mithilfe des IoT-Octopus-Boards gesammelt und im Minutentakt über MQTT an den als Basisstation eingesetzten Raspberry Pi übermittelt. Dort werden die Daten über Node-RED weiter verarbeitet.

Sensoren:

  • BME280 von Bosch (Äußere Temperatur- und Luftfeuchtigkeitsmessung)
  • BME680 von Bosch (Innere Temperatur-, Luftfeuchtigkeits- und Gasmessung)
  • Sparkfun APDS9960 Gesten Sensor (Anzahl der Flüge)
  • Drucksensoren (Gewichtsmessung)

IoT Octopus

Der IoT-Octopus ist ein am Umwelt-Campus entwickeltes Microcontroller-Board. Durch eine Steckverbindung z. B. an A0 oder I2C können eine Vielzahl von Sensoren einfach in Betrieb genommen werden. In unserem Fall werden je ein BME280, BME680 und APDS9960 über die Schnittstelle I2C genutzt. Die Drucksensoren werden über den A0 Pin angeschlossen. Der Octopus kann über das, in unserem IoT²-Pilotyzer Softwarepaket integrierten, Programm Ardublockly mithilfe grafischer Bausteine programmiert werden.

Ardyblockly

Ardublockly erlaubt Menschen ohne Programmiererfahrung, durch einfaches zusammenziehen von Blöcken, ein Programm zum „Puzzlen“, ein Programm zu erstellen. Sicherlich ist algorithmisches Denken erforderlich, allerdings werden den ungeübten Nutzern syntaktische Besonderheiten wie Klammern und Semikolons erspart.Ein kleines Beispielprogramm zur Abfrage der Temperatur über den BME280 und der Gas Werte über den BME680 finden Sie links. Die erfassten Werte werden per MQTT, einem Brokerbasierten, einfach zu nutzenden Industrieprotokoll versendet.

Node-Red:

Node-Red erlaubt die Organisation und Manipulation von Daten in Flussdiagrammen. Die Daten können in sogenannten Knoten verarbeitet werden.
Hierfür werden in unserer Anwendung Funktionen wie z. B. der Eintrag in einer Datenbank oder der Reset des Raspberry Pi genutzt. Node-RED erlaubt die Definition eigener Funktionen, über die alle Peripheriegeräte eines Rechners angesteuert werden können. Ebenso können Programme in verschiedenen Programmiersprachen aufgerufen werden. So können die Daten mit maschinellen Algorithmen wie DBSCAN oder SVM ausgewertet werden um Anomalien zu erkennen, die dann per E-Mail an den Imker versendet werden.

Implementierung eines Node-Red-Systems

Softwarearchitektur

Das System baut sich aus verschiedenen Komponenten innerhalb des Raspberry-Pis zusammen:

    MQTT-Listener:
  • Dienst als Schnittstelle zwischen dem IoT-Octopus, dem im Raspberry Pi sich befindenden Node-Red Systems. Mit Hilfe des Oberserver Pattern wird beim Auslösen eines Events zu einem bestimmten Topic eine Funktion aufgerufen, mit der die aufgenommenen Daten verarbeitet werden.

    Incoming-Data-Handler:
  • Durch das Auslösen des MQTT-Listeners werden im Incoming-Data-Handler, im Knoten „ Build JSON“, wichtige Daten aus den eingehenden Messwerten mit JavaScript-Funktionen extrahiert. JSON, auch JavaScript Object Notation, dient zum Transportieren und Speichern von Daten. In unserem Fall werden die Daten an das Webinterface bzw. an den DB-Writer weitergeleitet.

    DB-Writer

    Innerhalb des DB-Writer werden die neuen Daten vom Incoming-Handler für die SQL-Datenbank aufbereitet und gespeichert. Dies wird durch den „Update DB“-Knoten mit Hilfe von den unten aufgelisteten Funktionen durchgeführt:

  • • get_db_connection() = Baut eine Verbindung zur Datenbank auf in der die Daten gespeichert werden sollen
  • • insert_dataset(dataset.cursor) = fügt die Messwerte der Sensoren ein
  • • convert-timestamp(ts) = konvertiert den Zeitpunkt der Messung in eine formatierte Zeitangabe Y-M-D H:M:S
  • • extractFigure(pattern,dataset) = extrahiert die Messwerte der Geruchskonzentration, falls gegeben, und gibt diese oder andere Messwerte zurück
  • • generateValuesArray(dataset) = fügt die Werte einem Array(=Feld) hinzu und gibt dieses zurück
    DB-Loader

    Lädt die vorhandenen Messwerte beim Systemstart in die Benutzeroberfläche und Datenbank. Möglich wird dies durch den Knoten „Load non volitile value out of DB“ mit Hilfe der Funktionen:

  • • get_system_values()
  • • get_json_object(dataset)
  • • get_avg_smell_value(smell_string)
  • • get_values()
  • Webinterface

    Hier werden die aktuellen Live-Daten für den User auf einer grafischen Benutzeroberfläche, einem Webinterface, dargestellt.