Moin,
ich fasse mal die Diskussion von Freitag zusammen.
Zur Verbesserung der Autolocator Positionierung sollten wir mehrere Steps abarbeiten.
1. Optimieren der libwlocate Datenbank: Aktuell kann eine BSSID nur einmal in der Datenbank vorkommen, dass muss angepasst werden sodass eine BSSID mehrmals vorkommen kann in der Datenbank. [1]
2. Erstellen eines Freifunk Nordwest Autolocator Services. Diese wird zwischengeschaltet um mehrere Location Services anbinden zu können ohne dabei jedes mal an den Routern etwas zu veränden. Dieser Service führt selber keine Berechnung direkt durch sondern leitet die Anfragen nun an die anderen Services weiter.
3. Basieren auf 2. Anbindung des Mozilla Location Service. Dieser ist so wie ich es bisher gesehen haben kostenlos. Wir müssen allerdings einen API Key anfordern. [2] Die eigentliche Abfrage ist eine einfach REST Schnittstelle. Hier übermittelt man die BSSID samt empfangener Signalstärken an die Schnittstelle und man erhältt die Position zurück. Wenn ich das richtig sehe [3] muss das auch in unsere Firmware gemacht werden. @Tarek können wir die Anfrage hier auf REST und JSON umstellen?
Gruß
Johannes
[1] http://sourceforge.net/p/libwlocate/code/ci/master/tree/master/web/
[2] https://location.services.mozilla.com/api
[3] https://git.nordwest.freifunk.net/ffnw/packages/blob/master/libwlocate/src/l...
Am 2016-02-05 10:53, schrieb Jan-Tarek Butt via Dev:
Hi,
Also wenn ich es nun richtig verstehe kommen die ganzen falschen Positionen daher, dass alle unsere Freifunk Router die gleiche BSSID haben. Diese aber in der Datenbank ein PK ist und daher nur einmal vorkommt. Das würde wahrscheinlich auch erklären, warum die ganzen "falsch" positionierten Knoten alle Koordinaten bekommen die auch bereich Nordwest liegen.
Ich habe mir nun nicht alles angeschaut daher mal ein vorsichtiger Schuss ins Blaue:
Wenn der Router eine Positionsanfrage stellt könnte er doch seine eigene BSSID mit senden (vielleicht macht er das auch) die mitgesendete BSSID ist bei allen Freifunk Routern in Nordwest gleich. Bzw zukünftig hat zwar jede Hood eine eigene, kommt aber auf das gleiche hinaus. Die eigene BSSID müsste dann bei der Datenbankabfrage am besten ignoriert werden das könnte uns doch helfen oder?
Das stimmt. die Router senden alle empfangenden BSSIDs bei einem WLAN scan (also auch die eigene) an das backend würde man jetzt die Freifunk Router rausfiltern so sollte das wieder genau sein. Nun ist die Frage ob die einfach nur die Freifunk bssids Rausfiltern wollen oder ob wir einen besseren Komplexeren Algorithmus bauen wo dann auch noch das gesamte Projekt von Profitiert?
Imgrunde unterteielt sich das Projekt in 3. Teil Projekte
Die Position abfrage läuft rein über die Libwlocate
Dann gibt es noch eine Android App die, die WLANs sieht und an Hand der eigenen GPS position mit koordinaten versieht (hier bin ich noch nicht ganz sicher Es könnte auch sein das die App die empfangenden Daten + handy position als metrik an das backend schickt und erst im Backend wird die Position der WLANs ermittelt. Sieht aber nicht danach aus)
Und Es gibt noch das Backend was wie es scheint auch einem PHP Script besteht und daten nach bestimmten Kriterien Filtert und in eine MySQL DB schreibt. <-- Hier findet vermutlich auch die Filterung von Redundanten BSSIDs Statt.
Es könnte natürlich auch eine bessere Losung sein wenn man Redundante BSSIDs einfach in der DB mit einen Ignoriere Flag versieht. Denn eine Intention könnte ja sein das nach dem Motto gegangen wird: Eine BSSID eine Position...
Ich bin mir nicht sicher was genau jetzt die bessere Variante ist. Das müsste man denke ich einfach mal ausprobieren da Vor- und Nach-teile schlecht abzuschätzen sind.
vg Tarek
Dev mailing list Dev@lists.ffnw.de https://lists.ffnw.de/mailman/listinfo/dev