====== 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.
* https://git.openwrt.org/?p=project/ugps.git
* https://git.lede-project.org/?p=project/ugps.git
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/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:
*/15 * * * * /usr/scripts/locationupdate.lua