Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen

Die Seite wird erstellt Hauke-Heda Günther
 
WEITER LESEN
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
Nachhaltige Kommunikationsnetze

                               Universität Bremen

                              Prof. Dr. Anna Förster

                                Bachelorarbeit

          Plattfuÿ lässt grüÿen
Automatische Aufzeichnung und Analyse der
       Qualität von Fahrradwegen
                                       von

                               Dmytro Reznik
                                Matr.-Nr. 3033882

                           Bremen, den 28. Februar 2021

Betreut durch:

Prof. Peter Haddawy

Prof. Dr. Anna Förster

Dipl.-Ing. Jens Dede
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
Ich versichere, daÿ die vorliegende Arbeit  bis auf die ozielle Betreuung durch

den Lehrstuhl  ohne fremde Hilfe von mir durchgeführt wurde.    Die verwendete

Literatur ist im Literaturverzeichnis vollständig angegeben.

Bremen, den 28. Februar 2021

(Dmytro Reznik)
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
ZUSAMMENFASSUNG

Im Rahmen dieser Arbeit wurde ein Projekt mit dem Ziel konzipiert, ein System zur

Erfassung von Daten über die Umweltqualität und Radwege zu entwickeln, die in

ganz Deutschland für Radfahrer sehr verbreitet sind und deren Hauptverbindung die

Radfahrer sein werden sich. Die Idee des Pro jekts ist es, ein spezielles mobiles Gerät

zu schaen, das mit einigen Sensoren ausgestattet ist, die ein Radfahrer auf eine

Reise mitnehmen und mit seiner Hilfe Daten über die Umgebung sammeln kann.

Diese Daten würden unter Verwendung eines speziellen Zwischengeräts in einen

zentralen Speicher übertragen, in dem wiederum viele andere Radfahrer oder einfach

jeder die Bewertungen verschiedener Pfade zwischen zwei von ihm ausgewählten

Punkten sehen könnten.

Um die Benutzererfahrung zu verbessern, sollte ein solches System so leicht und

automatisiert wie möglich sein.

Zwei Personen waren an der Entwicklung des Systems beteiligt, und die Aufgaben

des Autors dieses Dokuments waren die Entwicklung einer mobilen Anwendung für

das Android-Betriebssystem, die eine Übergangsverbindung zwischen dem Server

und dem Mikrocontroller zur Steuerung von Sensoren darstellt und die Formulie-

rung und Programmierung einer Formel zur Berechnung der Bewertungen verschie-

dener Pfade zwischen zwei Punkten unter Verwendung der in der Serverdatenbank

gespeicherten Informationen.

Das Endergebnis der Arbeit war neben diesem Dokument und der Arbeit eines

Kollegen ein System, das aus drei Teilen bestand.     Der erste Teil befasst sich mit

der Erfassung von Anfangsdaten über die Umgebung mithilfe verschiedener auf dem

Gerät installierter Sensoren. Der zweite überträgt Daten von den Sensoren mithilfe

von Mikronetzen über das Internet an den Netzwerkspeicher. Der letztere Teil wird

als Aufbewahrungsort für die übertragenen Daten und als Mittel zur Interaktion

mit dem Benutzer verwendet, um diese Daten zu verarbeiten und die Bewertungen

der verschiedenen Pfade zwischen den beiden Punkten anzuzeigen.

Basierend auf den Ergebnissen von Tests dieses Systems können Schlussfolgerungen

gezogen werden, dass das System ist stabil genug, um im Feld eingesetzt zu werden,

dass beim Vorhandenseins des Zugangs zum Internet, werden Daten schnell genug

übertragen und verarbeitet, was ein wichtiges Argument sein kann, um die Öent-

lichkeit auf das System aufmerksam zu machen und dass das System so weit wie

möglich automatisiert ist.

Zusammenfassend lässt sich unter Berücksichtigung der obigen Testergebnisse zu-

sammenfassen, dass das Pro jekt ziemlich weit verbreitet werden kann, was wiederum

zu einem gröÿeren Interesse der Menschen an Fragen der Ökologie und des Umwelt-

schutzes führen und die Lebensbedingungen jedes Einzelnen verbessern kann.
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
INHALTSVERZEICHNIS

Zusammenfassung                                                                          1
1 Einführung                                                                             4
2 Anforderungsspezikationen                                                             7
  2.1   Allgemeine Anforderungen zum Projekt . . . . . . . . . . . . . . . . .           7

  2.2   Hardware Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . .         8

        2.2.1   Server Hardwareanforderungen        . . . . . . . . . . . . . . . . .    8

        2.2.2   Kommunikationskanäle von Sensorsteuerung und Sender             . . .    9

  2.3   System und Software Anforderungen         . . . . . . . . . . . . . . . . . .    9

        2.3.1   Anforderungen für ein Sender      . . . . . . . . . . . . . . . . . .    9

        2.3.2   Qualitätsberechnungsalgorithmus       . . . . . . . . . . . . . . . .   10

  2.4   Vorgehensschema des Projekts . . . . . . . . . . . . . . . . . . . . . .        10

        2.4.1   Anforderungen     . . . . . . . . . . . . . . . . . . . . . . . . . .   10

        2.4.2   Versionskontrollsystem: gitlab    . . . . . . . . . . . . . . . . . .   11

        2.4.3   Git-ow-Workow . . . . . . . . . . . . . . . . . . . . . . . . .       11

        2.4.4   Kanban-Board . . . . . . . . . . . . . . . . . . . . . . . . . . .      12

        2.4.5   Dokumentationsverwaltung        . . . . . . . . . . . . . . . . . . .   12

3 Hardware und eingebettete Software                                                    13
  3.1   Im Projekt verwendete Sensormodule        . . . . . . . . . . . . . . . . . .   13

  3.2   Kommunikationskanäle der Sensorsteuermodul und einzelner Sensoren               14

        3.2.1   Kommunikation der Sensoren mit Sensorsteuermodul            . . . . .   14

        3.2.2   Kommunikation den Sensorsteuermodul mit Android Anwen-

                dung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .    14

4 Android-Anwendungssoftware (GeliOSMobile)                                             16
  4.1   Vordergrund der Anwendung . . . . . . . . . . . . . . . . . . . . . . .         16

        4.1.1   User Interface (UI) der Hauptanzeige      . . . . . . . . . . . . . .   17

        4.1.2   Testwerkzeuge der Anwendung . . . . . . . . . . . . . . . . . .         18

        4.1.3   Benachrichtigungsleiste . . . . . . . . . . . . . . . . . . . . . .     19

  4.2   Hintergrundprozesse des GeliOSMobile Anwendung            . . . . . . . . . .   21

        4.2.1   Vordergrunddienste . . . . . . . . . . . . . . . . . . . . . . . .      22

        4.2.2   Bluetooth Low Energy (BLE) Verbindung           . . . . . . . . . . .   22

        4.2.3   Android System Broadcasts       . . . . . . . . . . . . . . . . . . .   22

        4.2.4   Datenverarbeitung     . . . . . . . . . . . . . . . . . . . . . . . .   25

        4.2.5   Benachrichtigungskanäle     . . . . . . . . . . . . . . . . . . . . .   25

        4.2.6   Beenden des Dienstes . . . . . . . . . . . . . . . . . . . . . . .      25

  4.3   Informationsverlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . .     25

        4.3.1   Kommunikation von Sensorebene mit Android Anwendung               . .   26

        4.3.2   Kommunikation von Android mit dem Server            . . . . . . . . .   27
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
Inhaltsverzeichnis                                                                           3

5 Serversoftware                                                                            28
   5.1   Benutzer Interface       . . . . . . . . . . . . . . . . . . . . . . . . . . . .   28

   5.2   Rundungswerte        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   28

   5.3   Berechnung der Pfadqualität . . . . . . . . . . . . . . . . . . . . . . .          29

   5.4   Kommunikationskanäle von GeliOSWeb . . . . . . . . . . . . . . . . .               30

         5.4.1   Kommunikationskanäle der Android Anwendung mit dem Server 31

         5.4.2   Kommunikation des Servers mit Endbenutzer              . . . . . . . . .   32

6 Testergebnisse                                                                            33
   6.1   Erster Versuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .       33

         6.1.1   Auswertung der Testergebnisse von dem ersten Versuch und

                 Verbesserungsmöglichkeiten         . . . . . . . . . . . . . . . . . . .   34

   6.2   Zweiter Versuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .        34

         6.2.1   Auswertung der Testergebnisse von dem zweiten Versuch              . . .   34

   6.3   Zusätzliche Tests und Schlussfolgerungen         . . . . . . . . . . . . . . . .   35

