owned this note
owned this note
Published
Linked with GitHub
- Könntet ihr in wenigen Worten zusammenfassen, was das Hauptziel des Projekts ist?
- Wurde der Kontext (d.h. Motivation, Einsatzgebiet, ev. Zielgruppe) erläutert?
- Wird deutlich wie das Projekt umgesetzt wurde d.h. werden Komponenten oder Architektur skizziert und relevante eingesetzte Technologien genannt?
- Wird der Umfang des Projektes klar? Was soll gebaut werden? Was existiert ggf. bereits schon? Was ist nicht relevant?
- Hat die Beschreibung einen angemessenen Umfang? Werden also alle oben genannten Punkte ausreichend klar, ohne, dass unnötig viele weitere Dinge aufgelistet werden?
- Was fällt euch noch auf? Welche Tipps habt ihr aus eurer eigenen Erfahrung? Was hilft euch beim Schreiben? Bitte explizit auch angeben, wenn euch etwas positives auffällt.
___
## Einleitung
- [x] Motivation als Einleitung
## bereits kurze Zusammenfassung der Projektbeschreibung?
## Motivation:
- [x] Schlechter WLANempfang durch:
- [x] Fehlende/falsch positionierte Accesspoints
- [x] Funken auf falschen Kanälen
- [x] Netze die sich gegenseitig behindern.
- [x] Interferenzen von verschiedenen Netzwerken können sich gegenseitig stören
- [x] Parameter am Router anpassen
- [x] Umpositionierung des Accesspointer anhand der gesammelten Daten
## Freifunk Darmstadt
- [x] Hochschulgruppe des Chaos Darmstadt
- [x] Ziel: Flächendeckend, kostenloses WLAN
- [x] Privatpersonen stellen Teil ihrer Bandbreite für die Öffentlichkeit zur Verfügung
- [x] Gemeinnützig organisiert
- [x] bereitstellung von Freiem WLAN
- [x] dezentral organisiert
- [x] keine Anmeldung notwendig
- [x] Unsere AGs sind von Freifunk Darmstadt
## Zielgruppe
- [x] Enthusiasten die den Freifunk unterstützen wollen, nach fertigstellung auch Privat
- [x] Unterstützer von Freifunk
- [x] Grundsätzlich kann jeder mit der App Daten sammeln
- [x] Anhand dieser gesammelten Daten kann Freifunk weiter arbeiten
## Einsatzgebiet
- *kombinieren mit Zielgruppe*
- [x] Mobile Anwendung
- [x] Überall wo es WLAN gibt, vorerst Fokus auf Freifunk, später private Netze
- [ ] Anwendung von Grund auf neu aufgezogen.
- [ ] Von FreiFunk Vorauswahl zwischen Plattform Linux und Android
- *Übergang zur Android app*
- [x] Analyse von WLAN-Netzwerken
## Kotlin,
- [ ] Standard Programmiersprache für Android Anwendungen
- [ ] Java auch möglich aber nicht von google empfohlen
- [ ] entschieden durch präferenz unserer Gruppe
- [ ] Die App wird in Kotlin geschrieben
- [ ] Vorgabe von den AGs
## Android
- [ ] Android 8.0 - 12.0
- [ ] Abdeckung von 82%
- [ ] Damit es auf möglichst vielen geräten läuft
- [ ] Damit die Anwendung Portabel ist
- [ ] Android hat vorteil über ios da besserer lowlevel zugriff
- [ ] Damit man mobiler ist werden Smartphones zum sammeln von Daten verwendet
- [ ] Android Entwicklung war eine Vorgabe der AGs
- [ ] Für IOS hätte man sonst nicht Kotlin verwenden können
- [ ] Die App hätte man sonst nochmal portieren müssen in Flutter
## welche Features wurden implementiert
##### Eigene Karte/Raumplan aus Android photo gallery laden
- [ ] Karte und zugehörige Scans unter Namen abspeichern
- [ ] Galerie bisheriger Karte
- [ ] Zum erneuten Zugriff auf alte Karten
- [ ] Löschen/umbenennen alter Karten
##### Scan anhand von gpslocation (Outdoorscan)
### Dafür implementiert
- [ ] Datenbank
- [ ] UI
- [ ] Karte mit Navigation
- [ ] Laden eines Raumplans in die Anwendung
- [ ] Sowohl neue Karten als auch bereits verwendetet Karten
- [ ] Markieren der Aktuellen Position auf der Karte
- [ ] Scannen der WLAN netze in der Umgebung
- [ ] Speichern der Gescannten Daten
- [ ] Exportieren der Daten in JSON und bereitstellung von Export API
- [ ] Standardfunktionen wie Löschen und Umbenennen einer Karte
### Zukünftige Ziele
- [ ] Analyse der Daten auf externen Gräten
- [ ] Basierend auf der Analyse der Daten ausgabe für optimierungen
# Ausformulierungen
## 1.Einleitung
>Bei dem Projekt handelt es sich um die Entwicklung einer Android App zur Analyse und Protokollierung von WLAN-Netzen. Die Nutzenden sind mit dieser App in der Lage von unterschiedlichen Standpunkten verschiedene Daten, wie SSID oder stärke eines umliegenden Netzes, zu erfassen. Dadurch können diese ermitteln an welcher Position das Internet gut beziehungsweise schlecht ist. Ziel dieses Projekts soll es sein, dass Nutzende die gesammelten Daten exportieren können damit Freifunk Darmstadt diese weiter verwenden kann, um das WLAN zu verbessern.
<br><br><br>
Ein schlechter WLANempfang kann viele Gründe haben. Ein im Keller stehender Router hat kaum eine Chance den oder die Nutzer:in im Obergeschoss zu erreichen. Hier kann bereits ein richtig positionierter Accesspoint aushelfen. Wo sollte dieser am besten aufgestellt werden? <br>
Aber auch an Orten, an denen von vielen Routern eine hohe Signalstärke empfangen wird, gibt es Probleme. Beispielsweise kann es durch mehrere Router, die auf dem gleichen Kanal funken, zu einer Interferenz kommen. Sie behindern sich gegenseitig. <del>Der oder die Nutzer:in müsste also lediglich den Funkkanal ändern. Welcher Kanal liefert in diesem Fall das beste Ergebnis?</del> Dieses Problem ließe sich durch das Ändern von Einstellungen oder Positionierung des Routers verbessern.<br>
Um die Gründe für solche und weitere Probleme festzustellen wird eine Anwendung benötigt, welche sämtliche WLANdaten in diesen Problemzonen sammelt, um aus diesen zu einem späteren Zeitpunkt ein Muster auslesen zu können.
Unsere Anwendung, welche wir im Umfang des Bachelorpraktikums 2021/22 entwickeln, übernimmt das Sammeln sämtlicher verfügbaren WLANdaten, wie zum Beispiel die SSID, Frequens und die Stärke der WLANs<del>Das sammeln der verfügbaren WLANdaten aus der Umgebung übernimmt unsere Anwendung, welche wir im Umfang des Bachelorpraktikums 2021/22 geschrieben.</del>
## 2. Motivation
>Aufgrund dessen kann es zu einem schlechten Interneterlebnis führen. Freifunk Darmstadt möchte diesem Problem entgegen wirken. Die App dafür als Grundlage. Ziel dieser App soll es sein die umliegenden WLAN-Netze zu protokollieren und diese zu exportieren. Freifunk Darmstadt kann dann diese Daten weiterverwenden, um auf Grundlage davon die Parameter am Router zu optimieren. Dadurch soll das Wifi verbessert werden, sodass das Interneterlebnis verbessert wird.
## 3. Freifunk
Unser Auftraggeber ist Freifunk Darmstadt, eine Hochschulgruppe des Chaos Computer Clubs Darmstadt. Ihr Ziel es ist flächendeckendes und kostenfreies WLAN in Darmstadt, zu ermöglichen. Dieses Vorhaben wird unterstützt durch Privatpersonen, die einen Teil ihrer Bandbreite für die Öffentlichkeit zur Verfügung stellen. Um das zu gewährleisten ist Freifunk auf eine optimale Einstellung Ihrer Router angewiesen.
## 4. Einsatzgebiet / Zielgruppe
>Unterstützer von Freifunk, welche bei der Optimierung von Freifunk WLANs helfen wollen. Freifunk beabsichtigt aus den von unserer App gesammelten Daten Optimierungsmöglichkeiten automatisiert erarbeiten. Sobald auch dieses Projekt abgeschlossen ist, wird beabsichtigt die Anwendung auch zur Optimierung von privaten WLAN Netzwerken zur Verfügung stellen.
<br><br>
Zielgruppe der App sind daher primär die Unterstützer von Freifunk Darmstadt, die bereit sind Daten von umliegenden WLAN-Netzwerken zu sammeln und diese Freifunk Darmstadt zur Verfügung zu stellen. Nach Vollendigung des Projektes, sowie der Implementierung der Visualisierung der Daten ist geplant die App öffentlich zur Verfügung zu stellen, sodass jeder die App ohne Einschränkungen nutzen kann. Die App kann dann auch zum privaten Gebrauch genutzt werden, um feststellen zu können, wo das WLAN im eigenen Haushalt gut bzw. schlecht ist und wie man die Verbindungsqualität verbessern kann.
<br><br>
>Die Rolle, die unser Projekt in dieser Angelegenheit spielt ist es, sämtliche Daten der Router, die an einer bestimmten Stelle erfasst werden können, zusammen mit dem Standort abzuspeichern, sodass man genau kartographieren kann, an welchen Stellen welche Router wie gut empfangbar sind. Mit Hilfe dieses Wissens kann man durch externe Programme analysieren, wie genau die einzelnen Router im Detail eingestellt werden müssen, um den optimal möglichen Empfang sicherzustellen. Diese externen Programme zur Analyse, sowie die visuelle Darstellung der empfangenen WLAN Daten sind nicht Teil unseres Projekts.
Unsere App kann einerseits von Freifunk verwendet werden um die eben beschriebenen Optimierungen vorzunehmen, andererseits aber auch von Privatpersonen, die bei sich zu Hause überprüfen wollen an welchen Stellen sie mehr oder weniger Empfang haben, als an anderen Stellen. Um die App zu bedienen sind keine besonderen Vorkenntnisse vonnöten, daher ist sie für jeden geeignet, der ein Android Smartphone besitzt, wobei nur die Versionen Android 8 bis Android 12 unterstützt sind. Für eine Unterstützung bis Android 6 war der Marktanteil nicht aureichend groß um eine relativ aufwändige Erweiterung zu rechtfertigen. Wie die allermeisten Android Apps ist auch unsere in der Sprache Kotlin geschrieben.
## 7. Android/Kotlin
Wir entwickeln unsere Anwendung als Applikation für mobile Endgeräte, die mit Android-Versionen 8.0.0 bis 12.0.0 betrieben werden. Hierbei haben wir uns für Android-Version 8 als untere Grenze entschieden, da mehr als 80% der aktiven Android-Geräte diese oder eine neuere Version verwenden. Eine niedrigere Version hätte zu einem deutlich erhöhten Arbeitsaufwand geführt, während dies nur geringe Vorteile in der Kompatibilität bringt. Wir haben uns dafür entschieden unsere Anwedung für ein mobiles System zu schreiben, da es bei der Nutzung unserer Anwendung wichtig ist den Scan von verschiedenen Positionen aus zu starten, weshalb mobile Endgeräte in diesem Anwendungsgebiet praktikabler sind. Eine iOS-App ist hierbei nicht infrage gekommen, da diese einen schlechteren Zuganz zu den Ergebnissen eines WLANscans bietet.
Die Umsetzung unserer Anwendung geschieht in Kotlin, da Android nur eine Java-Bytecode-Schnittstelle bereitstellt. Somit ist es nur möglich Android-Anwendungen in Kotlin oder Java zu programmieren. Da Kotlin von Google für die Anwendungsentwicklung empfohlen wird und wir als Gruppe die Sprache Kotlin erlernen wollten haben wir uns in der Gruppe für Kotlin entschieden, um unsere Anwendung zu entwickeln.
<br><br>
>Im Ramen unseres Projektes entwickeln wir eine Android App, da unsere Anwendung auf möglichst vielen verschiedenen mobilen Endnutzergeräten laufen soll.
Wir haben uns dafür entschieden eine Android App zu entwickeln, da Android uns bessere Möglichkeiten bereit stellt, auf die Daten der Umgebenden WLAN-Netze zuzugreifen, als es API von iOS zulässt.
<br><br>
>[...], wobei nur die Versionen Android 8 bis Android 12 unterstützt sind. Für eine Unterstützung bis Android 6 war der Marktanteil nicht aureichend groß um eine relativ aufwändige Erweiterung zu rechtfertigen. Wie die allermeisten Android Apps ist auch unsere in der Sprache Kotlin geschrieben.
## 8.Features, die implementiert wurden
Wie bereits eingangs erwähnt kann man in unserer App Karten aus dem Gerätespeicher laden, um in diesen zu markieren an welcher Stelle gescannt werden soll. Die geladene Karte kann außerdem beliebig mit einfachem Wischen verschoben werden. Zoomen kann man, wie bei einem Smartphone üblich, indem man eine pinch Bewegung ausführt. Zu jeder Karte wird ein GPS Standort gespeichert, sodass man die Karten in etwa geographisch zueinander einordnen kann. Nachdem man einen Scan erfolgreich durchgeführt hat erscheint die Markierung andersfarbig auf der Karte, sodass man sehen kann, an welcher Stelle bereits gescannt wurde. Diese Markierungen lassen sich aber auch mit einem Schalter am unteren Bildschirmrand ausschalten. Um sich bereits verwendete Karten erneut anzusehen, gibt es eine Gallerie in der sich alle diese Karten mit Vorschaubild und Namen, den man jeder Karte beim laden geben muss, befinden. Wenn man sich in dieser Gallerie befindet, kann man außerdem einzelne Karte umbenennen oder löschen. Beim Löschen einer Karte werden alle gescannten Daten der Karte mitgelöscht. Man kann allerdings auch ohne eine Karte einen Scan ausführen, beispielsweise wenn man sich im Freien befindet. Dafür werden die Daten dann nur mit dem aktuellen GPS Standort gespeichert. Die Speicherstruktur für die wir uns entschieden haben ist eine SQLite Datenbank, in der für jede Karte die Daten mehrerer Scans gespeichert werden können, wobei die Daten eines Scans bereits aus mehreren empfangenen WLAN Netzen bestehen können. Die gespeicherten Daten können über ein Export Interface exportiert werden.
### 8.1 Verwenden einer Karte
Die Nutzenden haben innerhalb der App die Möglichkeit eine Karte aus der Galerie des Androidgerätes zu laden. Die genutzte Karte sollte ein Raumplan des Gebäudes abbilden , damit die aktuelle Position im Gebäude markiert werden kann.
### 8.2 Wifi scan außerhalb eines Gebäudes
Die Analyse der WLAN-Netze soll nicht darauf eingeschränkt sein, dass die Nutzenden sich innerhalb eines Gebäudes befinden müssen, sodass diese auf ein Raumplan angewiesen sind. Deshalb können die Nutzenden ihre Position auch anhand ihrer GPS-Position referenzieren.
### 8.3 Wifi scan
Es werden folgende Daten gesammelt: Zeitpunkt des Scans, BSSID, SSID, die verschiedenen Frequenzen, WLAN-Stärke, Venue Name,
### 8.4 SQLite Datenbank
Die Informationen über die Karte, sowie die dazu gesammelten WLAN-Daten, werden persistent in der App gespeichert damit beim verlassen der Anwendung kein Verlust der Daten entsteht. Dies wird durch die Nutzung einer SQLite-Datenbank realisiert. Hier werden die Kartennamen sowie GPS-Location des durch die Karte referenzierten Gebäudes. Des Weiteren werden die innerhalb der Karte gesammelten Daten zusammen mit den Kartennamen in einer Tabelle innerhalb der Datenbank gespeichert.
### 8.5 Export der Daten
# FINALE VERSION
#### Einleitung
Ein schlechter WLAN-Empfang kann viele Gründe haben. Ein im Keller stehender Router hat kaum eine Chance die Nutzenden im Obergeschoss zu erreichen. Hier kann bereits ein richtig positionierter Accesspoint helfen. Wo sollte dieser am besten aufgestellt werden?
Aber auch an Orten, an denen von vielen Routern eine hohe Signalstärke empfangen wird, gibt es Probleme. Beispielsweise kann es durch mehrere Router, die auf dem gleichen Kanal funken, zu einer Interferenz kommen. Sie behindern sich gegenseitig. Wie können diese Probleme durch das Ändern von Einstellungen verringert werden?
#### Motivation
Um die Gründe für solche und weitere Probleme festzustellen wird eine Anwendung benötigt, die sämtliche WLAN-Verbindungsinformationen in diesen Problemzonen sammelt, um aus diesen zu einem späteren Zeitpunkt ein Muster auslesen zu können.
Unsere Anwendung, die wir im Rahmen des Bachelorpraktikums 2021/22 entwicken, übernimmt das Sammeln aller verfügbaren WLAN-Verbindungsinformationen, wie zum Beispiel die SSID, den Kanal und die Stärke der WLANs.
#### Unsere Auftraggeber
Unser Auftraggeber ist Freifunk Darmstadt, eine Hochschulgruppe des Chaos Computer Clubs Darmstadt. Ihr Ziel ist es flächendeckendes und kostenfreies WLAN in Darmstadt zu ermöglichen. Dieses Vorhaben wird unterstützt durch Privatpersonen, die einen Teil ihrer Bandbreite für die Öffentlichkeit zur Verfügung stellen. Um das zu gewährleisten, ist Freifunk auf eine optimale Einstellung ihrer Router angewiesen.
#### Zielgruppe
Wir entwickeln unsere App primär für die Unterstützer von Freifunk Darmstadt, die bereit sind Verbindungsinformationen von umliegenden WLAN-Netzwerken zu sammeln und diese Freifunk Darmstadt zur Verfügung zu stellen. Nach Vollendung unseres Projektes und der darauffolgenden Projekte, ist geplant die App der Öffentlichkeit zur Verfügung zu stellen. Die App kann dann auch von Privatpersonen genutzt werden, um feststellen zu können wie gut das WLAN im eigenen Haushalt ist, bzw. wie man die Verbindungsqualität verbessern kann.
#### Verwendete Technologien
Wir entwickeln unsere Anwendung als Applikation für mobile Endgeräte, die mit Android-Versionen 8 bis 12 betrieben werden. Hierbei haben wir uns für Android-Version 8 als untere Grenze entschieden, da mehr als 80% der aktiven Android-Geräte diese oder eine neuere Version verwenden. Eine niedrigere Version hätte zu einem deutlich erhöhten Arbeitsaufwand geführt, während dies nur geringe Vorteile in der Kompatibilität bringt. Android 12 ist aktuell die neuste Version. Wir haben uns dafür entschieden unsere Anwendung für ein mobiles System zu schreiben, da es bei der Nutzung unserer Anwendung wichtig ist den Scan von verschiedenen Positionen aus zu starten. Daher sind mobile Endgeräte in diesem Anwendungsgebiet praktikabler. Eine iOS-App ist hierbei nicht infrage gekommen, da diese einen schlechteren Zugang zu den Ergebnissen eines WLAN-Scans bietet.
Die Umsetzung unserer Anwendung geschieht in Kotlin, da Android nur eine Java-Bytecode-Schnittstelle bereitstellt. Somit ist es nur möglich Android-Anwendungen in Kotlin oder Java zu programmieren. Kotlin wird von Google für die Anwendungsentwicklung empfohlen. Daher haben wir uns bei der Entwicklung unserer Anwendung für Kotlin entschieden.
#### Implementierte Features
In unserer Anwendung können die WLAN-Verbindungsinformationen der Umgebung gesammelt, gespeichert und exportiert werden. Hierfür ist es möglich eine Karte in die Anwendung zu laden und auf diesem die aktuelle Position auszuwählen. Anschließend kann ein WLAN-Scan gestartet werden, der alle verfügbaren Verbindungsinformationen sammelt und mit dem GPS Standort speichert. Alle gespeicherten Daten können über ein Export-Interface geteilt werden.
Innerhalb der Kartenansicht kann auf smartphone-übliche Weise navigiert werden.
Um mehrere Karten einander zuordnen zu können, wird jeweils ein GPS Standort gespeichert.
Um einen Scan zu starten, muss ein Punkt auf der Karte gesetzt werden. Anschließend erscheint ein Button, über welchen ein neuer Scan gestartet werden kann. Mit Hilfe eines Schalters kann zwischen einem Einfach- und Multi-Scan gewechselt werden. Dies macht Sinn um in der späteren Analyse einen größeren Datensatz pro Position nutzen zu können.
An jeder Position, an der bereits gescannt wurde, befindet sich ein blauer Punkt auf der Karte. Dies dient der besseren Orientierung beim Scannen. Bei Bedarf lassen sich die Markierungen über einen Schalter ausblenden.
Zudem ist es möglich über eine Galerie auf alle bereits genutzten Karten erneut zuzugreifen. Jede Karte ist einem eindeutigen Namen und einem Vorschaubild zugeordnet. Außerdem kann hier eine Karte umbenannt oder mit allen zugehörigen Daten gelöscht werden.
Aber auch das Scannen ohne Karte ist möglich. Hierfür wird ausschließlich der aktuelle GPS Standort zur Lokalisierung verwendet.
Sämtliche Karten- und Scandaten werden in einer SQLite Datenbank persistent gespeichert. Für die spätere Analyse ist es möglich die gesammelten Daten über das implementierte Export-Interface in ein praktikables Format zu bringen. Bereits vordefiniert ist ein Export, welcher alle gesammelten Daten im JSON-Format ausgibt.
#### Ausblick
Auf unserem Projekt aufbauend möchte Freifunk Darmstadt weitere Projekte im Rahmen des Bachelorpraktikums anbieten. Geplant sind unter anderem die Analyse sowie Visualisierung der gesammelten Daten.
https://gs.statcounter.com/os-version-market-share/android
https://developer.android.com/reference/kotlin/android/net/wifi/ScanResult?hl=en
//TODO: auch neue implementierte Features und schöner schreiben
Scan
gesammelte Daten:
SSID, venueName, operatorFriendlyName, level,
frequency, channelWidth,
centerFreq0, centerFreq1, capabilities, timestamp,
informationElements (ab API level 30)
Datenbank:
Tabelle für Kartenname und GPS-Location
Tabelle für Kartenname, Position von gesetzten Markern, GPS-Location
und Scandaten
Tabelle für InformationElements