In diesem Blogeintrag möchten wir Ihnen gerne die übergeordnete Architektur vorstellen, die unserem smarten Futternapf als Grundlage dienen soll. Zur groben Gliederung lässt sich unsere Architektur in die Hardwarekomponenten, das Backend sowie ein Frontend unterteilen. Die im Hardwareteil verwendeten Geräte werden noch in einem weiteren Blogeintrag näher behandelt werden und sind nicht Fokus dieses Beitrags. Im Folgenden werden die Bestandteile des Backends und Frontends beleuchtet.
Backend
Zur Implementierung unseres Backends haben wir uns für die Programmiersprache Python entschieden. Grund dafür war die weite Verbreitung der Sprache, sodass unsere Gruppe schon in der Vergangenheit in verschiedenen Projekten Erfahrungen damit sammeln konnte. Die API, die das Backend zur Verfügung stellt, um die zugrundeliegenden Daten abzufragen, wird mithilfe der Python Bibliotheken falcon und uvicorn realisiert. Da die von den Geräten gesammelten Daten bezüglich der aktuellen und vergangenen Füllstände der Futternäpfe auch gespeichert werden müssen, um Aussagen über das langfristige Fressverhalten der Vierbeiner treffen zu können, wird eine Datenbank benötigt. Dabei setzen wir auf eine PostgreSQL Datenbank, da sich diese durch eine einfache Initialisierung auszeichnet und für die zu erwartenden Datenmenge angemessen erscheint.
Frontend
Unser Frontend werden wir als React Webapp implementieren. Da React sehr verbreitet ist und als eines der Standard Frameworks für Webapps angesehen werden kann, kann auf eine große Grundlage zur Umsetzung solcher Apps zurückgegriffen werden. Für die grafische Veranschaulichung der Daten eignet sich die nivo Bibliothekt, da sie die Möglichkeit bietet, aus einer Vielzahl an Diagrammtypen zu wählen und somit für viele Anwendungsfälle genutzt werden kann. Außerdem lassen sich die Diagramme einfach als React Komponenten in die eigene Website einbetten. Auf diese Weise können wir also einen kompletten Datenfluss implementieren, vom Sammeln der Daten durch die Sensoren an unseren IoT-Geräten, über die PostgreSQL Datenbank und unser Python Backend und letztendlich die Anzeige mithilfe der React Webapp für den Endanwender.
Klingt spannend. Die Bibliotheken sind sicher eine gute Wahl und PostgreSQL ist eine durchaus mächtige Datenbank, die auch mit sehr großen Datenmengen und komplexen Anforderungen umgehen kann.