7 Zusammenfassung und Ausblick                                                              38
   7.1   Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . .          38

   7.2   Ausblick     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   39

A Quellcode                                                                                 40
   A.1   ratings.py     . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   40

   A.2   ble_device_row.xml         . . . . . . . . . . . . . . . . . . . . . . . . . . .   42

Abbildungsverzeichnis                                                                       44
Tabellenverzeichnis                                                                         45
Abkürzungsverzeichnis                                                                       47
Literaturverzeichnis                                                                        48
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
KAPITEL 1

                                     Einführung

Das Thema Ökologie und Umweltschutz ist in diesem Stadium der menschlichen

Entwicklung ziemlich akut.        Luftverschmutzung, Treibhauseekt, Bodendegradati-

on, Abfallprobleme und Umweltverschmutzung sind nur einige der aktuellen Proble-

me. Wenn man Daten über den Zustand der Umwelt untersucht, kann man vielleicht

eine unangenehme Schlussfolgerung ziehen, dass es im Moment schwierig ist, die ne-

gativen Auswirkungen einer Person auf die umgebende Realität zu übertreiben. Dies

ist auf viele Faktoren zurückzuführen, darunter:

     ˆ   Finanzielle Gründe (hohe Ausrüstungskosten, Unmöglichkeit der Modernisie-

         rung), die Schwierigkeiten beim frühzeitigen Übergang zu umweltfreundlicheren

         Alternativen beispielsweise in der Energiewirtschaft verursachen.

     ˆ   Inkonsistente Maÿnahmen bei der Umweltüberwachung der zuständigen Behör-

         den in verschiedenen Regionen, die zu Konikten führen, wenn versucht wird,

         Anforderungen und Ansätze zu standardisieren.

     ˆ   Geringes Bewusstsein der Menschen für den tatsächlichen ökologischen Zustand

         des Planeten.

Die aktuelle Situation ermutigt internationale Organisationen, weiterhin nach ver-

besserten Wegen zu suchen, um das Ökosystem wiederherzustellen und zu erhal-

ten, die Umweltkontrolle zu verbessern, Produktionsaktivitäten und regulatorische

Rahmenbedingungen zu planen und Möglichkeiten zur Finanzierung neuer grüner
             1
Projekte        zu nden.   Auf der Suche nach solchen neuen Wegen zur Entwicklung

des ökologischen Gleichgewichts arbeiten viele internationale Organisationen unter

der Schirmherrschaft der Vereinten Nationen:         United Nations Environment Pro-
                      2                                                                3
gramme (UNEP) , United Nations Economic Commission for Europe (UNECE) [2],
                                        4
Global Environment Facility (GEF) , die die Entwicklung des internationalen Um-

weltrechts regeln, die Anwendung von Chemikalien, Entwicklung einer Strategie zur

Erhaltung der biologischen Vielfalt und zur nachhaltigen Nutzung natürlicher Res-

sourcen und vieles mehr.        Weltweit wurden umfangreiche Arbeiten internationaler

und regionaler Organisationen gestartet, um die Verbreitung von Informationen über

die modernsten umweltfreundlichen technologischen Methoden zu fördern (Global

Nest).

Heute verändert sich die Weltwirtschaft aufgrund der eingeführten Gesetze in Rich-

tung Umweltentwicklung.         Es werden viele Anstrengungen unternommen, um um-

weltfreundlichere und menschlichere Produktionsprozesse und deren Produkte zu

schaen:      von der Installation spezieller Reinigungslter für Fabriken bis zur Her-

stellung von Materialien aus recycelten Materialien und der Anwendung spezieller

 1
   Stand 28.02.2021:        https://www.eea.europa.eu/soer/2020/soer-2020-executive-summary-
   translations/okruzhaiushchaia-srieda-sostoianiie-i-pierspiektivy-2020[1]
 2
   Stand 28.02.2021: https://www.unep.org/
 3
   Stand 28.02.2021: https://unece.org/
 4
   Stand 28.02.2021: https://www.thegef.org/
Plattfuÿ lässt grüÿen Automatische Aufzeichnung und Analyse der Qualität von Fahrradwegen
5

Recyclingcodes auf verschiedene Materialien, die angeben, wie dieses Material ver-

arbeitet und sortiert werden soll Dadurch werden die negativen Auswirkungen ver-

schiedener Arten von Abfallprodukten der Gesellschaft auf die Umwelt verringert.

Infolgedessen verbessert diese Modikation die allgemeine Lebensqualität aller Le-

bewesen auf der Erde.    In Bezug auf den Menschen zielen solche Maÿnahmen in

erster Linie darauf ab, Morbidität, Stress und die Lebenserwartung eines Menschen

zu verringern.

Es ist interessant festzustellen, dass die Menschen aktiver auf Umweltinitiativen

ihrer Regierungen reagieren und sich direkt an solchen Programmen beteiligen.

Viele in den letzten Jahren durchgeführte Programme waren recht erfolgreich und

haben spürbar positive Ergebnisse gebracht. Ich möchte auf das erfolgreiche Pro jekt

der Sortierung menschlicher Abfälle hinweisen, das mittlerweile für viele Menschen

alltäglich geworden ist. Solche Pro jekte fördern die Selbstorganisation der Bürger,

ermöglichen es, zur gemeinsamen Sache der Verbesserung des Zustands des Planeten

beizutragen und alle für die Umwelt verantwortlich zu machen.

In den letzten zehn Jahren ist die politische Bewertung der Grünen Parteien ge-

stiegen und bietet neben anderen Lösungen Programme an, die verständlich sind

und der Mehrheit der Bürger nahe stehen:

  ˆ    Reduzierung der CO2-Emissionen

  ˆ    Ablehnung fossiler Energiequellen mit dem Übergang zu sauberer Energie

  ˆ    Begrenzung der Entwaldung

  ˆ    Ökologisierung von Städten und Schaung eines besonderen Ökosystems in

       ihnen mit zahlreichen Parks, Fuÿgängerzonen und vielem mehr

Neben globalen Parteibewegungen, die die Einstellung zum Lebensstandard radikal

verändern sollen, gibt es auch viele unabhängige Umweltgruppen. In vielen Städten

auf der ganzen Welt versammeln sich Menschen zu Verbänden, Gewerkschaften,

zeigen Beispiele für mutige und kreative Ansätze, testen verschiedene Arten der

Organisation von Leben und Arbeiten und tauschen Ideen aus.[1]

Solche eektiven Bemühungen der Menschen zeigen den Wunsch der Bevölkerung,

wirklich am Prozess der Veränderung der Lebensbedingungen teilzunehmen, die

Absicht, eine harmonischere Welt zu schaen und gleichzeitig die negativen Aus-

wirkungen der Industrialisierung auf die Umwelt zu minimieren.     Viele innovative

Entwicklungen als Reaktion auf die sich ändernden Ansichten der Menschen sollen

der Welt ein neues Format umweltfreundlicher Technologien bieten sowie die Suche

nach kreativen Lösungen für die Erfassung von Daten zum Zustand der Umwelt

unter Berücksichtigung die Bereitschaft der Menschen, sich an Forschungsdaten zu

beteiligen, bei denen jeder seinen eigenen realisierbaren Beitrag zum Forschungspro-

jekt leisten kann.

Aber es ist zu verstehen:   Je schwieriger die Bedingungen für die Teilnahme an

solchen Projekten sind, desto weniger Menschen sind bereit, an ihnen teilzuneh-

men.    Dies bedeutet, dass es notwendig ist, ein System zu schaen, das so wenig

Aufmerksamkeit wie möglich erfordert, um Aufmerksamkeit zu erregen von seinem

Teilnehmer. Ein Beispiel ist eine Box mit Sensoren, die Daten über die Qualität von

beispielsweise Luft in der Umgebung erfassen. Eine solche Box kann auf eine Reise

mitgenommen werden, was für den Endbenutzer fast keinen Aufwand kostet.           Es

ist wichtig, dass der Bewegungsprozess stattndet und dementsprechend an jedem

Ort in der getesteten Region eine umfangreichere Datenerfassung erfolgt, um ein

