Wiki - Freifunk Pinneberg

Freies WLAN im Kreis Pinneberg

Benutzer-Werkzeuge

Webseiten-Werkzeuge


gps

GPS am Freifunk-Knoten

Die folgenden Informationen beziehen sich auf Gluon >= 2016.1.x.

Erfolgreich getestete Hardware

  • Navilock NL-601US - USB GPS-Stick
    • Für Empfang ist freie Sicht erforderlich, ggf. ein USB-Verlängerungskabel verwenden
  • Navilock NL-602U - USB GPS-Maus mit Kabel
    • Empfang auch im Innenraum mit ca. 1m Abstand zum Fenster erfolgreich
    • Viel schnellerer Fix als beim NL-601US

siehe auch: http://www.gpsinformation.org/dale/nmea.htm

Das Modul ist momentan nicht in der Pinneberger Standardfirmware. Um es zu integrieren, muß die Site-Konfiguration etwas angepaßt werden:

GLUON_TLWR1043_SITE_PACKAGES := $(USB_PACKAGES_BASIC) $(USB_PACKAGES_GPS)
opkg update
opkg install kmod-usb-acm

Test

cat /dev/ttyACM0

UGPS

Es gibt kleinen GPS-Daemon ugps, der sich für die Positionsermittlung anbietet.

In Gluon ist das Paket zu finden unter openwrt/package/utils/ugps. Dort ist ein Makefile, was die Integration steuert. Im Openwrt ist eine veraltete, nicht funktionsfähige Version konfiguriert. Das Makefile ist mit der entsprechenden Commit-Nummer und dem dazugehörigen Datum anzupassen.

In der aktuellen Version sind noch Fehler, für die jedoch bereits ein Patch existiert.

Die aktuellen GPS-Daten kann man wie folgt abfragen:

ubus call gps info

Die ubus-Daten können automatisiert an uci übergeben werden. Beachte es ist kein commit eingebaut, damit keine Flash-Schreibzugriffe stattfinden:

/usr/scripts/locationupdate.lua
#!/usr/bin/lua
 
UTIL = require 'luci.util'
JSON = require 'luci.jsonc' 
 
rawdata = UTIL.exec("ubus call gps info")
if rawdata == nil or rawdata == '' then
  os.exit()
end
 
gpsdata = JSON.parse(rawdata)
if (gpsdata.signal == false) or (gpsdata.age > 900) then
   UTIL.exec("uci set gluon-node-info.@location[0].share_location='0'")
   os.exit()
end
 
UTIL.exec("uci set gluon-node-info.@location[0].share_location='1'")
UTIL.exec("uci set gluon-node-info.@location[0].latitude=" .. gpsdata.latitude)
UTIL.exec("uci set gluon-node-info.@location[0].longitude=" .. gpsdata.longitude)

Position automatisch aktualisieren:

/usr/lib/micron.d/gps
*/15 * * * * /usr/scripts/locationupdate.lua
gps.txt · Zuletzt geändert: 20.01.2018 11:48 von havelock