Freifunk-App (SSID-Manager)

Bis Firmware 3.1.8 wird die SSID mit Freifunk Dresden [Kontennummer] definiert, man darf allerdings einen Namen eingeben, dann heißt der AP anders und das [xxxx] entfällt.
Ab 3.1.9 ist der Doppelpunkt dazu gekommen, wenn man einen eigenen Namen definiert. Bei AP Gruppen (in Planung) haben alle AP den selben Namen, da später dort ein örtlicher Gruppen DHCP zu Einsatz kommen soll.

„freifunk-pieschen“ ist übrigens ein privater AP, der WPA2 verschlüsselt ist, Aufsteller und genauer Ort unbekannt… nur die ungefähre Position. :wink:

*) Meine persönliche Meinung zu manuellen verbinden: :expressionless: Aber eine Automatik unterstützt die Firmware noch nicht. Allerdings haben wir hier auch (wie immer) unterschiedliche Lager, ist genau so wie mit dem Splash Screen, per Standardeinstellung ist der eingeschaltet, kann aber updatefest ausgeschaltet werden, das ist auch das Erste was (ich) bei einem neuen AP mache. :wink:

@HeptaSean bei meinem Dump habe ich schon genau nach der SSID-Zeile gefiltert, nicht nach der Mesh-SSID. (Edit: Ich sehe du meinst die Liste von adorfer. Da hast du recht.)

@Emploi: Ja, aber was war denn das Argument für so viele verschiedene SSIDs?

2 „Gefällt mir“

Weiß hier jemand, unter welcher Lizenz das Freifunk Logo genau steht? Hier steht im Wiki unten was von einer Creative Commons Lizenz, allerdings kann ich gerade nicht herausfinden, welche CC Lizenz es genau ist.

Laut File:Freifunk logo.gif - Wikimedia Commons ist es CC-BY-SA 2.5 Generic.
Laut Impressum - freifunk.net vielleicht auch CC-BY-SA 3.0 Unported.

Die ursprüngliche Idee ist Werbung für den jeweiligen Betreiber des Knotens. Die Nummer dient zur „leichteren“ Identifizierung.

Neue Version:

  • Mehr SSIDs
  • Verändertes Design
  • Möglichkeit, die Liste nach Ausdrücken zu filtern
  • Fortschrittsbalken beim Hinzufügen/Entfernen von allen SSIDs (auf meinem Nexus 4 hat das schon mal 2-3 Sek. gedauert)


3 „Gefällt mir“

Neue Version 0.3:

Benachrichtigungen:
Standardmäßig ist diese Funktion deaktiviert und muss zunächst in den Einstellungen aktiviert werden. Eine Benachrichtigung soll angezeigt werden, wenn ALLE folgenden Bedingungen erfüllt sind:

  • Es ist mindestens ein Freifunk-Netz in Reichweite
  • Das Gerät ist momentan mit keinem Freifunk-Netz verbunden
  • Im aktuellen Scan nach Netzwerken ist mindestens ein Freifunk-Netz, das im vorherigen Scan nicht enthalten war.

Die App stößt keine Scans nach Netzwerken von sich aus an, sondern wird als Listener registriert, der jedes Mal aufgerufen wird, wenn Android nach Netzwerken gescannt hat. Ich erwarte daher keine bemerkbare Mehrbelastung des Akkus.

7 „Gefällt mir“

Mal eine kurze Meinungsumfrage: Momentan ist die Benachrichtigung ja eine „stille“ Benachrichtigung, d.h. sie taucht zwar auf dem Bildschirm auf, aber ohne Vibration oder Benachrichtigungston. Fändet ihr es besser, wenn die Benachrichtigung mit Ton und/oder Vibration käme? Oder vielleicht dem Nutzer in den Einstellungen die Möglichkeit geben, individuell einzustellen, wie sich die Benachrichtigung bemerkbar machen soll?

Fände ich unter den oben genannten Bedingungen gar nicht schlecht, allerdings sollte geprüft werden, ob es mit irgendeinem WLAN verbunden ist. Ich will ja nicht Zuhause die ganze Zeit gesagt bekommen, dass ich doch bitte ins FF wechseln soll, während ich in meinem privaten WLAN bin. Sonst nerven Benachrichtigungen immer, aber die App erfüllt ja eigentlich genau diesen zweck.