vollständigeres und detaillierteres Bild der Forschungsergebnisse zu erhalten.   Eine
6                                                                        1. Einführung

solche mobile Ministation zum Sammeln von Informationen kann häug verwendet

werden, um eine Vielzahl von Indikatoren und vor allem Daten zur Luftqualität zu

sammeln.

Heutzutage kann eine Vielzahl von Studien aufgeführt werden, die darauf abzie-

len, relevante Berichte über den Zustand der Luft zu erhalten, beispielsweise die

durchschnittliche Konzentration von Staub, Kohlendioxid und anderen schädlichen

Substanzen darin.        Mittlerweile wird weltweit ein groÿes Netzwerk von Stationen

bereitgestellt, die qualitativ hochwertige Daten zur Umgebung sammeln. Diese Er-
                                                              5
gebnisse von jedem dieser Zentren können zum Beispiel hier        eingesehen werden. Es

stellt sich jedoch die Frage: Was kann getan werden, um die Indikatoren, die sich

negativ auf Natur und Mensch auswirken, weiter zu reduzieren, oder wie können

die Bedingungen eines bestimmten Menschen im Alltag (auf der Straÿe) verbessert

werden?      Wie kann die genauesten Informationen über wirklich günstige Verkehrs-

wege in Bezug auf die Luftreinheit mit einem Mindestgehalt an Kohlendioxid oder

chemischen Elementen erhalten werden, die für die Gesundheit ungünstig sind? Ins-

besondere solche Fragen werden relevant, wenn der Zweck einer solchen Bewegung

die Verbesserung der Gesundheit, die Wiederauüllung von Kraft und Energie ist,

beispielsweise Gehen oder Radfahren, Joggen.        Wie oft sehen wir Läufer auf den

Straÿen laufen, die die verschmutzte Luft einatmen, und wie schön wäre es für sie,

die harmlosesten Strecken der Stadt zu kennen und im Voraus den umweltfreund-

lichsten Lauf zu planen?

Wie wird sich die bürgerliche Position einer Person ändern, die aktiv an der ökolo-

gischen Verbesserung ihrer Region teilnimmt und die Ergebnisse ihrer Arbeit zum

Wohle von Familie und Freunden sieht?

 5
     Stand 28.02.2021: https://aqicn.org
KAPITEL 2

                   Anforderungsspezikationen

In diesem Kapitel werden die grundlegenden Anforderungen und Eigenschaften für

die Teile des Systems deniert, die für diese Arbeit entwickelt wurden.

Das GeliOS-Projekt wurde in erster Linie als dynamisches System zur Messung der

Qualität von Radwegen konzipiert, an dem jeder teilnehmen kann.        Um die Auf-

merksamkeit der Öentlichkeit auf das Projekt zu lenken, wurde versucht, die Inter-

aktion mit dem System so weit wie möglich zu vereinfachen und den gröÿten Teil der

Routine zu automatisieren, um die Benutzererfahrung zu verbessern, wobei die Ver-

bindung einer mobilen Anwendung am schwierigsten ist das Android-Betriebssystem

mit einem Modul, das Sensoren steuert. Der Autor ist überzeugt, dass es bei ausrei-

chender Popularität und Verbreitung dieses Projekts auf der Grundlage von Daten,

die von Menschen auf der ganzen Welt erhalten wurden, möglich sein wird, eine

umfassendere Analyse der Umweltverschmutzung in verschiedenen Regionen durch-

zuführen.

Neben der Benutzerfreundlichkeit des Systems spielt der Materialpreis eine wichtige

Rolle. Je preiswerter die Ausrüstung ist, desto weniger Geld wird für die Bereitstel-

lung und Wartung des Systems selbst ausgegeben und desto attraktiver wird es für

Endbenutzer. Es war jedoch notwendig, in dieser Angelegenheit ein Gleichgewicht

zwischen Preiswertigkeit, Batterielebensdauer, Qualität der erhaltenen Daten und

Entwicklungszeit zu nden. Infolgedessen erhielt das Pro jekt eine Übergangsverbin-

dung zwischen dem Server, auf den jeder zugreifen konnte, und dem Gerät, auf dem

alle erforderlichen Messungen durchgeführt wurden. Dieser Link ist ein Mobiltelefon

mit einer speziellen Anwendung für die Datenübertragung.      Dieser Ansatz ermög-

lichte es, die Kosten des Systems etwas zu senken, da die überwiegende Mehrheit

der Menschen dieses Gerät bei sich hat.

Da die Zielgruppe des Projekts Personen sind, die ein Fahrrad zur Bewegung be-

nutzen, wird davon ausgegangen, dass diese bestimmte Personengruppe mit den

erforderlichen Sensoren zur Messung der Umgebung ausgestattet ist. Dies bedeutet,

dass die Sensoren wie das Steuermodul so klein wie möglich sein sollten, damit sie

auf eine Reise mitgenommen werden können. Darüber hinaus sollte das System nach

dem Anschlieÿen an das Telefon so autonom wie möglich sein, um den Radfahrer

nicht von der Straÿe abzulenken.

2.1     Allgemeine Anforderungen zum Projekt

Die Hauptaufgabe des Pro jekts bestand darin, ein System aufzubauen, das aus:

  ˆ   eine Reihe von Sensoren zum Sammeln von Daten über die Qualitätsmerkmale

      der Umgebung,

  ˆ   einen Sender, der Daten über das Internet übertragen kann und eine ausreichen-

      de Abdeckung für die kontinuierliche Datenübertragung zum Server aufweist,

  ˆ   einen Server zum Sammeln und Verarbeiten eingehender Daten,
8                                                     2. Anforderungsspezikationen

um letztendlich die Qualität eines oder mehrerer Pfade zwischen zwei bestimmten

Punkten auf der Karte zu bestimmen. Die Sensoren und der Sender sollten so exibel

wie möglich sein und sich im Idealfall problemlos in die Umgebung integrieren lassen.

Es ist beabsichtigt, dass ihre Verwendung auf Radfahrer abzielt, um die Qualität

bestimmter Radwege zu ermitteln. Das heiÿt, die Hauptaufgabe des Projekts besteht

darin, ein Qualitätskontrollsystem für Radwege zu schaen.

Zusätzlich zu den primären wurden auch die sekundären Aufgaben festgelegt, die

vor oder bereits im Entwicklungsprozess ausgedrückt wurden. Unter ihnen waren:

    ˆ   Miniatur des Senders und der Sensoren,

    ˆ   Minimaler Stromverbrauch für maximale Betriebszeit des Geräts,

    ˆ   Verfügbarkeit von Geräten auf dem Markt oder bei der überwiegenden Mehrheit

        der Zielgruppe,

    ˆ   Angemessene Kosten für Sensoren und Steuermodule sowie Datenübertragung.

Diese Arbeit wurde zwischen zwei Autoren aufgeteilt und die Aufgaben des Autors

dieses Artikels waren:

    1. Erstellung und Programmierung der Übergangsverbindung zwischen Sensor-

        steuerung und Server,

    2. Bereitstellung des gröÿtmöglichen Abdeckungsbereichs für die Kommunikation

        mit dem Server,

    3. Hinzufügen von Statistiken für weitere Analysen,

    4. Die Möglichkeit, Daten direkt auf dem Übertragungsgerät zu überwachen,

    5. Programmieren eines Algorithmus zur Berechnung der Qualität des Radwegs

        zwischen zwei Punkten auf der Karte.

Die Arbeit von Ivan Reichert[3] beschäftigt sich hingegen mit:

    ˆ   Die Messeinrichtung auf Basis von einem ESP32-Mikrocontroller ist von Herrn

        Ivan Reichert gefertigt

    ˆ   Der Server für die Lagerung und die Auswertung von den gemessenen Daten

        ist von Herrn Ivan Reichert aufgesetzt, konguriert und programmiert. Auÿer-

        dem sind von Ihm die Koordinaten-Umrechnungsskripten und das Webinterface

        erstellt.

2.2       Hardware Anforderungen

In diesem Unterthema werden die grundlegenden Anforderungen für den Hardware-

teil des Pro jekts in Bezug auf den Sender und den Algorithmus zur Berechnung der

Qualitätsmerkmale des Pfads berücksichtigt.      Eine detailliertere Beschreibung der

verwendeten Sensoren, ihres Aufbaus, ihrer Kommunikationsschnittstellen und des

Funktionsprinzips ndet sich in der Arbeit meines Kollegen, der diesen speziellen

