Skip to content

cmarxmeier/MobileMeshViewer

 
 

Repository files navigation

MobileMeshViewer

MobileMeshViewer ermöglicht die Freifunk Knotenstatistik auf dem Mobiltelefon abzurufen und zu überwachen. Die App war ein Projekt für "Mobile Computing" an der Hochschule Bremen. Sie wurde entwickelt von Martin Suckau und Jelto Wodstrcil. Der MobileMeshViewer bietet:

  • Anzeige der detailierten Knotenstatisiken
  • Anzeige der detailierten Gatewaystatistiken
  • Notifications falls ein bestimmter Knoten oder ein Gateway den Status wechselt
  • Anpassbare Notifications
  • Links zu Social Media und Mail/IRC

Installation

Zurzeit ist die App nur als .apk im Repository verfügbar. Die App wurde mit SDK-Version 25 compiliert und setzt für die Installation mindestens SDK-Version 14 (Android 4.0) vorraus. Eine Veröffentlichung im Play Store oder auf den offiziellen Freifunk Bremen Servern ist angedacht. Neuere Studio-Versionen werden die fehlenden MIPS und MIPS64 toolchains anmeckern - mips64el-linux-android-4.9 und mipsel-linux-android-4.9 aus android-ndk-r16b-windows-x86_64.zip(https://developer.android.com/ndk/downloads/) umkopieren in das ndk/toolchain Verzeichnis unterhalb des Android SDK-Folders.

API

Die von der App angezeigten Statistiken werden über externe JSON-Dateien geladen. Daten der Freifunk-Knoten werden über die nodelist.json und die nodes.json in die App importiert. Die Daten über die Freifunk-Gateways stammen zu einem Teil aus der gatemon-json und zum anderen ebenfalls aus der nodes.json. Der Parser arbeitet noch mit Version 1 bei der nodes.json - mit yanic entsprechenden Output erzeugen mit:

[[nodes.output.meshviewer]]
enable = true
version = 1
nodes_path = "/var/www/html/meshviewer/data/nodes_v1.json"
graph_path = "/var/www/html/meshviewer/data/graph_v1.json"

Oder mit dem script nodesv2tov1.pl(https://github.com/Freifunk-Rhein-Sieg/Ansible-Freifunk-Gateway/blob/master/mapserver_collector/files/nodesv2tov1.pl) kompatible nodes_v1.json erzeugen.

Freifunk Bremen verwendet FastD - für tunneldigger in den Sourcen das fastd-Parsing auskommentieren. Die Anzahl der IP-Adressen je Node im nodes.json checken und im Code anpassen. Bei Freifunk Rhein-Sieg e.V. laufen multiple Domains über die Gateways - Die jeweiligen nodes_v1.json werden über merge_json.pl(https://github.com/Freifunk-Rhein-Sieg/Ansible-Freifunk-Gateway/blob/master/mapserver_collector/files/merge-json.pl) zusammengefahren und für das Ergebnis wird mit generate_nodelist.pl(https://github.com/Freifunk-Rhein-Sieg/Ansible-Freifunk-Gateway/blob/master/mapserver_collector/files/generate_nodelist.pl) eine passende nodelist.json generiert.

Knotenliste

Die Knotenliste ist die Einstiegsseite der App. Im Knoten-Fragment werden alle Freifunk-Knoten angezeigt. Über swipes lässt sich die Liste manuell aktualisieren. Sonst findet die Aktualiserung im Hintergrund statt. Über die Lupe kann die Liste nach bestimmten Knoten-Namen durchsucht werden. Sobald ein Knoten in der Listenansicht ausgewählt wird, öffnet sich dessen Detailansicht.

Knotendetails

Die Detailansicht präsentiert nahezu alle ferfügbaren Statistiken, die in der nodes.json enthalten sind. Das sind z.B. die MAC- und IP-Adressen oder der hinterlegte Kontakt. Der Status des einzelnen Knotens wird durch die Farbe des Knotennamens in der Toolbar repräsentiert. Rot steht hier für Offline und Grün für Online.

Über den "+"-Button lässt sich ein Knoten markieren. Alle markierten Knoten werden auf Konnektivität überwacht. Die Liste der markierten Knoten kann über den Menüpunkt "Meine Knoten" erreicht werden.

Knoten Überwachen

Über die Einstellungen (Aktivitiy hier) lässt sich die Überwachung anpassen. Hier kann der Aktualisierungs-Intervall und die Überwachnungsart konfiguriert werden. Ebenso können Einstellungen für Notifications und Autostart der App getroffen werden.

Gatewayliste

Die Gateway-Liste stellt analog der Knotenliste alle verfügbaren Gateways dar. Sobald ein Gateway aus der Liste angewählt wird, öffnen sich die detailierten Informationen. Die Liste ist ebenfalls mit einem Fragment umgesetzt.

Gateway-Details

Die Detailansicht bietet sowohl die Statistiken, als auch die Test der Gatemon-Test-Knoten. Diese prüfen verteilt die Verfügbarkeit einzelner Dienste.

Frameworks und technisches

In der App wurden die folgenden Frameworks verwendet:

  • Roboguice - Dependency Injection für Android
  • Robolectric - Unit Tests mit Android-Aphängigkeiten
  • jUnit - Unit Testing Framework
  • Mockito - Mocking Framework
  • AssertJ - Vereinfachung von Asserts
  • Retrofit - REST Client
  • Greenrobot - EventBus für Android

Vereinfachtes Klassendiagramm:

Zukunft

  • Portierung/Generalisierung der App auf andere Communities (z.B. Hamburg, Oldenburg usw.)
  • Funktionen Node-Finder
  • Netzabdeckung messen
  • Öffentliches Git-Repository

About

mobile app to interpret Freifunk json

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%