Version 0.4 mit überarbeiteten Benachrichtigungseinstellungen ist übrigens raus. Außerdem wurden noch ein paar Bugs gefixt.

Dank @guerda ist die App nun auch auf F-Droid erhältlich. Freifunk Auto Connect | F-Droid - Free and Open Source Android App Repository

Mal so ein Gedanke zu dem Thema, woher die SSIDs nehmen: wie wäre es, wenn man für die Freifunk-App einfach ein php Script irgendwo hinlegt, welches es erlaubt SSIDs zu submitten. Somit könnte jeder quasi für die eigene Community die SSID hinterlegen. diese könnte man ja mit einem „unconfirmed“ Status versehen um so zu verhindern, dass irgendwer das Ding flooded. Eine Verifizierung ginge bestimmt schnell, wenn man dann 1 Mal am Tag durch geht und sie verwirft oder hinzufügt. ggf. könnte man dazu sogar ein ausgefeiltes Formular in die App einbasteln, wenn man das unbedingt will. In jedem Fall würde man so auch nur die Netze bekommen, die wirklich zum connecten bestimmt sind. Wenn man unbedingt will, kann man ja sogar sagen, dass die Einträge nach 30 oder 90 Tagen auslaufen. Sollte bis dahin ein connect auf die SSID erfolgen, setzt man den Timestamp einfach neu. Fertig. Immer eine aktuelle Freifunk-SSID-Liste :smile:

Gruß
Sheogorath

1 „Gefällt mir“

Erlich gesagt habe ich momentan wenig Lust, ein Backend zum Sammeln von SSIDs zu basteln. Bisher hat es ganz gut funktioniert, dass fehlende SSIDs per Pull Request auf Github oder hier nachgereicht werden.

Problematisch ist natürlich, das bisher für neue SSIDs immer ein neues Update herausgebracht werden muss. Daher ist meine momentane Idee, die App beim Öffnen überprüfen zu lassen, ob eine akutalisierte Liste von SSIDs verfügbar ist. Dazu soll die App einfach überprüfen, ob die Liste an SSIDs, die bei Github im Repository liegt neuer als die Liste ist, die sich aktuell auf dem Gerät befindet.

Da das ganze Projekt open source ist, kann sich aber auch gerne jemand dran setzen und ein Online-Backend für das Sammeln von SSIDs basteln :wink:

1 „Gefällt mir“

Schade, dass sich das nicht nicht über die Freifunk-API abfeiern lässt.

Neues Update:

Für die SSIDs habe ich nun eine eigenes Repository angelegt. GitHub - WIStudent/freifunk-ssids: A collection of SSIDs used by the Freifunk community.. Die App prüft nun beim Öffnen, ob in diesem Repository eine neue Liste von SSIDs liegt und aktualisiert seine lokale Liste dann entsprechend. Die Prüfung findet nur statt, wenn die App geöffnet wird, und auch nur einmal alle 24h. Dies soll den Traffic möglichst gering halten.

2 „Gefällt mir“

Hi. Ich habe die letzten Tage mal wieder an der App gebastelt.

Zum einen habe ich das UI etwas überarbeitet und neue Ladebalken hinzugefügt:

Die größere Neuheit ist jedoch die Möglichkeit, sich die nächstgelegenen Freifunk-Router anzeigen zu lassen:

Mit einem Klick auf einen Router wird Android angewiesen, eine Liste von auf dem Gerät befindlichen Apps zur Auswahl anzubieten, die in der Lage sind, Geokoordinaten zu verarbeiten.

Es gibt jedoch ein Problem: Das Sammeln der Postitionsdaten und Onlinestatus-Angaben. Momentan befinden sich etwas mehr als 200 Links zu API Files im API Directory. Diese alle in der App herunterzuladen, nach Links zu Karten und Positionsdaten zu durchsuchen, um dann wiederum die gefundenen Dateien mit den Routerdaten herunterzuladen, dauert zu lange, um sich mal eben schnell anzeigen zu lassen, welche Router in der Nähe sind. Daher nimmt die App momentan Routerdaten, die lokal in einer Datei auf dem Smartphone gespeichert sind.