Teil des Pro jekts eingehender untersucht und zusammengestellt hat[3].

2.2.1 Server Hardwareanforderungen
Für einen stabilen Betrieb von GeliOSWeb ist es wünschenswert, dass der Server

die folgenden Anforderungen erfüllt:

    ˆ   2 CPU-Kerne

    ˆ   2 GB RAM

    ˆ   3 GB Speicherplatz
2.3. System und Software Anforderungen                                                9

     ˆ   Verbindung mit dem Internet

     ◦   (optional) Unterbrechungsfreie Stromversorgung (USV)

Auf der oziellen Website des Django-Projekts gibt es keine Mindestsystemanfor-

derungen, da sie stark von den Entwicklern und ihren Zielen abhängen, wobei die

verschiedenen Bibliotheken, die während des Projekts hinzugefügt wurden und di-

rekt geschriebene Algorithmen berücksichtigt werden müssen.          Bei der Erstellung

der Systemanforderungen für diesen Teil des Projekts gingen der Autor des Artikels

und sein Kollege von den Fähigkeiten eines modernen Budget-Computers (Servers)

aus, der in der Lage ist, ohne sichtbare Verzögerungen auf mehrere Dutzende oder

Hunderte von Anfragen gleichzeitig zu reagieren, da das Projekt keine komplexen

Algorithmen für die Benutzerinteraktion und -verarbeitung beinhaltet. Mit der ver-

tikalen Skalierung des Pro jekts ist es natürlich möglich, noch mehr Anfragen in

einem bestimmten Zeitraum zu bearbeiten.

Angesichts des plattformübergreifenden Charakters und der relativ geringen Sy-

stemanforderungen für die Ausführung einer Kopie von GeliOSWeb auf einem Server

besteht theoretisch die Möglichkeit, ein Projekt auf RaspberryPi zu starten. Diese

wurde jedoch nicht getestet und ihre Leistung wurde in der Praxis nicht bestätigt.

2.2.2 Kommunikationskanäle von Sensorsteuerung und Sender
Für die Kommunikation zwischen dem unten beschriebenen Sender und der Sen-

sorsteuerung wird eine Bluetooth-Verbindung verwendet.          Dies bedeutet, dass der

Controller Daten über das Bluetooth-Netzwerk übertragen kann. Der Sender selbst

muss wiederum die Möglichkeit zur Kommunikation über Bluetooth bieten, aber

zusätzlich Daten über das Internet übertragen können. Für eine maximale Interne-

tabdeckung muss der Sender auÿerdem in der Lage sein, mobiles Internet (3G, 4G

oder vergleichbar) oder WLAN zu verwenden.

2.3          System und Software Anforderungen

In diesem Abschnitt werden die Softwareanforderungen für die Implementierung des

Projekts berücksichtigt.

2.3.1 Anforderungen für ein Sender
Als Beispiel für ein Gerät, das die in den obigen Abschnitten beschriebenen An-

forderungen vollständig erfüllt, wurde ein Smartphone ausgewählt, das auf dem

Android-Betriebssystem basiert.       Die Auswahl wurde auch aus folgenden Gründen

erleichtert:

     ˆ   Eine gewisse Orientierung in der Programmiersprache, die zum Erstellen von

         Anwendungen für die Zielplattform verwendet wird.

     ˆ   Orientierung an den Softwarefunktionen der Zielplattform selbst.

     ˆ   Es besteht eine hohe Wahrscheinlichkeit, dass die Zielgruppe (im Rahmen die-

         ser Arbeit Radfahrer in Deutschland) das Gerät bereits verwendet. Wenn die
                 1
         Statistik   der Anzahl von Smartphone-Nutzer in Deutschland für 2019 mit der
                                                     2
         Gesamtzahl der im Land lebenden Menschen        verglichen wird, kann eine Ver-

 1
     Stand       28.02.2021:              https://www.statista.com/statistics/461801/
   number-of-smartphone-users-in-germany/
 2
   Stand 28.02.2021: https://worldpopulationreview.com/countries/germany-population
10                                                      2. Anforderungsspezikationen

         mutung geäuÿert werden, dass die Wahrscheinlichkeit, eine Person mit einem

         Smartphone auf der Straÿe zu treen, etwa   69,1%   beträgt

     ˆ   Einige zusätzliche Funktionen, die die Benutzererfahrung verbessern (Monitor,

         Benachrichtigungssystem, . . . ).

2.3.2 Qualitätsberechnungsalgorithmus
Der Algorithmus zur Berechnung der qualitativen Eigenschaften eines Pfades ist in

der Programmiersprache Python geschrieben und steht in enger Beziehung zu dem

in [3] Arbeit beschriebenen System. Dies impliziert die Notwendigkeit von Lösungen

wie:

     ˆ   Django Framework [4] als Übergangsverbindung zwischen Datenbank und Co-

         de,

     ˆ   Google Maps API als Algorithmus zum Aunden der kürzesten Wege zwischen

         zwei Punkten,

     ˆ   Python als Interpreter.

Die Arbeit dieses Algorithmus wurde ausgeführt und war ursprünglich für das Linux-

Betriebssystem konzipiert, da es unter Serversystemen sehr beliebt ist.        Es gibt

jedoch keinen theoretischen Grund zu der Annahme, dass der Algorithmus unter

dem Betriebssystem der Windows-Familie nicht funktioniert.

2.4        Vorgehensschema des Projekts

Da mehrere Teilnehmer an dem Pro jekt beteiligt sind, besteht eine relativ hohe

Wahrscheinlichkeit für verschiedene Arten von Konikten, was dazu führt, dass der

Entwicklungsprozess organisiert werden muss. Vor Beginn der Entwicklung wurden

verschiedene Techniken und Softwareprodukte für die Zusammenarbeit vorgeschla-

gen.

2.4.1 Anforderungen
Verfügbarkeit des Quellcodes für jeden Teilnehmer zu jeder Zeit.        Dies bedeutet,

dass es ein System benötigt wird, das sich auf einem Remote-Server bendet und

auf das jede Seite Zugri haben würde.

Minimierung von Eingrien in die Arbeit jedes Projektteilnehmers, einschlieÿlich:

     ˆ   Ein System, das den Quellcode von Teilen der Anwendung jedes Teilnehmers

         gemeinsam nutzt, aber jederzeit auch eine funktionierende Zusammenstellung

         der gesamten Anwendung hat. Diese Anforderung ist erforderlich, damit jeder

         Teilnehmer seine Arbeitsumgebung unabhängig anpassen kann, ohne die Um-

         gebung des Kollegen zu beeinträchtigen.   Auÿerdem sollte jederzeit die Mög-

         lichkeit bestehen, die Implementierung ihrer eigenen Funktionen unabhängig

         zu testen, ohne einen zweiten Teilnehmer einzubeziehen.

     ˆ   Automatisierung des Prozesses zur Lösung von Konikten beim Zusammenfüh-

         ren von Code oder dessen maximale Vereinfachung.       Wenn beispielsweise ein

         umfassender Test der Funktionsfähigkeit des Systems durchgeführt wird, sind

         die Entwicklungen jedes Projektteilnehmers erforderlich, da die Funktionsfä-

         higkeit jedes Elements für sich genommen kein Beweis für die Funktionsweise

         des gesamten Systems ist. Darüber hinaus führt die Möglichkeit, Code zu teilen
2.4. Vorgehensschema des Projekts                                                    11

         und das Zusammenführen zu automatisieren, zu einer Minimierung der Zeit für

         das Zusammenführen von Pro jektcode, was ebenfalls ein starkes Argument ist.

Gröÿtmögliche Transparenz des Pro jekts für seine Teilnehmer. Transparenz bedeu-

tet

     ˆ   Automatische Protokollierung von Änderungen für den Quellcode. Es ist wün-

         schenswert, das Änderungsprotokoll für jeden Teilnehmer in seiner Arbeitsum-

         gebung separat anzeigen zu können.

     ˆ   Möglichkeit, Kommentare und kurze Beschreibungen von Änderungen zu er-

         stellen, um besser zu verstehen, was sich geändert hat.

Ein Entwicklungssystem, mit dem eine groÿe Aufgabe in kleinere atomare Teilauf-

gaben unterteilt und nachverfolgt werden kann.

Eine transparente Methode des Entwicklungsmanagements, bei der Prozess, Arbeits-

