IoT Edge-Devices
In Zusammenarbeit mit dem OYM entwickelte Atticode GmbH eine Edge-Device-Lösung, die Fitnessdaten über MQTT, Golang und Microsoft Azure nahtlos in die Cloud überträgt. Ein modulares System für ein effizientes, flexibles und skalierbares Fitnesserlebnis.
Ausgangslage
Es ist ein bekanntes Problem in der Digitalisierung und nur schwer beizukommen: Analoge Komponenten von Drittherstellern! Sind diese fester Bestandteil im Arbeitsprozess oder Serviceangebot, müssen sie entweder ersetzt oder irgendwie auch «digitalfähig» gemacht werden.
Genau dieses spezifische Problem haben viele Fitnessstudios, welche umfassende digitale Lösungen wie FittnessApps zur Messung und Verwaltung von Trainingseinheiten und Kalorienkontrolle etc. anbieten wollen. Denn viele Fitnessgeräte sind entweder noch komplett analog oder sie sind zwar digital, verfügen aber über keinerlei Schnittstellen, worüber die Daten ausgelesen werden könnten. Bei jenen digitalisierten Geräten, welche über Schnittstellen verfügen, sind diese oft nicht mit einem offenen Standard ausgerüstet, geschweige denn dokumentiert, sondern müssen aufwändig reverse engineered werden. Auch erweisen sich die Hersteller der Geräte nicht immer als hilfsbereit resp. kooperativ, wenn es um Datenabfragen über ihre Fitnesshardware geht. All dies macht es für Studiobetreiber überaus schwierig, eine gut integrierte digitale Lösung für ihre Fitnesskunden zu erarbeiten, wenn sie über eine heterogene Gerätestaffel von verschiedenen Herstellern verfügen. Dennoch besteht für Studios durchaus die Möglichkeit, mit einem gewissen Aufwand, ihre Geräteflotte ins eigene Datennetz einzugliedern.
Einer dieser Studiobetreiber, der diesen Weg gemeinsam mit Atticode eingeschlagen hat, ist das OYM (On Your Marks). Nebst diversen Sporteinrichtungen für professionelle Leistungssportler verfügt das OYM über eine allumfassende Athletikhalle, die das Training sämtlicher Körperpartien und den Muskelaufbau ermöglicht. Bei denjenigen Geräten welche über zugängliche Schnittstellen verfügten, hatten wir vorgesehenen die Mess-, Gesundheits- oder Sport-Daten wie Rotation-Per-Minute, Geschwindigkeit, Herzfrequenz oder Kalorienverbennung usw. auszulesen. Die Mehrheit der Fitnessgeräte sollte damit digitalisiert und ans Datennetz des Kunden angeschlossen werden. Unsere geplante Zielhardware waren Marken von Fitnessgeräteherstellern wie Wattbike, Concept2, Woodway, Assault, Precor und Cycle.
Wenn hier vereinfacht vom Anschluss oder vom Einspeisen ins «Datennetz» gesprochen wird, ist eigentlich etwas Komplexeres gemeint. Hinter dieser simplifizierten Aussage steht der vielschichtige Vorgang vom Auslesen der Daten auf den Geräten, dem «Präparieren» der Daten in ein einheitliches Format auf einer dazwischen geschalteten Hardware und dem Versenden an den Cloud-Server resp. den zuständigen Data-Broker. Im Zusammenhang mit dem Präparieren der Daten wird hier erst eine Aufbereitung zur Normalisierung, d.h. Vereinheitlichung der Daten, vorgenommen. Oftmals wird dieser Vorgang auch als Datenbereinigung und -harmonisierung bezeichnet. Durch diesen Prozess werden Daten in ein einheitliches Format gebracht um Inkonsistenzen, Redundanzen und Ungenauigkeiten zu beseitigen. Dies umfasst Schritte wie die Entfernung fehlerhafter oder inkorrekter Datenpunkte, die Korrektur von Formatierungsproblemen, die generelle Anpassung von Einheiten und im speziellen Masseinheiten, die Standardisierung von Variablen und die Aufbereitung der Daten für eine konsistente Analyse und Verarbeitung.
Als Cloud-Service war von Anfang an Microsoft Azure festgelegt, da der Kunde bereits andere Infrastrukturprojekte erfolgreich damit implementiert hatte und für diesen Fall mit dem Azure IoT Hub optimale serverseitige Unterstützung gegeben war. So wurde vorgesehen, zumindest fürs Backend, komplett auf die Azure Cloud zu setzen und damit sollten alle zentralen Systeme ins Microsoft Ökosystem integriert werden.
Lösungssuche & technische Evaluation
Wie können nun die gemessenen Sport-Daten der Fitnessgeräte effizient in die Cloud übertragen werden? Die optimale Lösung ist zwar simpel aber relativ aufwändig und heisst «Edge-Device»: Ein Edge-Gerät ist eine physische Einheit, meistens ein Computer oder eine IoT-Vorrichtung, die Daten nahe ihrer Entstehungsquelle verarbeitet und analysiert. Diese Vorgehensweise minimiert Latenzzeiten, da weniger Daten über das Netzwerk übertragen werden müssen. Edge-Devices werden typischerweise in verteilten Netzwerken eingesetzt, um Echtzeitverarbeitung und -entscheidungen zu ermöglichen.
Dieses Konzept findet breite Anwendung in verschiedenen Industriezweigen, sei es für die Digitalisierung analoger Systeme zur Erfassung von Umweltdaten oder zur Prozessüberwachung in Fabriken. Im vorliegenden Fall bedeutet dies schlicht, dass jedem unserer Fitnessgeräte ein spezieller Mikrocomputer zugeordnet werden muss. Je nach den verfügbaren Schnittstellentypen des jeweiligen Geräts wird die effizienteste Kommunikationsmethode ausgewählt und mit dem Edge-Device verbunden. Letzteres ist entsprechend konfiguriert, um die gewählte Verbindungsmethode zu unterstützen und die Daten des jeweiligen Fitnessgeräts korrekt zu erfassen.
Die Wahl fiel natürlich auf das Raspberry Pi als Edge-Device: Es zeichnet sich durch seine kostengünstige Beschaffung, weite Verbreitung, hervorragende Programmierbarkeit sowie unkomplizierte Wartung und Austauschbarkeit aus. Zudem ist es mit den erforderlichen Grundkomponenten ausgestattet, darunter USB-Ports, Bluetooth, Wi-Fi und RJ45. Dabei kamen zwei verschiedene Varianten zum Einsatz, je nach Anforderungen: Das leistungsstarke Raspberry Pi 4 und der kompakte Raspberry Pi Zero.
Die möglichen Verbindungstypen zu den Fitnessgeräten konnten mit dem Raspberry alle bedient werden. In einigen Fällen war lediglich die Ergänzung eines USB-Dongles notwendig z.B. für ANT+, um die Verbindung herstellen zu können. Folgende Verbindungstypen mussten bedient werden:
- USB (Kabel): Die direkte Verbindung über ein USB-Kabel ermöglichte eine zuverlässige und stabile Kommunikation.
- RJ45 (Kabel): Die Verwendung eines Ethernet-Netzwerk-Kabels bot eine robuste Möglichkeit zur schnellen Datenübertragung.
- RS232 Serial Port (Kabel): Die Nutzung des RS232 Ports ermöglichte die Kommunikation über serielle Schnittstellen. Dies erwies sich als geeignet für spezifische Fitnessgeräte, die nur diese Art der Datenübertragung boten.
- Bluetooth Dongle: Eine drahtlose Technologie zur Kommunikation zwischen Geräten in unmittelbarer Nähe.
- ANT oder ANT+ Dongle: Mit einem speziellen USB-Dongle für ANT oder ANT+ war es möglich, eine drahtlose Verbindung zu Fitnessgeräten herzustellen.
Dank der vielfältigen Unterstützung dieser Verbindungstypen konnte die Raspberry Pi Lösung nahtlos mit einer breiten Palette von Fitnessgeräten interagieren, wodurch ein flexibles und anpassbares Gesamtsystem entstand. Um die aufwendige Kabelführung zu vermeiden und die Positionierung der Raspberry Pis zu vereinfachen, haben wir bevorzugt auf drahtlose Technologien gesetzt.
Technische Umsetzung
Die technische Umsetzung dieses Projekts involvierte eine Reihe von massgeschneiderten Softwareimplementierungen und Technologien, die in einer ausgeklügelten Kombination einen nahtlosen Fluss von Fitnessdaten von den Geräten zu den Azure Cloud-Services ermöglicht.
Für das Abfragen, die Normalisierung und Aufbereitung der Fitnessdaten sowie deren Übertragung zur Azure Cloud wurde ein Edge-Client in Golang entwickelt. Dieser Edge-Client spielte eine entscheidende Rolle bei der Datenverarbeitung vor der Weiterleitung. Das Besondere an der Architektur dieses Edge-Clients war die modulare Struktur: Abhängig vom Fitnessgerät konnten verschiedene Arten von Connectoren, Sensoren und zugehörige Treiber zur Bereitstellungszeit dynamisch kombiniert werden. Dadurch konnte für jedes vorhandene Fitnessgerät die passende Kombination von Modulen konfiguriert werden. Dieser Ansatz erlaubte Flexibilität und Skalierbarkeit, da neue Geräte einfach hinzugefügt werden können.
Die Prinzipien von Golang wie die Einfachheit der Sprache, die Unterstützung von Nebenläufigkeit und die Fokussierung auf die Effizienz machen sie zu einer hervorragenden Wahl für eine Vielzahl von Softwareprojekten. Im vorliegenden Kontext wurde Golang (auch bekannt als Go) aufgrund seiner vielseitigen Eigenschaften und technischen Vorzüge für die Entwicklung des Edge-Clients gewählt. Es zeichnet sich durch seine Leistungsfähigkeit, Geschwindigkeit und Stabilität während der Laufzeit aus. Diese Aspekte sind von besonderer Bedeutung, wenn es um das reibungslose und schnelle Sammeln und Verarbeiten von Fitnessdaten in Echtzeit geht. Die modulare Struktur des Edge-Clients, die abhängig von den Fitnessgeräten verschiedene Connectoren, Sensoren und Treiber dynamisch kombinieren konnte, war mittels Golang problemlos zu implementieren. Die Flexibilität dieser Sprache erlaubte es, schnell und effektiv auf unterschiedliche Anforderungen einzugehen und verschiedene Komponenten miteinander zu verknüpfen. Dies erwies sich als äusserst vorteilhaft, um sowohl bestehende als auch zukünftige Fitnessgeräte nahtlos in das Ökosystem einzubinden.
Als Kommunikationsprotokoll zwischen den Edge-Geräten und der Azure Cloud wurde MQTT ausgewählt. MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Protokoll, das sich hervorragend für IoT-Anwendungen eignet. Es ermöglicht eine zuverlässige und effiziente Übertragung von Nachrichten, wodurch die Fitnessdaten sicher und effektiv transportiert werden können. MQTT basiert auf dem Publish-Subscribe-Modell, bei dem Edge-Geräte als Publisher fungieren, die Daten senden, während die Azure Cloud als Subscriber fungiert, der die Daten empfängt und verarbeitet.
Zur Vereinfachung der Konfiguration der Edge-Device wurde Docker verwendet, um spezifische IoT-Images für diese Geräte zu erstellen. Azure IoT spielte ebenfalls eine entscheidende Rolle, indem es ermöglichte, die entwickelten Module auf den Edge-Device bereitzustellen. Durch die Angabe der Device-ID kann das passende "Modul" ganz einfach auf dem entsprechenden Edge-Device deployed werden. Zusätzlich werden alle relevanten Parameter und Konfigurationen, einschliesslich des Fitnessgerätetyps, der Telemetrie- und Sensordaten, direkt auf das Gerät übertragen. Diese Herangehensweise ermöglicht eine vollautomatisierte und effiziente Konfiguration und Deployment Pipeline für die Edge-Devices.
Das Projekt nutzt eine Reihe von Azure-Diensten, die nahtlos ineinandergreifen, um eine leistungsstarke und skalierbare Lösung zu schaffen. Dazu gehörten die Azure Cloud selbst, der Azure IoT Hub für die Verwaltung der Gerätekommunikation, der Azure App Service zur Bereitstellung von Anwendungen, Azure Functions für serverlose Datenverarbeitung, Azure Synapse DB für Datenanalysen und Berichterstattung sowie Azure Data Lake für die Speicherung und Verwaltung sehr grosser Datenvolumen. Der Azure IoT Hub Device Provisioning Service (DPS) spielte eine wesentliche Rolle bei der Skalierung der IoT-Geräte, indem er eine automatisierte Gerätebereitstellung ermöglichte.
Wettkampf Dashboard
Das OYM Dashboard erfüllt die Funktion, Live-Sportdaten auf einem Anzeigedisplay direkt im Fitnessstudio darzustellen. Es eröffnet die Möglichkeit für beliebig viele Wattbikes, Rudergeräte und andere Geräte an einem Kompetitions-Wettkampf teilzunehmen. Aktive Geräte werden automatisch im Dashboard angezeigt, um nahtlos am Wettbewerb teilnehmen zu können.
Technisch betrachtet, erfolgt der Prozess auf folgende Weise: Über die SignalR-Websocket-Implementierung von Microsoft verbindet sich der Typescript-Client des Dashboards mit dem Azure Event Hub. Diese Verbindung ermöglicht ein effizientes Streaming von umfangreichen Datensätzen – sogenanntes Big-Data-Streaming – auf den eigens entwickelten Webservice, der mit dem Dashboard in Verbindung steht. Hierbei agiert der Azure Event Hub als zentraler Knotenpunkt, der die eingehenden Sportdaten von den aktiven Geräten empfängt und an den Dashboard-Client weiterleitet.
Durch diese Architektur wird eine reibungslose und schnelle Kommunikation zwischen den verschiedenen Sportgeräten und dem Dashboard ermöglicht. Dabei werden die Sportdaten in Echtzeit erfasst, übertragen, verarbeitet und visuell aufbereitet. Dies schafft eine interaktive Online-Wettkampfumgebung, die den Teilnehmerinnen und Teilnehmern ein lebendiges und begeisterndes Erlebnis bietet und zu Höchstleistung antreibt!
Schlussfolgerung
Insgesamt schuf die Kombination der oben erwähnten Technologien und Azure-Services ein robustes und effizientes System zur Erfassung, Verarbeitung, Analyse und Visualisierung von Fitnessdaten aus verschiedenen Geräten und ermöglichte so die Implementierung einer soliden Datastreaming-Pipeline im Bereich Gesundheit und Fitness.
Die Wahl der Technologien erwies sich als äusserst gelungen: Die Kombination aus MQTT, Golang und den Schnittstellen zu Fitnessgeräten sowie Azure-Diensten liess sich relativ reibungslos in das Projekt integrieren. Die Verwaltung von Konfigurationen und Deployment der Edge-Geräte erfordert minimalen Aufwand, da dieser Prozess weitgehend automatisiert ist.
Gesamthaft gesehen gestaltet sich Datensammlung und -auswertung als fliessender Prozess, der dank der Nutzung von Azure Synapse und Data Lake mühelos gehandhabt und persistiert werden kann. Die Kombination aller verwendeten Technologien ermöglicht eine effektive Verarbeitung und Analyse der gesammelten Daten, wodurch wertvolle Einblicke gewonnen werden können. Insgesamt zeigt sich, dass die gewählten Technologien nicht nur effizient miteinander harmonieren, sondern auch eine solide Grundlage für die gegenwärtigen und zukünftigen Anforderungen des Projekts bieten.
Die Wartung sowie die Möglichkeiten zur Weiterentwicklung, insbesondere die Integration zusätzlicher Fitnessgerätemodelle mit neuen Treibern für Sensoren im Golang Edge-Client, sind ohne nennenswerten Aufwand möglich. Grössere Hürden könnten sich jedoch durch Änderungen im Azure-Umfeld ergeben, welche Aktualisierungen im restlichen Service-Stack nach sich ziehen könnten.
Für Unternehmen, die ähnliche Anforderungen oder Schwierigkeiten im Bereich der Digitalisierung von Fitnessgeräten, Messstationen oder Prozessüberwachung haben, bieten wir unsere Unterstützung gerne an. Unser Fachwissen und unsere massgeschneiderten Lösungen können Ihnen bei der Bewältigung Ihrer Herausforderungen helfen. Kontaktieren Sie uns um Ihre Anliegen zu besprechen und gemeinsam eine passende, innovative Lösung zu finden.
Kontaktieren Sie uns
Kontaktieren Sie uns um Ihre Anliegen zu besprechen und gemeinsam eine passende, innovative Lösung zu finden.
Kontaktieren Sie uns
Haben Sie Fragen oder Feedback? Wir sind hier, um zu helfen. Senden Sie uns eine Nachricht oder vereinbaren Sie direkt einen Termin.