====== 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