belastung, Zeitpunkt und Status der Entwicklung jedem Teammitglied klar sind.

Das Pro jekt erfordert die Wartung und Diskussion verschiedener Schnittstellen für

die Kommunikation seiner Teile.        Dies bedeutet wiederum, dass ein spezielles Pro-

gramm oder System benötigt wird, in dem ein spezieller Ort zugewiesen wird, an

dem die Projektdokumentation aufbewahrt werden kann.

2.4.2 Versionskontrollsystem: gitlab
           3
GitLab         wurde aus folgenden Gründen als Versionskontrollsystem verwendet.

     ˆ   Das System ist jederzeit und überall auf der Welt verfügbar, sodass die Teil-

         nehmende immer über eine aktuelle Version des Quellcodes verfügen und nicht

         von einem bestimmten Ort abhängig sind.

     ˆ   Mit dem System können Beteiligte unabhängige Überprüfungen direkt erstellen,

         wodurch sie den Code verschiedener Entwickler trennen können.

     ˆ   Teilweise automatisierte Zusammenführung von Code zu einem Projekt. Wenn

         Konikte auftreten, können sie im Browserfenster gelöst werden, wodurch sich

         der Zeitaufwand für die Codeverwaltung verringert

Das Versionskontrollsystem spart erheblich Zeit, indem es einen Teil der Routine

übernimmt und automatisiert.

2.4.3 Git-ow-Workow
                       4
Git-ow-Workow            wurde verwendet, um den Code zu trennen und die Anzahl der

Konikte zu reduzieren.         Der Upstream-Master hatte Arbeitsversionen des Quell-

codes mit der entsprechenden Version getestet.         Im Entwicklungszweig wurde die

Integration und Prüfung des Codes bei Bedarf am Ende jedes Sprints durchgeführt.

Auÿerdem wurde für jeden Teilnehmer ein eigener Zweig erstellt, in dem der Code

eines bestimmten Entwicklers geändert wurde.         Da die Trennung klar war, musste

nicht für jedes Ticket eine Filiale erstellt werden.

 3
     Stand 28.02.2021: gitlab.com
 4
     Stand 28.02.2021:      https://www.atlassian.com/git/tutorials/comparing-workflows/
     gitflow-workflow
12                                                       2. Anforderungsspezikationen

2.4.4 Kanban-Board
Japan has made an astonishing change in its auto-production strategy. It has moved

from mass to lean production. This, the authors point out, is a lesson that western

manufacturers and companies can ill-aord to ignore [5]. Die Kanban-Board wurde

verwendet, um den Entwicklungsprozess basierend auf Tickets zu steuern. Ein Ticket

ist eine atomare Aufgabe, die je nach Status der Aufgabe in verschiedene Spalten

der Tabelle verschoben wurde. Die folgenden Zustände wurden verwendet

     ◦   Open.    Ein Analogon zum Rückstand, aus dem Aufgaben für den Sprint über-

         nommen werden

     ◦   To-Do.    Die Aufgabe wird vor dem Ende des nächsten Sprints abgeschlossen

     ◦   Doing.    Die Aufgabe wird gerade ausgeführt

     ◦   Testing.    Die Zuordnung ist abgeschlossen, es sind jedoch Tests erforderlich,

         um die Qualität und Konformität zu überprüfen

     ◦   Closed.    Ticket abgeschlossen

2.4.5 Dokumentationsverwaltung
              5
gitlab-wiki       wurde verwendet, um Änderungen und Schnittstellen zwischen verschie-

denen Teilen der Anwendung zu dokumentieren.

 5
     Stand 28.02.2021: https://docs.gitlab.com/ee/user/project/wiki/
KAPITEL 3

                Hardware und eingebettete Software

Dieser Abschnitt enthält die Grundkenntnisse und Konzepte des Teils des Projekts,

der für die Erfassung von Umweltdaten und die Übertragung dieser Daten auf ein

Mobiltelefon verantwortlich ist. In diesem Abschnitt werden nicht die Besonderhei-

ten der Arbeit und die technischen Eigenschaften jedes einzelnen Sensors und seiner

Steuerung erläutert. Detaillierte Informationen dazu lassen sich in der verwandten

Arbeit[3] nden.

3.1         Im Projekt verwendete Sensormodule

      Sensorname         Ziel des Sensors                                     Preis
         Lautstärke-     Sammelt     Daten    über   die   Lärmmenge     ab   e7,991
      sensor (Grove      (Lärmbelastung) in der Umgebung

      Loudness)[6]

      Staubsensor        Sammelt Daten über die Menge an Staub-          ab   e22,302
      (SDS011)[7]        partikeln   mit    unterschiedlichen   Durch-

                         messern in der Luft

 GPS-Empfänger           Sammelt Daten über die Position des Ge-         ab   e35,783
         (EM506)[8]      räts zum Zeitpunkt der Messung, um den

                         Ort der Messung zu bestimmen

                  Tabelle 3.1: Sensoren zur Erfassung von Umweltdaten

Die Tabelle 3.1 zeigt die Namen und allgemeinen Aufgaben der im Pro jekt ver-

wendeten Sensoren. Während des Projekts wurde auÿerdem vorgeschlagen, anstelle

separater Sensoren wie eines Schall- und eines GPS-Sensors auf dem Mobilgerät des

Benutzers zu verwenden, um die Kosten für das Endgerät zu senken. Später wurde

diese Idee jedoch aus mehreren Gründen abgelehnt, die nachstehend beschrieben

werden.

     ˆ   Verwenden des Mikrofons auf dem Smartphone des Benutzers als Schallsensor

          a) Anfänglich bietet der Android Software Development Kit (SDK) keine

             Funktionen zum Empfangen sauberer, unverarbeiteter Klangdaten vom

             Mikrofon.   Dies bedeutet, dass Fremdgeräusche, die das Ziel dieser Art

             von Sensoren sind, vor der Messung herausgeltert werden

          b) Die Verwendung Android Native Development Kit (NDK) wurde durch

 1
   Stand 27.02.2021: https://www.conrad.de/de/p/seeed-studio-101020063-arduino-erweiterungs-
   platine-passend-fuer-einplatinen-computer-arduino-raspberry-pi-1892436.html
 2
   Stand 27.02.2021: https://www.amazon.de/-/en/Precision-Quality-Detection-Sensors-Digital/
     dp/B07911ZY9W
 3
     Stand 27.02.2021:  http://www.mercateo.com/p/820-1334196/NaviLock_EM_506_60432.
     html?ViewName=live&showSimplePage=NO&h_oldQuantity=1&ncID=C1006%3A6200275&
14                                                3. Hardware und eingebettete Software

             mangelndes Verständnis des Betriebssystems in einer nativen Umgebung
                           4
             eingeschränkt

     ˆ   Verwenden von GPS auf dem Smartphone eines Benutzers als GPS-Sensor

          a) Die Verwendung eines GPS-Sensors zusammen mit einem Bluetooth-Gerät

             auf einem Smartphone kann sich äuÿerst negativ auf die Akkulaufzeit des

             Geräts auswirken

          b) Die Forderung nach einem umfassenderen Ansatz für die Implementierung

             der Erfassung von Standortdaten über das GPS-Modul eines Smartphones,

             beispielsweise aufgrund der Berücksichtigung des Zustands des Moduls, des

             Zugris auf Funktionen usw.

Die Wahl speziell dieser Sensortypen beruhte auf der Strategie zur Berechnung der

Qualität der Umgebung an einem bestimmten Punkt, die im Abschnitt 5.3 aus-

führlicher beschrieben wird, sowie auf mehreren anderen Faktoren wie z.B. relative

Messgenauigkeit und ausreichende Messstabilität.

3.2        Kommunikationskanäle der Sensorsteuermodul und ein-
           zelner Sensoren

In diesem Unterthema werden die Technologien und Prinzipien der Kommunikation

allgemein beschrieben, beginnend mit den Sensoren und endend mit der Übertragung

von Daten an den Zielsender (Smartphone des Benutzers).

3.2.1 Kommunikation der Sensoren mit Sensorsteuermodul
Die Daten der Sensoren werden von einem speziellen programmierbaren Modul[9] er-

fasst, das in Ivans[3] Arbeit ausführlicher beschrieben wird. Im Allgemeinen werden