Diese lokale Datei wurde mit einem selbstgeschriebenen Python-Script erstellt. Dieses lädt sich das API Directory herunter, um dann mit den darin enthaltenen Links die API Files der einzelnen Communities zu parsen. Dabei wird dann nach Links zu ffmaps und nodelist Einträgen gesucht und versucht, an die Positionsdaten der Router zu gelangen. Dies ist vor allem bei ffmaps nicht ganz einfach, da die API Files in der Regel den Link zu der Karte enthalten, die im Brower angezeigt werden soll, aber nicht den Link zur nodes.json Datei, die die Positionsdaten enhält. Diese lässt sich aber meistens im selben Verzeichnis unter nodes.json finden. So konnte ich schon mal Daten zu etwa 15.000 Router finden. Das Script gibts hier: GitHub - WIStudent/FreifunkNodeLocationCrawler: A script that crawls Freifunk node locations from different community maps.

Damit in der App nun immer halbwegs aktuelle Daten vorliegen, habe ich mir folgendes gedacht. Das Crawler-Script müsste auf einem Server alle paar Stunden ausgeführt und die daraus resultierende json Datei über eine feste URL zugänglich gemacht werden. Das Script schreibt bei jedem Erzeugen der json Datei auch einen Timestamp des Erstellungszeitpunktes hinein. Die App soll nun, wenn sie die nächstgelegenen Router bestimmt, prüfen, ob online eine neuere Datei verfügbar ist. Um den Traffic zu reduzieren, soll die App die letzte geladene Datei speichern. Bevor sie beim nächsten mal prüft, ob online eine neue Datei verfügbar ist, soll sie zunächst schauen, wie alt die lokale Datei ist. Wenn die Datei auf dem Server z. B. alle 3 Stunden neu erstellt wird, die lokale Datei in der App aber erst vor 2 Std. erstellt wurde, dann braucht die App den Server erst gar nicht zu belästigen.

Problem ist nur, dass ich keinen Webspace/Server habe. Ich könne nun das Script bei mir automatisch alle paar Stunden auf einem Raspberry Pi ausführen lassen und die Datei dann per FTP zu irgendeinem Anbieter von Gratis-Webspace hochladen, aber vielleicht weiß hier jemand auch eine elegantere Lösung.

Version 0.6 ist nun verfügbar. Release v0.6 · WIStudent/FreifunkAutoConnectApp · GitHub

Die größte Neuerung ist, dass die App nun in der Lage ist, basierend auf der aktuellen Position die nächstgelegenen Freifunk-Router anzuzeigen. Die Postitionsdaten der Router werden dafür nun auf einem Raspberry Pi bei mir zu Hause zusammengesammelt und zu einem Webserver hochgeladen, von dem die App die Daten dann herunterlädt. Die App behält immer die zuletzt geladene Json Datei, sodass es auch ohne Internetzugang möglich ist, die nächsten Router anzeigen zu lassen (basierend auf den zuletzt geladenen Daten). Das Raspberry Pi lädt jede Stunde eine aktualisierte Json Datei hoch.

Momentan werden nur Router von Communities erfasst, die die Positionsdaten der Router per nodelist bereitstellen oder eine ffmap Karte betreiben. Bei ffmap kommt es zudem darauf an, ob das Script auch in der Lage war, aus der URL der Karte die korrekte URL für die nodes.json Datei zu erzeugen. Um Communities zu erfassen, die Netmon für die Karten verwenden, bäuchte ich noch ein paar Hinweise, wie ich da an die Positionsdaten gelange.

An sonsten habe ich noch die Funktion, eigene SSIDs hinzuzufügen, entfernt, da die Lösung, sie über eine Datei auf der SD Karte hinzuzufügen, nicht gerade nutzerfreundlich war und in einigen Fällen auch nicht hundertprozentig funktioniert hat.

4 „Gefällt mir“

Läuft super wie in den Videos gezeigt. Vielen Dank für deine Arbeit!

Wie es scheint, hat F-Droid was gegen die Google Play Services Api, die ich für die Bestimmung der Position verwendet habe, weshalb dort die Version 0.6 nicht auftaucht. Ich werde mich mal nach Alternativen für die Positionsbestimmung umsehen.

Huhu,

also die App ist echt super, bei mir werden aber die Knoten alle doppelt angezeigt.
Any ideas?

Die doppelten/fehlenden Ruhrgebiets-Knoten sind aber ein „Sonderlocken-Problem“.
Da kann diese App kaum etwas dran ändern.
Bitte dort diskutieren.