Ziel des Projektes war ein Proof-of-Concept (PoC) für Asset-Tracking durch ein Bluetooth Low Energy Mesh (BLE-Mesh) Netzwerk für Indoor-Anwendungen. Ein BLE-Mesh bietet den Vorteil, dass fast keine Infrastruktur notwendig ist. Die Knotenpunkte sind mitunter so Energiesparend, dass diese mit einer Knopfzelle mehrere Monate lauffähig sind. Die Daten werden per Bluetooth Low Energy übertragen.

Für den PoC wurde mittels Zephyr RTOS eine Firmware für BLE-Beacons auf Basis von Nordic nRF52-Chipsets erstellt. In dem Fall kamen RUUVI-Tags zum Einsatz. Die zu dem Zeitpunkt rudimentären BLE-Mesh-Fähigkeiten von Zephyr wurden so angepasst, dass von einem beliebigen Punkt innerhalb des Mesh Anfragen an alle Knoten bezüglich eines gesuchten Gerätes gestellt werden können. Jeder Knotenpunkt scannt seine Umgebung nach dem gesuchten Gerät und sendet bei Erfolg die ermittelte Signalstärke an den anfragenden Knotenpunkt. Der anfragende Punkt erhält somit eine Liste aller Knotenpunkte, in dessen Nähe das Gerät ist.

Für die Anwendung wurde für alle Knotenpunkte eine identische Firmware erstellt. Einer dieser Knoten ist mit einem Server (Raspberry Pi) verbunden, welcher über eine Serielle Schnittstelle Anfragen im Mesh auslösen kann. Für den Server wurde eine Backend-Anwendung auf Basis von Node.js entwickelt, welche mit einer lokalen PostgreSQL-Datenbank verbunden ist und über die Serielle Schnittstelle Zugriff auf den angeschlossenen BLE-Knoten hat. In der Datenbank können die absoluten Positionen aller im Mesh befindlichen festen Knotenpunkte abgelegt werden. Ein Service in der Node.js Anwendung ist für die Ortsbestimmung zuständig. Dieser leitet Standort-Anfragen an das Mesh weiter und nimmt die rückgemeldeten Signalstärken entgegen. Davon leitet der Service ungefähre Distanzen ab und führt anhand der in der Datenbank befindlichen Positionsdaten eine Triangulation durch. Für die Berechnung wird dazu ein Verfahren auf Grundlage von Linearer Regression angewandt.

Als Frontend für Positions-Anfragen und für das Anlegen der Positionen in der Datenbank wurde eine Cross-Platform App mit dem Ionic-Framework entwickelt. Die App kann die Anfragen mittels REST-API an das Backend stellen. Weiterhin bietet die App die Möglichkeit auf der Grafik eines Gebäude-Grundrisses Knotenpunkte mittels Drag-and-Drop zu platzieren. Durch die Bestimmung einer Referenz-Länge, ebenfalls mittels Drag-and-Drop, wird der Maßstab festgelegt. Für die Zuordnung der Knotenpunkte wurde die Firmware insofern erweitert, dass durch Betätigen einer Taste am Beacon dessen ID im Mesh verbreitet wird. Dieses Event wird vom Backend registriert und an die App weiter gegeben. Dadurch wird die Ersteinrichtung des festen Meshes erleichtert.

Mit dem System war es zum Abschluss-Zeitpunkt möglich die Position auf 5m genau zu bestimmen, dabei ist anzumerken, dass die Knotenpunkte ca. 10m Entfernung zueinander hatten. Die Distanz auf Grundlage der Signalstärke zu bestimmen ist sehr Fehleranfällig, da diese durch verschiedene Faktoren stark beeinflusst werden kann (Lage der Antenne, Gegenstände zwischen den Knoten, Bebauungsgrad etc.).

Mittlerweile bietet der Markt wesentlich präzisere Konzepte wie Angle-Of-Arrival bzw. Angle-Of-Departure.

Zusammenfassend lässt sich sagen, dass dieses Projekt durch seine Vielfältigkeit sehr spannend aber auch anspruchsvoll war. Es bot mir die Möglichkeit Einblicke in verschiedene Software-Tools, Mathematische Konzepte sowie Mesh-Netzwerke zu erlangen.