alle Module über Kabel mit dem Steuergerät verbunden und verwenden:

     ˆ   General-purpose input/output (GPIO)-Pins

     ˆ   Rechengeräteknoten, die für die Kommunikation mit anderen digitalen Geräten

         ausgelegt sind, nämlich Universal Asynchronous Receiver Transmitter (UART)

     ˆ   einem seriellen synchronen Datenübertragungsstandard Serial Peripheral Inter-

         face (SPI)

3.2.2 Kommunikation den Sensorsteuermodul mit Android Anwendung
Die Steuerplatine ist auÿerdem mit einen BLE ausgestattet, mit dessen Hilfe Da-

ten zwischen dem Controller und dem Smartphone zur weiteren Verarbeitung und

Datenübertragung zum Server übertragen werden.              Das Format der übertragenen

Daten ist JavaScript Object Notation (JSON)(mehr [10]). Die Gründe für die Wahl

dieses speziellen Datenformats waren seine weit verbreitete Verwendung im Bereich

der Datenübertragung und die einfache Interaktion mit ihm.

Der folgende Text beschreibt die Abfolge der Aktionen des Steuergeräts ohne Be-

rücksichtigung des Starts und des Wartens auf den Start der Sensoren, dh die be-

schriebenen Bedingungen berücksichtigen die volle Bereitschaft der Sensoren.

     1. Das Steuermodul liest Daten von jedem Sensor

     2. Wenn alle Sensordaten in dieser Iteration erfasst wurden, wird ein neue JSON

         String erstellt. Ein Beispiel für einen solchen String ist auf 3.1 zu sehen.

 4
     Stand 28.02.2021: https://github.com/android/ndk-samples/tree/master/audio-echo
3.2. Kommunikationskanäle der Sensorsteuermodul und einzelner Sensoren         15

  1   {
  2              " pminutes " : " 00 . 0 0 0 0 " ,
  3              " pole " : " N " ,
  4              " hdegree " : " 0 00 " ,
  5              " hminutes " : " 00 . 0 0 0 0 " ,
  6              " hemisphere " : " W " ,
  7              " mic ": " 7 2 7 " ,
  8              " pm 1 0" : " 1 6 2 " ,
  9              " pm 2 5" : " 9 4 " ,
 10              " bat ": " 0 . 0 0 "
 11   }
             Listing 3.1: JSON aus Sensorsteuermodul für Smatrphone

  3. Ein solcher String wird in einem speziellen Puer gespeichert, aus dem der

      später auf eine Anfrage des Empfängers gesendet werden kann.

  4. Go To 1.

Der Puer, in dem die Sensordaten für ihre weitere Übertragung gespeichert werden,

hängt nicht von der Ausführung des Hauptprogrammcodes ab, was beispielsweise

bedeutet, dass dieselben Daten zweimal hintereinander angefordert werden könnten

oder die vorherigen Daten tot sind, so dass die Daten irgendwann können ohne

Anfrage aktualisiert werden
KAPITEL 4

         Android-Anwendungssoftware (GeliOSMobile)

In diesem Teil der Arbeit werden wir über den Sender zwischen dem Sensorsteuer-

modul und Server sprechen, der Daten speichert, verarbeitet und dem Benutzer das

Endergebnis zeigt.      Als solcher Sender wurde ein Smartphone ausgewählt, das auf

dem Android-Betriebssystem basiert. Die Gründe für diese Wahl sowie das Vorhan-

densein dieser Verbindung zum Verbinden von Sensoren und Server wurden in Teil

2.3.1 dieser Arbeit beschrieben.

4.1        Vordergrund der Anwendung

           Abbildung 4.1: ModelViewViewModel (MVVM) Patern Struktur.

Dieser Unterabschnitt beschreibt die Teile der Anwendung, die auf die eine oder

andere Weise von Benutzeraktionen abhängen, oder enthält Informationen zum Vor-

gang oder Status der Anwendung.

Das Hauptarchitekturmuster, das zum Erstellen der Benutzeroberäche der Anwen-

dung verwendet wurde, war MVVM, das vom Entwicklungsteam des Betriebssy-

stems empfohlen wurde und in den Kreisen der Personen, die ihre Anwendungen

auf dieser Plattform erstellen, weithin bekannt ist.        Dies erfordert eine hervorra-

gende Optimierung und Integration bei der Entwicklung eigener Anwendung.             Als

einer der Erben des Model-View-Controller (MVC)-Musters kann dieser Ansatz zur

Softwareentwicklung jeden Teil der Anwendung einfacher ersetzen.          Abbildung 4.1

gibt einen Überblick darüber, wie die verschiedenen Teile dieses Architekturmusters
                                       1
kommunizieren.        Im Allgemeinen       haben diese Teile der Anwendung die folgenden

Rollen:

     ˆ   View,   das sich im Bild links bendet, repräsentiert visuelle Elemente, die der

         Benutzer sieht und mit denen er interagieren kann. Durch die Verwendung der

         Datenbindung kann View die Grakelementen basierend auf Modelländerun-

         gen aktualisieren. Auÿerdem werden verschiedene Ereignisse (ausgelöst durch

         Benutzeraktionen) in ViewModel übertragen.

 1
     Stand 28.02.2021: https://www.raywenderlich.com/636803-mvvm-and-databinding-android-design-pattern
4.1. Vordergrund der Anwendung                                                    17

  ˆ   Das   ViewModel    wiederum manipuliert das Modell und liest die erforderlichen

      Daten über den (normalerweise) Rückgabewert einer aufgerufenen Funktion.

      Anschlieÿend wird das View über die Datenbindung aktualisiert.

  ˆ   Das   Modell   rechts enthält Anwendungslogik, Berechnungsfunktionen, Inter-

      aktion mit externen Geräten, Zugri auf Systemfunktionen usw.

4.1.1 UI der Hauptanzeige

(a) Navigationsleiste von Ge-                          (b) Monitor mit der Liste von
liOSMobile, von der aus lässt                          BLE Geräte, die zu einem be-
sich zu den verschiedenen Bild-                        stimmten Zeitpunkt des Scan-
schirmen der Anwendung gelan-                          nens gefunden wurden
gen.

              Abbildung 4.2: UI von dem Startbildschirm der Anwendung

Bild 4.2a zeigt eine spezielle Seitenleiste, über die zu jedem Teil der Anwendung

gelungen werden kann, von denen jeder im entsprechenden Abschnitt beschrieben

wird.   Auf diese Seitenleiste kann von jedem Teil der Anwendung aus zugegrien

werden, sodass der Benutzer jederzeit die interessante Funktionalität erhält, die die

Anwendung bereitstellen kann.

Aufgrund der Tatsache,     dass der Prozess der Datenübertragung mit Telemetrie

gröÿtenteils unabhängig vom Benutzer durchgeführt wird, wurde die Anwendungs-

schnittstelle so weit wie möglich vereinfacht, um Ressourcen für das Projekt zu

sparen.     Um die Elemente der Anwendungsschnittstelle zu implementieren, wur-

den Sätze aus den AndroidX- und Android-Bibliotheken verwendet [11].        Das An-

wendungsdesign (Position und Eigenschaften der visuellen Elemente auf dem Bild-
18                                     4. Android-Anwendungssoftware (GeliOSMobile)

schirm) wurde in speziellen Dateien im eXtensible Markup Language (XML)-Format

(mehr z.B. [12]) beschrieben. Ein Beispiel für eine solche Datei lässt sich in Teil A.2

dieses Dokuments nden. Diese Datei beschreibt eine Reihe visueller Elemente und

ihre Position relativ zueinander, um Informationen zu einem gefundenen Bluetooth-

Gerät anzuzeigen. Optisch ist dies in Bild 4.2b zu sehen.

Dieser Ansatz hat gegenüber einer reinen Software-Implementierung mehrere Vor-

teile:

     ˆ   Trennung der Deklaration visueller Elemente von ihrer Funktionalität

     ˆ   aus dem vorhergehenden Absatz folgt die Möglichkeit eines einfacheren Aus-

         tauschs oder einer Änderung der visuellen Elemente der Anwendung und ihrer

         Eigenschaften

     ˆ   hohe Entwicklungsgeschwindigkeit aufgrund der Kürze des Codes

Auf dem Hauptbildschirm der Anwendung bendet sich eine Schaltäche zum Ein-

schalten des Bluetooth-Geräts auf dem Smartphone des Benutzers, falls es ausge-

schaltet war, und zum Starten des Scanmodus für Bluetooth-Geräte in der Nähe.

