Entwicklung einer Vogelerfassungsstation mithilfe von Architekturkonzepten des Internet of Things
By Besner, Fabian
Kurzzusammenfassung
Etablierte Architekturkonzepte des Internet of Things sollen dabei helfen, die wesentlichen Herausforderungen des Internet of Things wie Sicherheit, Skalierbarkeit und Interoperabilität auf der Architekturebene zu bewerkstelligen. Dieser Beitrag gibt einen Einblick in die architektonische und softwaretechnische Umsetzung einer Erfassungsstation für Vögel. Die Erfassungsstation wurde im Rahmen der Masterarbeit “Architekturkonzepte des Internet of Things am Beispiel einer Erfassungsstation für Singvögel” unter Nutzung von etablierten Architekturkonzepten, insbesondere Referenzarchitekturen für das Internet of Things, entwickelt.
Die Entwicklung der Vogelerfassungsstation hat gezeigt, dass eine Kombination aus dem IoT Architectural Reference Model (IoT ARM) des IoT-A Projektes und dem Web of Things (WoT) als eine besonders geeignete Variante für die Konstruktion von IoT-Lösungen anzusehen ist. Dabei ermöglicht das IoT ARM die Ableitung einer detaillierten Architekturbeschreibung und das Web of Things die Sicherstellung der Interoperabilität. Zusätzlich wurde deutlich, dass sich Kommunikationsstrukturen wie das Publish und Subscribe Muster unter Nutzung von MQTT oder Webtechnologien wie HTTP basierte REST-Services für die Umsetzung von IoT-Systemen bewährt haben.
Inhalt
- Video
- Interaktive Demo
- IoT-Architekturkonzepte
- Systemdesign und Entwurf der Erfassungsstation
- Implementation
- Fazit
Video
Interaktive Demo
IoT-Architekturkonzepte
Bevor näher auf den Entwurf der Erfassungsstation eingegangen wird, werden nachfolgend zwei IoT-Architekturkonzepte vorgestellt, die als mögliche Lösungen für die Beschreibung bzw. den Entwurf der Erfassungsstation in Betracht gezogen wurden.
High-level Architektur
Im Rahmen der Masterarbeit wurde deutlich, dass in der Forschung und Industrie sehr viele verschiedene Beschreibungen einer Internet of Things Architektur exisiteren. Dabei lässt sich ein klarer Trend zur Beschreibung von IoT-Architekturen in der Form von Schichtenmodellen feststellen, wobei das hier dargestellte 3-Schichtenmodell in der Literatur eine generell akzeptierte Darstellung einer IoT-Architektur ist [FB20].
-
Anwendungsschicht
Die Anwendungsschicht nutzt die empfangenen Daten der unteren Schichten und stellt Services für den Endanwender bereit, die es dem Endanwender ermöglicht, auf die IoT-Daten und dem damit verbundenen Wissen zuzugreifen [ATR16, SSB18]. -
Netzwerkschicht
Die Netzwerkschicht ist für die sichere Übertragung der erfassten Daten zur Anwendungsschicht verantwortlich [JBH+20]. Dies beinhaltet Möglichkeiten zur Adressierung, zum Routen und zur Verschlüsselung der IoT-Daten [SSB18]. -
Wahrnehmungsschicht
Die Wahrnehmungsschicht ist, wie der Name impliziert, für die Erfassung der Eigenschaften der physischen Welt verantwortlich. Die Wahrnehmung der physischen Welt erfolgt dabei durch Sensoren, die die physischen Eigenschaften der Umgebung, wie Helligkeit oder Temperatur, in elektrische Signale umwandeln. Neben den Sensoren sind die Aktuatoren, welche elektrische Signale in mechanische Bewegung umwandeln und damit die physische Welt beeinflussen, ein wesentliches Element der Wahrnehmungsschicht.
Das 3-Schichtenmodell wird derzeit in aktuelleren Veröffentlichungen durch zusätzliche Schichten erweitert. Allgemein werden die Erweiterungen auf mehrere Schichten dazu genutzt, um detaillierte Untersuchungsaspekte von IoT-Architekturen zu ermöglichen [JBH+20]. Die in der Masterarbeit identifizierten Schichtenmodelle reichen von drei bis zu sieben Schichten. Hinzu kommen bei manchen Modellen schichtübergreifende Elemente, die sich über mehrere Schichten vertikal ziehen.
Insgesamt lässt sich feststellen, dass die Schichtenmodelle IoT-Architekturen konzeptuell auf einem hohen Abstraktionsgrad beschreiben und dabei die IoT-Systeme in funktionale Schichten aufteilen. Diese Modelle eignen sich besonders, um verschiedene IoT-Systeme gegenüberzustellen und zu vergleichen. Unterstützung für einen konkreten Entwurf bzw. für die softwaretechnische Entwicklung bieten sie jedoch nicht.
IoT-Referenzarchitekturen
Um konkretere Hilfestellungen für den Entwurf und die softwaretechnische Entwicklung zu erhalten, wurden im Rahmen der Masterarbeit verschiedene Referenzarchitekturen für das Internet of Things untersucht und bewertet. Unter einer Referenzarchitektur für das Internet of Things kann allgemein eine abstrakte Architektur bezeichnet werden, die als Hilfestellung dient und das Ziel hat, die Komplexität bei der Entwicklung von konkreten Systemen zu reduzieren [RPK18]. Zusätzlich werden im Bereich des Internet of Things die Referenzarchitekturen mit Domäneninformationen, die das Internet of Things betreffen, angereichert [FB20].
Durch die genauere Untersuchung und Bewertung von verschiedenen Referenzarchitekturen des Internet of Things anhand einer Anforderungsmatrix hat sich die Referenzarchitektur bzw. das IoT Architectural Reference Model des IoT-A Projektes als die Lösung herausgestellt, die die meisten Anforderungen erfüllt. Somit wurde für die Umsetzung der verschiedenen Systemarchitekturen der Erfassungsstationen das IoT Architectural Reference Model ausgewählt.
Systemdesign und Entwurf der Erfassungsstation
IoT ARM Domain Model
Das IoT Domain Model ist Teil des Referenzmodells des IoT Architectural Reference Model und soll in der frühen Phase des Entwurfes genutzt werden. Dabei beschreibt das Domain Model die wesentlichen Konzepte der IoT-Domäne auf einem hohen Abstraktionsgrad und kann eingesetzt werden, um die Hauptkonzepte und Hauptkomponenten der konkreten IoT-Architektur grafisch darzustellen [CBB+13]. Neben den Konzepten selbst, sind deren Beziehungen und Verantwortungen Bestandteile des Domain Models. Das Domain Model wird typischerweise mithilfe der Unified Modeling Language (UML)-Notation modelliert. Ergänzend zu den typischen UML-Elementen nutzt das Domain ModFel zusätzliche Farbcodes, um eine Klassifikation der Konzepte, in Soft-, Hardware und lebendige Objekte sowie in nicht eindeutig klassifizierbare Objekte, durchzuführen [CBB+13]. Die nachfolgende Abbildung zeigt die Anwendung des IoT Domain Models auf die Erfassungsstation für Vögel.
-
Nicht eindeutig klassifizierbar
Als die nicht eindeutig klassifizierbaren Elemente werden im Rahmen des Anwendungsfalls zwei physische Entitäten modelliert. Zum einen die Vögel selbst, dessen Stimmen aufgezeichnet werden sowie die Umgebung, in der die Aufzeichnung stattfindet. Dabei beschreibt eine physische Entität das Objekt, welches überwacht und gesteuert werden soll [CBB+13].
-
Lebendige Nutzer (Gelb)
Bei dem hier dargestellten Benutzer handelt es sich um einen Menschen, der an den Ereignissen der Umgebung, also den klassifizierten Vogelstimmen, interessiert ist und über den Vogelstimmen Service auf diese zugreift.
-
Hardware
Die Hardware wird durch die Erfassungsstation bzw. den Raspberry Pi selbst (Device) sowie das Mikrofon und das GPS-Modul (Sensor) modelliert. Dabei sind das Mikrofon und das GPS-Modul für die Überwachung der Umgebung verantwotlich.
-
Software
Als Softwarekomponenten kommen drei wesentliche Elemente zum Einsatz
- Virtuelle Entitäten, 2. Ressourcen und 3. Services.
Ein zentrales Element des Domain Models ist die virtuelle Entität, die eine digitale Repräsentation der überwachten physischen Entität darstellt [CBB+13]. Im Rahmen des Anwendungsfalls werden die physischen Entitäten Vogel und die überwachte Umgebung als Ereignisse in der Umgebung virtuell repräsentiert und z. B. in einer Datenbank gespeichert.
Im Rahmen des Domain Models wird zwischen Network und On-Device Ressourcen unterschieden. Die erfassten Vogelstimmen können je nach Systemarchitektur, entweder direkt auf dem Raspberry Pi (On-Device) oder in dem Back-End (Network) gespeichert und verwaltet werden.
Im Rahmen des Anwendungsfalls werden verschiedene Services eingesetzt. Ein Service ist dabei für die Klassifikation der Vogelstimmen zuständig. Andere Services befinden sich auf dem Ressourcen-Level und ermöglichen den Zugriff auf die GPS-Daten sowie die aufgezeichneten Audiodaten. Ein weiterer Service (Vogelstimmen Service) ist für den Zugriff und die Verwaltung der virtuellen Entitäten, die als Ereignisse in der Umgebung abgebildet werden, verantwortlich.
Insgesamt lässt sich feststellen, dass das IoT-A Domain Model und die damit verbundene IoT-Kontext-Analyse sehr hilfreich sind, um die wesentlichen Entitäten, Services und Beziehungen zu identifizieren und grafisch darzustellen. Somit kann die IoT-Domäne bereits während der frühen Phase des Entwurfes einbezogen werden. Zusätzlich dient das Domain Model als Grundlage für weitere Modelle oder Architektur-Sichten und kann sogar während der Implementation genutzt werden, um zu überprüfen, ob die wesentlichen Elemente, Entitäten und deren Beziehungen auch softwaretechnisch adäquat umgesetzt worden sind.
Deployment & Operation View
Anhand der hier dargestellten Deployment & Operation View können die verschiedenen Systemarchitekturen (SA0-SA4) grafisch dargestellt werden, um die wesentlichen Unterschiede hinsichtlich des Deployments der Komponenten deutlich zu machen. Die dargestellten Komponenten sind zum einen aus dem Domain Model hervorgegangen aber zum anderen aufgrund einer funktionalen Dekomposition der Erfassungsstation in der Functional View bzw. im Function Model entstanden. Genauere Informationen zu diesen Konstrukten können dem offiziellen Dokument zum Architectural Reference Model [CBB+13] entnommen werden.
Aufbauend auf dem Domain Model und der funktionalen Dekomposition der Erfassungsstation wird deutlich, dass für die Implementationen möglichst unabhängige Services erstellt werden sollten. Für die Erstellung der unabhängigen Services bietet sich die Umsetzung einer Microservicearchitektur an. Die verschiedenen Services können somit, je nach Systemarchitektur, entweder auf dem IoT-Gerät selbst oder im Back-End deployed werden. Dementsprechend hat sich für die Umsetzung des IoT ARM Entwurfes eine Dekomposition der Erfassungsstation in drei verschiedene Microservices ergeben:
- Sensorerfassung des Mikrofons und des GPS-Sensors (IoT Services)
- Vogelklassifikation
- Datenspeicherung (VE Service)
Zusätzlich wird für die Systemarchitekturen SA1-SA4 eine 3-Schichtenarchitektur verwendet, um die Erfassung (Edge Tier), Speicherung (Platform Tier) und Darstellung (Enterprise Tier) der Daten zu trennen.
Deutlich wird, dass sowohl der Service für die virtuellen Entitäten (VE-Service) als auch der Service für die Vogel(stimmen)-Klassifikation je nach Systemarchitektur (SA) auf dem Raspberry Pi selbst oder im Back-End deployed wird. Der Zugriff auf die Sensoren bzw. Sensor-Ressourcen erfolgt immer auf dem Raspberry Pi mithilfe eines Sensor IoT-Service. Für die Kommunikation ist eine End-to-End Kommunikationskomponete verantwotlich, die den IP-basierten Nachrichtenaustausch gewährleistet. Besonders die Nutzung von IP-basieren Kommunikationsprotokollen ist für die Sicherstellung der Interoperabilität von großer Bedeutung.
Implementation
Die Erfassungstation im Einsatz:
![]() |
![]() |
Eingesetzte Hardware
Wie bereits mehrfach erwähnt, basiert die Erfassungsstation auf der Hardwareplattform Raspberry Pi.
Für das Mikrofon, die Soundkarte sowie die wetterfeste Box wurde auf Erfahrungen aus dem Solo Projekt zurückgegriffen, da sich diese besonders im Zusammenspiel mit einem Raspberry Pi eignen. Im Folgendem ist eine genaue Liste der eingesetzen Hardwarekompenten aufgezeigt:
- Hardwareplattform Raspberry Pi 3B und Raspberry Pi 4B (4GB)
- Speicherkarte 32GB, SanDisk Ultra
- GPS-Modul GY-NEO6MV2
- Mikrofon Primo EM172
- USB Soundkarte Creative Sound Blaster Play!3
- Powerbank (nicht weiter spezifiziert)
- Wetterfeste Box Dri-Box FL-1859-200
Web of Things
Das Web of Things hat das Ziel, der Fragmentation des IoT entgegen zu steuern und Interoperabilität zwischen verschiedenen IoT-Plattformen und Anwendungsdomänen auf der Anwendungsschicht des ISO/OSI-Referenzmodels zu gewährleisten. Dabei dient die Thing Description (TD) als Einstiegspunkt und Beschreibung zur Nutzung eines IoT-Gerätes. Die nachfolgende Abbildung stellt die Architektur eines Things, das am Web of Things teilnimmt, dar [GT16].
Bei der Thing Description sind besonders die Interaction Affordances hervorzuheben, die die Schnittstelle eines IoT-Gerätes bzw. Things spezifizieren. Dabei wird zwischen Eigenschaften, Aktionen und Events unterschieden [KML+20]:
-
Die Eigenschaften (engl. Properties) ermöglichen den Zugriff auf den Zustand des Things. Dadurch kann z. B die Position (GPS Koordinaten) vom Thing abgefragt werden, wie z. B. an welchem Ort sich die Erfassungsstation befindet.
-
Aktionen (engl. Actions) ermöglichen das Aufrufen einer vom Thing angebotenen Funktion. Durch diesen Aufruf kann z. B. der Zustand des Things geändert oder eine Berechnung ausgeführt werden.
-
Events ermöglichen die asynchrone Benachrichtigung beim Eintreten eines spezifischen Ereignisses, wie z. B. die Detektion eines bestimmten Vogels.
Neben den Interaction Affordances können Informationen zur Sicherheit, zu Datenschemen und Protokollbindungen der Thing Description entnommen werden. Diese spezifizieren die Schnittstellen genauer und geben vor, welche Sicherheitsmechanismen oder Protokolle genutzt werden müssen, um mit dem Thing zu interagieren und wie die damit verbundenen Datenmodelle und Payloads strukturiert sind [KML+20].
Durch die Nutzung einer Thing Description kann die Erfassungsstation für Vögel einfach in andere Web of Things kompatible Anwendungen integriert werden, da die Schnittstellenspezifikation von Maschinen verarbeitet werden kann.
Vogelklassifikation
Die erfolgreiche Klassifikation der Vogelstimmen war ein wichtiger Aspekt für die Realisierung der Erfassungsstation. Hierbei wurde in einem ersten Schritt ein eigener Klassifikator entwickelt, der aber in der jetzigen Version durch die Awendung BirdNET ersetzt worden ist, da BirdNET wesentlich präzisiere Ergebnisse liefert.
Für die Erfassungsstation werden zwei Varianten von BirdNET [Kah19] eingesetzt:
-
BirdNET als Python-basierte Implementation, welche auf der Deeplearning Bibliothek Theano und der Bibliothek Lasagne für das Trainieren und Bauen von neuronalen Netzen basiert. Im Rahmen der Erfassungsstation wird BirdNET dabei über einen Docker-Container gestartet. Zusätzlich wird ein Wrapper um den Docker-Container implementiert, der den Zugriff auf BirdNET über eine REST-Schnittstelle ermöglicht. Damit können Vogelstimmen über HTTP-basierte Long-Polling-Abfragen klassifiziert werden, indem eine WAV-Datei an BirdNET über das Netzwerk gesendet wird. Es sei angemerkt, dass aufgrund von mangelnder ARM-Kompatibilität die Pythonbasierte Implementation nicht auf dem Raspberry Pi ausgeführt werden konnte.
-
BirdNET-Electron ist eine Electron-basierte BirdNET Anwendung, um Vogelstimmen in Audiodateien zu erkennen. Die BirdNET-Electron Anwendung wurde im Rahmen der Arbeit stark angepasst. Extrahiert werden nur die Implementation und das Modell, das für die Klassifikation der Audiodateien notwendig ist. Diese extrahierten Elemente werden zusätzlich durch eine node-Anwendung mit express.js erweitert, um anlog zur oben beschriebenen Python-basierten BirdNET, die gleiche REST-Schnittstelle zu ermöglichen.
Der Unterschied zwischen den beiden modifizierten BirdNET Varianten ist, dass die BirdNET-Electron Implementation deutlich leichtgewichtiger ist und auf dem Raspberry Pi ausgeführt werden kann. Die Python-basierte Anwendung erlaubt eine genauere Analyse, kann aber nicht auf dem Raspberry Pi ausgeführt werden und benötigt, bei gleicher Rechenleistung, deutlich mehr Zeit für die Klassifikation.
Der Zugriff und das Zusammenspiel der Erfassungsstation und BirdNET ist in der nachfolgenden Grafik dargestellt. Die Erfassungsstation ist für das Aufzeichnen der Umgebungsgeräusche verantwortlich und übermittelt aufgenommene Geräusche an BirdNET. Falls eine Vogelstimme klassifiziert worden ist, wird die Vogelstimme gespeichert und potenzielle Zuhörer benachrichtigt.
Technologie-Stack
Ein Gesamteindruck der Erfassungsstation lässt sich durch den eingesetzten Technologiestack, verbunden mit einer Deployment View, darstellen. Für die Entwicklung der Erfassungsstation und des Back-Ends wurde hauptsächlich die Programmiersprache Python 3 verwendet. Aufbauend auf Python wurde das asynchrone Webframework FastAPI für die Umsetzung von REST-Schnittstellen und WebSockets genutzt. Als Datenbank kommt MongoDB zum Einsatz, die Vogelklassifikation wird mithilfe der Anwendung BirdNET realisiert und die Kommunikation über MQTT erfolgt durch die Nutzung des MQTT-Brokers Eclipse Mosquitto. Zusätzlich wurde das Front-End mittels React unter Nutzung von TypeScript umgesetzt. Im Back-End wird zusätzlich Docker eingesetzt, um zum einen das Deployment und die Portabilität zu verbessern und zum anderen, um im Dockerfile die genauen Abhängigkeiten und Umgebungen spezifizieren zu können. MQTT und das verbundene Publish-Subscribe-Muster wird genutzt, um eine lose Kopplung zwischen den IoT-Geräten und dem Back-End zu erzielen. Somit können die Erfassungsstation und das Back-End unabhängig voneinander skaliert werden. MongoDB bietet sich aufgrund der dokumentenbasierten Speicherung an, da die virtuellen Entitäten als JSON-Objekte repräsentiert werden. Zusätzlich ist MongoDB sehr skalierbar und bietet sich für die enorme Anzahl an Daten im IoT besonders an.
Fazit
Die Entwicklung der Erfassungsstation konnte genutzt werden, um die Eignung von IoT-Referenzarchitekturen und IoT-Architekturkonzepten näher zu untersuchen. Dabei wurde festgestellt, dass sich eine Kombination aus der IoT ARM und dem Web of Things eignet, um eine Erfassungsstation für Vögel zu entwerfen und zu entwickeln. Dabei kann das IoT ARM genutzt werden, um eine detaillierte Architekturbeschreibung abzuleiten und zusätzlich das Web of Things, um die Interoperabilität im Rahmen des Internet of Things sicherzustellen. Außerdem wird deutlich, dass die IoT-Landschaft bzgl. der IoT-Architekturkonzepte sehr unübersichtlich und heterogen ist und im Bereich des IoT, insbesondere für die Erstellung von kleineren IoT-Projekten, weitere IoT-Architekturkonzepte benötigt werden, die die Erreichung von inneren Softwarequalitätszielen unterstützen. Dieser Beitrag zeigt zum einen wesentliche Modellierungshilfen wie das IoT Domain Model und zum anderen Technolgien wie MQTT, MongoDB und REST, die sich für die Umsetzung von IoT-Lösungen eignen. Die Erfassung bzw. Zählung der Vögel, z. B. in überregionalen Vogelbestimmungs-Aktionen, könnte dabei im Rahmen von Citizen Science erfolgen und die erfassten Daten über öffentliche Schnittstellen, im Rahmen des Internet of Things, zur Verfügung gestellt werden.
Literaturverzeichnis
[ATR16] Abdmeziem, Mohammed R. ; Tandjaoui, Djamel ; Romdhani, Imed: Architecting the Internet of Things: State of the Art. In: Koubaa, Anis (Hrsg.) ; Shakshuki, Elhadi (Hrsg.): Robots and Sensor Clouds Bd. 36. Springer International Publishing, 2016. – ISBN 978–3–319–22167–0, S. 55–75
[CBB+13] Carrez, Francois ; Bauer, Martin ; Boussad, Mathieu ; Bui, Nicola ; Jardak, Christine ; De Loof, Jourik u. a.: Internet of Things–Architecture IoT-A Deliverable D1.5–Final architectural reference model for the IoT v3.0. Version: 2013. PDF, Abruf: 08.10.2020. 2013
[FB20] Besner, Fabian ; Architekturkonzepte des Internet of Things am Beispiel einer Erfassungsstation für Singvögel; Masterarbeit
[GT16] Guinard, Dominique ; Trifa, Vlad: Building the web of things: With examples in Node.js and Raspberry Pi. Shelter Island NY : Manning, 2016. – ISBN 1617292680
[JBH+20] Jabraeil Jamali, Mohammad A. ; Bahrami, Bahareh ; Heidari, Arash ; Allahverdizadeh, Parisa ; Norouzi, Farhad: Towards the Internet of Things: Architectures, Security, and Applications. Cham : Springer International Publishing, 2020. https://dx.doi.org/10.1007/978-3-030-18468-1 . Abruf: 08.10.2020 – ISBN 978–3–030–18467–
[Kah19] Kahl, Stefan: Identifying Birds by Sound: Large-scale Acoustic Event Recognition for Avian Activity Monitoring, Chemnitz University of Technology, Diss., 2019
[KML+20] Kovatsch, Matthias ; Matsukura, Ryuichi ; Lagally, Michael ; Kawaguchi, Toru ; Toumura, Kunihiko ; Kajimoto, Kazuo: Web of Things (WoT) Architecture. https://www.w3.org/TR/wot-architecture/. Version: 2020, Abruf: 08.10.2020
[RPK18] Reidt, A. ; Pfaff, M. ; Krcmar, H.: Der Referenzarchitekturbegriff im Wandel der Zeit. In: HMD Praxis der Wirtschaftsinformatik 55 (2018), Nr. 5, 893–906. https://dx.doi.org/10.1365/s40702-018-00448-8 , Abruf: 08.10.2020. – DOI 10.1365/s40702–018–00448–8. – ISSN 1436–3011
[SSB18] Simnani, Syed Suhail A. ; Shah, Sameena ; Banday, M T.: Architectural Standards for Internet of Things: From Research to Industrial Adaption. In: 2018 3rd International Conference on