Hi,
Hat jemand Lust und vorallem Zeit das libwlocate-Backend weiter zu entwickeln? Die Problematik ist das der aktuelle Algorithmus nur ein BSSID mit einer angegebenen Position erlaubt. Das ist natürlich sehr einfach gedacht und führt dann zu Problemen wie man es z.b. am Freifunk sieht..
https://sourceforge.net/p/libwlocate/code/ci/master/tree/master/web/
Ich hab mal einen Mail aus schnitt von mir und Michael angehängt.
vg Tarek
Wir verhält es sich wenn n identischen SSIDs und BSSIDs in der DB sind ?
SSIDs werden nicht gespeichert, nur die BSSIDs und deren Position. Da die BSSID gleichzeitig der Key für die DB ist, kann so ein AP eigentlich nur einmal existieren. Bei der Abfrage einer Position schlägt dann eine Fehlerkorrektur zu: befindet sich bei mehr als zwei APs einer laut Datenbank zu weit von allen anderen weg, so wird er als potentiell falsch markiert. Sammelt dieser AP im Laufe der Zeit zu viele "Falsch"-Marierkungen, wird er automatisch gelöscht und die fehlerhafte Position existiert nicht mehr. Das kann aber schon so 5..10 Abfragen lang dauern.
Meine Idee Wäre das n BSSIDs in der DB existieren können. Je mehr Smartphons die Echtheit der Router Position bestätigen des so höher soll eine Wahrscheinlichkeit über die Korrektheit der Position werden. Zudem könnte man den output bei einer Positionsabfrage gpsd kompatibel ausgeben.
Der Algorithmus zur Ermittlung der Position bei einer anfrage über die libwlocate scheint sehr gut zu funktionieren.
vg Tarek
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?
Gruß
Johannes
Am 2016-02-03 18:20, schrieb Jan-Tarek Butt via Dev:
Hi,
Hat jemand Lust und vorallem Zeit das libwlocate-Backend weiter zu entwickeln? Die Problematik ist das der aktuelle Algorithmus nur ein BSSID mit einer angegebenen Position erlaubt. Das ist natürlich sehr einfach gedacht und führt dann zu Problemen wie man es z.b. am Freifunk sieht..
https://sourceforge.net/p/libwlocate/code/ci/master/tree/master/web/
Ich hab mal einen Mail aus schnitt von mir und Michael angehängt.
vg Tarek
Wir verhält es sich wenn n identischen SSIDs und BSSIDs in der DB sind ?
SSIDs werden nicht gespeichert, nur die BSSIDs und deren Position. Da die BSSID gleichzeitig der Key für die DB ist, kann so ein AP eigentlich nur einmal existieren. Bei der Abfrage einer Position schlägt dann eine Fehlerkorrektur zu: befindet sich bei mehr als zwei APs einer laut Datenbank zu weit von allen anderen weg, so wird er als potentiell falsch markiert. Sammelt dieser AP im Laufe der Zeit zu viele "Falsch"-Marierkungen, wird er automatisch gelöscht und die fehlerhafte Position existiert nicht mehr. Das kann aber schon so 5..10 Abfragen lang dauern.
Meine Idee Wäre das n BSSIDs in der DB existieren können. Je mehr Smartphons die Echtheit der Router Position bestätigen des so höher soll eine Wahrscheinlichkeit über die Korrektheit der Position werden. Zudem könnte man den output bei einer Positionsabfrage gpsd kompatibel ausgeben.
Der Algorithmus zur Ermittlung der Position bei einer anfrage über die libwlocate scheint sehr gut zu funktionieren.
vg Tarek
Dev mailing list Dev@lists.ffnw.de https://lists.ffnw.de/mailman/listinfo/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
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
Hi,
ich fasse mal die Diskussion von Freitag zusammen.
Sehr gut danke dir.
Zur Verbesserung der Autolocator Positionierung sollten wir mehrere Steps abarbeiten.
Ich würde vorschlagen die Diskussion erst mal auf die openwifi Lokalisierung zu beschränken. Mit MLS setze ich mich schon sein ein paar Tagen auseinander und bin von den Ergebnissen her noch nicht wirklich begeistert. Dazu kommt aber in einer gesonderten Mail noch was.
- 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]
Das war die erste idee.
Eine Weitere idee war es ja auch z.B. das Prinzipien mit einer BSSID eine Position in der DB bei zu behalten und sowas wie temporäres blacklisting einzubauen. Dazu könnte man im Backend z.B. folgenden Mechanismus einbauen: Tauchen zwei identische BSSIDs mit unterschiedlichen Koordinaten größer 1km Distanz auf, wird die BSSID die bereits in der DB steht gelöscht und die aktuell empfangende landet auf einer blaglist mit timestamp erscheint diese BSSID nicht noch mal außerhalb eines radius von z.b. 1km so läuft nach 1 Woche der blacklist timer für die gesperrte BSSID aus und wandert in die eigentliche db. Passiert der Fall das die BSSID außerhalb eines 1kms wieder versucht wird in die DB zu laden so aktuallisirt sich lediglich der blacklist countdown.
Bei Beinen Fällen müsste auch eine Apwärtspompatibilität kein Problem sein.
- 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?
Prinzipiell ja allerdings müssen wir aufpassen da ich äußeres ungern die Abwärtskompatibilität in der libwlocate verlieren wollen würde. Die libwlocate ist imgrunde hier hin gewandert: https://github.com/openwifi-su/lwlocate
Gruß Tarek
Hi,
- 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.
Die Router führen aktuell auch keine Berechnungen durch. Bei den MLS wird es auch nicht notwendig sein die Position lokal zu ermitteln. Zumindest hatte ich der der gleichen nicht in geoclue gefunden: https://cgit.freedesktop.org/geoclue
Ich bin da aktuell noch dran zu prüfen wie genau die Funktionsweise bei MLS ist. Die manuell anfrage für API keys finde ich da tatsächlich störend.
- 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?
Ich bin mir bei dem Backend bei Mozilla Location Servive nicht ganz sicher für mich scheint das ziemlich close source zu sein. Es gibt keinen offenen code zum backend zumindest hab ich da noch nix gefunden und auch das erreichen oder mirrorn der DBs scheint nicht ohne weiteres möglich zu sein. Ich wollte da die Tage noch ne Mail hinschreiben um Klarheit zu schaffen.
vg Tarek
Moin
Können wir dazu mal ein develop Treffen machen wo wir diese Sachsen besprechen und wir auch direkt was produktives produzieren könnten.
Ich würde gleich einfach damit wir einen haben einen API Key beantragen für MLS
Gruß
Johannes
Von meinem iPhone gesendet
Am 08.02.2016 um 13:34 schrieb Jan-Tarek Butt via Dev dev@lists.ffnw.de:
Hi,
- 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.
Die Router führen aktuell auch keine Berechnungen durch. Bei den MLS wird es auch nicht notwendig sein die Position lokal zu ermitteln. Zumindest hatte ich der der gleichen nicht in geoclue gefunden: https://cgit.freedesktop.org/geoclue
Ich bin da aktuell noch dran zu prüfen wie genau die Funktionsweise bei MLS ist. Die manuell anfrage für API keys finde ich da tatsächlich störend.
- 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?
Ich bin mir bei dem Backend bei Mozilla Location Servive nicht ganz sicher für mich scheint das ziemlich close source zu sein. Es gibt keinen offenen code zum backend zumindest hab ich da noch nix gefunden und auch das erreichen oder mirrorn der DBs scheint nicht ohne weiteres möglich zu sein. Ich wollte da die Tage noch ne Mail hinschreiben um Klarheit zu schaffen.
vg Tarek
Dev mailing list Dev@lists.ffnw.de https://lists.ffnw.de/mailman/listinfo/dev
Hi,
Können wir dazu mal ein develop Treffen machen wo wir diese Sachsen besprechen und wir auch direkt was produktives produzieren könnten.
Ich würde gleich einfach damit wir einen haben einen API Key beantragen für MLS
danke dir.
Was hälts du von einem Mumble heute Abend? Oder bist du zufälligerweise in Oldenburg und hast spontan heute aben bock auf backend foo ;) ?
vg Tarek
Moin
Diese Woche ist schlecht bei mir. Nächste Woche hab ich mehr Zeit
Johannes
Von meinem iPhone gesendet
Am 11.02.2016 um 15:36 schrieb Jan-Tarek Butt via Dev dev@lists.ffnw.de:
Hi,
Können wir dazu mal ein develop Treffen machen wo wir diese Sachsen besprechen und wir auch direkt was produktives produzieren könnten.
Ich würde gleich einfach damit wir einen haben einen API Key beantragen für MLS
danke dir.
Was hälts du von einem Mumble heute Abend? Oder bist du zufälligerweise in Oldenburg und hast spontan heute aben bock auf backend foo ;) ?
vg Tarek
Dev mailing list Dev@lists.ffnw.de https://lists.ffnw.de/mailman/listinfo/dev
Moin
ich greife das noch mal auf wer aufmerksam sucht und liest.
Am 08.02.2016 um 13:34 schrieb Jan-Tarek Butt via Dev dev@lists.ffnw.de:
Hi,
- 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.
Die Router führen aktuell auch keine Berechnungen durch. Bei den MLS wird es auch nicht notwendig sein die Position lokal zu ermitteln. Zumindest hatte ich der der gleichen nicht in geoclue gefunden: https://cgit.freedesktop.org/geoclue
Ich bin da aktuell noch dran zu prüfen wie genau die Funktionsweise bei MLS ist. Die manuell anfrage für API keys finde ich da tatsächlich störend.
- 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?
Ich bin mir bei dem Backend bei Mozilla Location Servive nicht ganz sicher für mich scheint das ziemlich close source zu sein. Es gibt keinen offenen code zum backend zumindest hab ich da noch nix gefunden und auch das erreichen oder mirrorn der DBs scheint nicht ohne weiteres möglich zu sein. Ich wollte da die Tage noch ne Mail hinschreiben um Klarheit zu schaffen.
Mozilla Location Service ist eine Instanz von „Ichnaea“
https://github.com/mozilla/ichnaea/
Mozilla bietet es also als Service an. Von daher doch Open Source. Man könnte es auch selber aufsetzten nur fehlen einem dann alle Daten und man muss es selber machen ^^
vg Tarek
Dev mailing list Dev@lists.ffnw.de https://lists.ffnw.de/mailman/listinfo/dev
Gruß
Johannes