Gefundene Geräte werden während des Scannens auf dem Bildschirm angezeigt, was

in Abbildung 4.2b gezeigt ist. Dieser Vorgang kann nur vom Benutzer unterbrochen

werden, der ein Gerät aus der Liste der gefundenen auswählen oder auf die entspre-

chende Schaltäche klicken muss, um den Scanvorgang zu beenden. Nach Auswahl

eines Geräts wird der Benutzer über die erfolgreiche Verbindung und die Verfügbar-

keit der erforderlichen Merkmale auf dem Gerät informiert.      Genauer wird dies in

Teil 4.2.2 dieser Arbeit diskutiert.

4.1.2 Testwerkzeuge der Anwendung

(a) Anzeige der Messwerte in                            (b) Eine Schaltäche, mit der
der BLE Monitor Ansicht                                 der Erfolg von Datenübertra-
                                                        gung zum Server sowie das kor-
                                                        rekte Speichern dieser Daten
                                                        (auf dem Server) überprüft wer-
                                                        den können.

                    Abbildung 4.3: UI von den Testing Tools Sektion

In Bild 4.2a ist das Vorhandensein zusätzlicher Funktionen in der Anwendung zu

betrachten. Jeder der folgenden Bildschirme wurde gemäÿ den in Teil 4.1.1 beschrie-

benen Prinzipien und Programmiermustern entworfen.
4.1. Vordergrund der Anwendung                                                                19

Der BLE Monitor wird verwendet, um Daten zu überwachen, die von Sensoren über

den Bluetooth-Kanal empfangen, bevor sie an den Server gesendet werden.                      Auf

diesem Bildschirm bendet sich auch ein Schieberegler zum Ändern der Häugkeit

von Datenanforderungen. Dieser Bildschirm ist in Abbildung 4.3a dargestellt. Auf

dem Bild lässt sich verschiedene Parameter und den Namen sehen, die zuletzt über

Bluetooth von GeliOSESP32 übertragen wurden.                Etwas höher wird auch der Sta-

tus des Bluetooth-Geräts auf dem Mobiltelefon und die MAC-Adresse des Geräts

angezeigt, von dem die Daten derzeit empfangen werden.                Zwischen diesen beiden

Konstrukten ist einen Balken zu betrachten, mit dem ist die Anzahl der Anforde-

rungen pro Zeiteinheit zu steuern.          So lässt sich experimentieren, wie schnell die

Daten in GeliOSESP32 aktualisiert werden.             Ein wichtiger Punkt ist, dass mit ab-

nehmender Verzögerung zwischen BLE-Requests die Anzahl der Anfragen zunimmt

und nicht die Geschwindigkeit der Messungen auf GeliOSESP32.

Der letzte Bildschirm wurde ursprünglich zum Testen der Verbindung der Anwen-

dung zum Server konzipiert, wurde jedoch von der Serverseite durch Weiterleiten der

letzten Anforderung mit Beispieldaten überprüft. Dieser Bildschirm ist in Abbildung

4.3b dargestellt. Wenn auf die Schaltäche geklickt wird, wird eine Standardanfrage

an den Server gesendet, und es lässt sich den Erfolg der Zustellung von Anfrage und

die Richtigkeit der Verarbeitung auf dem Server verfolgen.

4.1.3 Benachrichtigungsleiste

Abbildung 4.4:       Benachrichtigungsleiste.    Die wird angezeigt, wenn das Gerät vom

Benutzer ausgewählt wurde und nun versucht wird, Daten von diesem Gerät über

die Verfügbarkeit der erforderlichen Dienste darauf zu lesen.

Nachdem der Benutzer ein Gerät für die Verbindung aus der Liste der vorgeschlage-

nen Geräte ausgewählt hat, wird in der Statusleiste eine spezielle Benachrichtigung

angezeigt. Ein Beispiel hierfür ist in Abbildung 4.4 dargestellt. Dieses Bild zeigt die

Mohnadresse des Geräts, mit dem versucht wird, eine Verbindung herzustellen. Die

Tatsache, dass das Gerät noch nicht angeschlossen ist, wird im ersten Teil des Tex-

tes angezeigt. Die Beschriftung ändert sich, wenn die Anwendung die erforderlichen

Dienste auf dem Endgerät ndet.            Die Datenübertragung beginnt dann.          Um eine

Benachrichtigung zu erstellen, wurde das Builder-Muster von            NotificationCompat-
                                                       2
Klasse aus der AndroidX-Bibliothek verwendet . Extern sieht die Benachrichtigung
              3
einheitlich       aus, um die Benutzererfahrung zu verbessern und den Zeitaufwand für

die Entwicklung zu verringern. Die Benachrichtigung hat mehrere Zwecke:

     ˆ   ermöglicht langfristige Operationen im Daemon-Modus. Mehr dazu in Teil 4.2.

 2
     Stand 28.02.2021: https://refactoring.guru/design-patterns/builder
 3
     Stand 28.02.2021: https://developer.android.com/guide/topics/ui/notiers/notications
20                                         4. Android-Anwendungssoftware (GeliOSMobile)

     ˆ   bietet dem Benutzer Informationen zum Verbindungsstatus

           ◦   Device is connecting (Gerät verbindet) + MAC-Adresse des Geräts. Dieser

               Status bedeutet, dass das Telefon versucht, eine Verbindung zum Gerät

               herzustellen, und prüft, ob die erforderlichen Dienste verfügbar sind. Dieser

               Vorgang wird in Teil 4.2.2 näher beschrieben.

           ◦   Device is connected (Gerät ist verbunden) + MAC-Adresse des Geräts.

               Dieser Status zeigt an, dass die Verbindung erfolgreich war und derzeit

               Daten zwischen Sensoren, Smartphone und dem Server übertragen werden.

               Optional können die Daten auf dem Telefonbildschirm über die in Teil 4.1.2

               beschriebene Tab BleMonitor überwacht werden.

     ˆ   um einen speziellen Dienst zu steuern, der im Hintergrund ausgeführt wird. Die

         Steuerung beschränkt sich darauf, die Verbindung zwischen dem Smartphone

         und den Sensoren zu trennen und den Dienst auszuschalten. Zu diesem Zweck

         bendet sich in der Benachrichtigung eine "Cancel"-Schaltäche, mit der die

         Benachrichtigung geschlossen und der entsprechende Dienst deaktiviert wird
                                                               4
         (genauer gesagt, es wird ein spezielles Konstrukt         an alle Teile der Anwendung

         gesendet, das im Teil 4.2.3 beschrieben wird).

            builder = new NotificationCompat . Builder ( service , service . getString (R .
                string . channel_id ))
                    . setSmallIcon ( android .R. drawable . ic_dialog_info )
                    . setContentTitle ( service . getString (R . string .
                          service_notification_bar_title ))
                    // . setContentText ( text )
                    . setPriority ( NotificationCompat . PRIORITY_HIGH )
                    . addAction ( android .R . drawable . btn_default_small ,
                              mainService . getString (R. string . stb_cancel_btn_text ) ,
                              quitPendingIntent );

Listing 4.1: Erstellen des Musters für eine Benachrichtigung. In Zukunft wird dieses

Objekt erneut verwendet, um die Systembenachrichtigung zu aktualisieren, die der

Benutzer im Benachrichtigungsfeed des Telefons sieht.

Der Code in Listing 4.1 wird verwendet, um eine solche Benachrichtigung zu skiz-

zieren. Bei der Analyse dieser Skizze geschieht Folgendes:

                        5
     ˆ   Ein Builder -Klassenobjekt für die NoticationCompat-Klasse wird erstellt.

         Die Argumente für den Konstruktor sind ein Objekt der Context-Klasse oder

         ihres Erben und die IDentier (ID) des Benachrichtigungskanals. Siehe Details

         in Teil 4.2.

     ˆ setSmallIcon           Funktion stellt das kleine Symbol für die Benachrichtigungs-

         layouts ein.       Ein Argument ist eine Ressourcen-ID im Anwendungspaket des

         zu verwendenden Drawables.          In diesem Fall wurde das Standardsymbol für

         Informationsnachrichten verwendet.

     ˆ setContentTitle           Funktion legt den Titel der Benachrichtigung in einer Stan-

         dardbenachrichtigung fest. Ein String wird als Argument übergeben. In diesem

         Fall wird der Text, der aus der Anwendungsressourcendatei abgerufen wurde,

         verwendet, um die Übersetzung der Anwendung in Zukunft zu vereinfachen.

     ˆ setContentText          legt den Text Benachrichtigung in einer Standardbenachrich-

         tigung fest. Der Argument ist ein String. In diesem Beispiel wird diese Funktion

         aufgrund des Kontexts nicht verwendet.        Da sich der Text der Nachricht häu-

         g ändern sollte und das Aktualisieren des Textes die Wiederverwendung der

 4
     Stand 28.02.2021: https://developer.android.com/guide/components/broadcasts
 5
     Stand 28.02.2021: https://developer.android.com/reference/androidx/core/app/NoticationCompat.Builder
