GPS am Freifunk-Knoten

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

Erfolgreich getestete Hardware

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