4.2. Hintergrundprozesse des GeliOSMobile Anwendung                                             21

      Builder-Klasse mit dem anschlieÿenden Entfernen der alten Benachrichtigung

      bedeutet, ist es zu diesem Zeitpunkt sinnlos, Text hinzuzufügen.                 Hier wird

      das Grundgerüst der Nachricht erstellt, dessen Parameter unverändert bleiben,

      und die restlichen Teile, wie z.       B. der Benachrichtigungstext, werden später

      hinzugefügt, wenn die Benachrichtigung direkt erstellt oder aktualisiert wird.

  ˆ setPriority       legt die relative Priorität für diese Benachrichtigung fest.             Die

      Priorität der Benachrichtigung gibt an, welche Aufmerksamkeit der Benutzer

      dieser Benachrichtigung widmen soll. Bei dieser Anwendung wird die Priorität

      so festgelegt, dass die Benachrichtigung beim Schlieÿen des Dienstes selbst nicht

      ausgetauscht werden kann (wenn die Benachrichtigung geschlossen wird, löscht

      das System nach einer Weile den Dienst, mehr dazu weiter unten).

  ˆ addAction      fügt dieser Benachrichtigung eine Aktion hinzu.              Wird in diesem

      Zusammenhang verwendet, um Feedback vom Benutzer und dem Prozess hin-

      zuzufügen, der Aufgaben im Hintergrund ausführt. Da das Werbesystem keinen

      direkten Zugri auf die Ressourcen und Methoden der Anwendung hat, können

      Benachrichtigung und Dienst über das integrierte Werbesystem kommunizieren.

      Dazu später mehr (4.2.3). In diesem speziellen Fall wurde eine Schaltäche er-

      stellt, die den Dienst und die Benachrichtigungen schlieÿt und die Verbindung

      zu den Sensoren unterbricht. Die Argumente sind: Ressourcen-ID für das visu-

      elle Element (Schaltäche), Schaltächentext und Intent, das bei Verwendung

      der Schaltäche an die Anwendung übergeben wird.

    public void onDeviceConnected ( String deviceName ) {
        builder . setContentText ( mainService . getString (R . string . stb_connected_text )
                  + " : " + deviceName );
        notificationManager . notify ( notificationId , builder . build () );
    }

Listing   4.2:   Erstellen   von   einer   Benachrichtigung.    In     diesem   Fall   wurde   die

Benachrichtigung     bereits   mit   der   Builder-Klasse   konguriert.    Es    war   lediglich

erforderlich, den Text in den erforderlichen zu ändern und die Benachrichtigung

unter     Verwendung    der    speziellen    Kennung    der    alten    Benachrichtigung        zu

aktualisieren (löschen und neu erstellen).

Verwendet wird das Beispiel aus Listing 4.2, um eine Benachrichtigung anzuzeigen

oder zu aktualisieren. Darin wird der Builder-Klasse der erforderliche Text hinzuge-

fügt und das für die Anzeige erforderliche Objekt erstellt, das dann im Benachrich-

tigungsleiste des Geräts angezeigt wird.        Das erste Argument für die Benachrichti-

gungsmethode ist die Benachrichtigungs-ID. Wenn diese ID bereits verwendet wird,

wird die alte Benachrichtigung durch die neue ersetzt.           Wenn die ID noch frei ist,

wird eine neue Benachrichtigung erstellt.

4.2       Hintergrundprozesse des GeliOSMobile Anwendung

In diesem Abschnitt werden die verwendeten Softwarebibliotheken und die Funk-

tionen des Systems erläutert, die auÿerhalb der Sichtbarkeitszone des Benutzers

ausgeführt werden und teilweise unabhängig von ihm sind, jedoch auf die eine oder

andere Weise mit dem Erreichen der Haupt- oder Nebenziele dieser Software zu-

sammenhängen.       Es ist zu beachten, dass die in diesem Abschnitt beschriebenen

Konstrukte nicht unbedingt in irgendeiner Weise mit dem Benutzer interagieren,

Informationen anzeigen oder auf seine Aktionen reagieren, sondern über spezielle

Vermittler wie Broadcasting (4.2.3).
22                                      4. Android-Anwendungssoftware (GeliOSMobile)

4.2.1 Vordergrunddienste
                                               6
Laut Android-Entwicklerdokumentation               sind versteckte Dienste: Foreground ser-

vices perform operations that are noticeable to the user. (Vordergrunddienste führen

Vorgänge aus, die für den Benutzer erkennbar sind.) .           Der wichtigste Unterschied

zwischen solchen Diensten und der sichtbaren Anwendung ist der von der Haupt-

anwendung getrennte Lebenszyklus. Dies bedeutet, dass der Dienst auch nach dem

Entfernen der Hauptanwendung aus dem Random Access Memory (RAM) seine Auf-

gaben weiterhin ausführen kann. Diese Eigenschaft spielt eine wichtige Rolle beim

Schreiben zeitaufwändiger Aufgaben und ermöglicht es Ihnen auÿerdem, die Anwen-

dung nach dem Herstellen einer Verbindung zum Sensorsteuergerät zu schlieÿen.

Ab Android Version 8.0 muss beim Starten eine Benachrichtigung im Benachrichti-

gungsleiste erstellt werden, um den Betrieb eines solchen Dienstes zu gewährleisten.

Die Erstellung, der Zweck und die Funktionsweise einer solchen Anzeige sind in Teil

4.1.3 beschrieben.

Im Kontext dieser Anwendung führt der Dienst Aufgaben aus, die autonom und

ohne Benutzereingri ausgeführt werden, nämlich:

     ˆ   Empfangen von Sensordaten über Bluetooth

     ˆ   Hinzufügen von Telemetrie zu Rohdaten

     ˆ   Senden verarbeiteter Daten über das Internet an den Server

4.2.2 BLE Verbindung
Um über ein drahtloses Bluetooth-Netzwerk[13] eine Verbindung zum Endgerät her-

zustellen, sind die folgenden Schritte erforderlich:

     1. den Bereich zu scannen um das gewünschte Gerät zu nden.

         Es ist nicht erforderlich, einen Dienst für die Suche nach Geräten zu erstellen.

         Grundsätzlich übernimmt die Bibliothek die gesamte Routine zum Einrichten

         und Kongurieren der Geräte.        Rückrufmethoden werden zur Rückmeldung

         verwendet. In dieser Anwendung beträgt die Aktualisierungsdauer des Geräts

         ungefähr zwei Sekunden. Bei jeder Aktualisierung der gefundenen BLE-Geräte

         wird die Tabelle aktualisiert, mit der das zu verbindende Gerät ausgewählt

         werden kann.

     2. die Verfügbarkeit der erforderlichen Service- und Kommunikationscharakteri-

         stik zu überprüfen.

         Eindeutige Kennungen (Universally Unique IDentier (UUID)s) dienen als Be-

         acons, um die Funktionalität (Charakteristiken) von Geräten zu beschreiben,

         die Bluetooth als Mittel zum Datenaustausch verwenden.            Wenn es versucht

         wird, ein Gerät anzuschlieÿen, wird zunächst die Verfügbarkeit der erforderli-

         chen Funktionen überprüft, indem die UUID auf dem Gerät gelesen werden.

         Die Verbindung ist nicht erfolgreich, wenn keine der erforderlichen Charakteri-

         stiken gefunden wurde.

4.2.3 Android System Broadcasts
                        7
Interne Broadcasts          bei Android-System werden verwendet, um mit verschiedenen,

nicht direkt verwandten Teilen der Anwendung zu interagieren oder um auf Syste-

 6
     Stand 28.02.2021: https://developer.android.com/guide/components/foreground-services
 7
     Stand 28.02.2021: https://developer.android.com/guide/components/broadcasts
Sie können auch lesen