Freifunk Location - Update via GPS

Dein Handy lädt den GPS-Almanach auch regelmäßig aus dem Internet, während der Dongle erst einen/mehrere Satelliten finden muss, um ihn zu empfangen. Der GPS Almanach enthält immer die (erwarteten) Positionsdaten der Satelliten der nächsten paar Tage. Wenn dieser noch aktuell ist, kriegt man schnell einen Fix, ansonsten dauert es etwas. Ich erinnere mich, wie wir als Stunden immer mit den Garmin 12XL rumgelaufen sind, und man gut und gerne draussen auch mal 10 Minuten warten musste, bis man einen Fix hatte…

1 „Gefällt mir“

Freut mich, dass das das klappt. :slight_smile:

Das zweite Feld (A oder V) steht dafür ob das Signal Active oder Void
(nicht valide) ist.
Eine brauchbare Spec gibt es hier: GPS - NMEA sentence information

Wie Tino bereits sagte, wird dein Receiver etwas brauchen um den
Almanach herunterzuladen. Der Navilock ist da auch nicht gerade der
schnellste. :slight_smile:

(sorry fürs doppelposten, aber Antwort per e-Mail scheint Zeilen zu fressen)

VG
xelo

Wenn Ihr daraus ein Gluon-Modul backen könntet, dann wäre das sehr hilfreich.
evtl. Konfigurierbar, ob die onboard-RS232 (die Console) genutzt werden soll oder einer USB-RS232 (prolific-clone idR).

So, ich habe letzte Woche mal diese Idee wieder ausgegraben. Das ist echt cool.

Jedenfalls funktioniert das auch ganz hervorragend mit einem billigen USB-GPS-Stick aus der Bucht (auf ublox7-Basis).
Hier: http://r.ebay.com/UJBx1m

Das einzige, was man bei diesem 15 EUR - Teil beachten muss ist, dass man das Kernel-Modul kmod-usb-acm noch mit installiert.

Das Teil meldet sich dann unter /dev/ttyACM0

Have fun!

Ich habe 5 Beiträge in ein neues Thema verschoben: Standardformat für die Höhenangabe in Gluon (ab 2015.x)

Ich habe das heute mal versucht, auch mit dem TL3020.
Es scheitert aber schon bei
opkg install kmod-usb-core
Das kmod-usb-core gibt es nicht (mehr)

Vorher mal ein opkg update gemacht?

Ich hab 11 Beiträge in ein vorhandenes Thema verschoben: Pakete per opkg nachinstallieren

Bin gerade zufällig auf das Thema gestoßen und blicke nicht so ganz durch, daher entschuldigt bitte, wenn die Antwort auf die Frage sich aus euren Posts eigentlich schon ergibt…

Wir haben in Düren ein paar Event-Router (ca. 10 Stück), die wir halt regelmäßig auf Veranstaltungen aufbauen. Die heißen alle „DN-Event-xxx“ und sind ohne Koordinaten konfiguriert, weil uns das zu aufwendig ist, bei einer eintägigen Veranstaltung alle Router umzukonfigurieren. Jetzt kam mir gerade die Idee, dass wir uns ja einfach so einen günstigen USB-GPS-Stick zulegen könnten. Wäre es dann theoretisch möglich, einfach bei einem Event einmal rumzugehen, bei allen kurz den Stick dranstecken, damit die automatisch ihre Koordinaten beziehen und an die Map senden und dann den Stick einfach wieder abzuziehen und das dann bei allen Routern auf dem Event?

1 „Gefällt mir“

Ja, da spricht eigentlich nichts gegen. Müssten auf allen Router dann natürlich die entsprechenden Pakete und das Script installiert sein. Zudem muss man natürlich auch die Zeit beachten, die das DIng für den GPS-Fix braucht… das geht leider nicht immer in sekundenschnelle. Wenn man an jedem Router erst 5min warten muss, bis der Fix da ist… dann hab ich die Koordinaten zumindest bei nem Event schneller über z.B. Flopps Karte ermittelt. 10 Router jeweils mit GPS auszustatten ist ja dann auch keine Option.

2 „Gefällt mir“

Kurze Info: Für einen Navilock NL-602U muss man folgendes Modul noch installieren:

opkg install kmod-usb-acm

Der Empfänger ist dann unter /dev/ttyACM0 zu finden.

Anderer Ansatz:

1.) Stell Dir vor, irgendwo im Internet (z.B. auf Dropbox oder in einem eigenen Webspace, halt irgendwas, wo man schnell 'ne Datei editieren/ablegen kann) liegt eine Datei Dueren-Event.txt mit folgendem Inhalt:

DN-Event-Alpha: 50.771, 6.081
DN-Event-Beta: 50.772, 6.082
DN-Event-Delta: 50.773, 6.083
DN-Event-Gamma: 50.774, 6.084

2.) Auf allen Event.Routern läuft ein Scriptchen, dass sich alle 10 Minuten diese Datei per Wget holt, sich die dort eingetragene Koordinate rausfrimmelt, und im Router hinterlegt.

3.) Nachdem eure Router bei einem Event aufgestellt sind, muss nur diese Datei einmal editiert und den Gegebenheiten angepasst werden, die Router ziehen sich dann die Info selbständig aus dem Internet. Das ist meiner Meinung nach sogar noch weniger Arbeit als mit dem GPS-Dongle rumzulaufen, und nach und nach (inkl. Wartepause auf den GPS-Fix) in die Router zu stecken.

Gruß
Frank

1 „Gefällt mir“

Der netmon/netmon2 (wird von Freifunk-Nordwest verwendet) ermöglicht das:

Es gibt auf der Community-Seite die Möglichkeit, User-Accounts anzulegen.
Und in diese Useraccounts kann man dann die „eigenen Router“ zuordnen (anhand der Mac-Adresse)

Sobald das passiert ist, kann man für „seine“ Router auf der Webseite zumindest den Namen und die Koordinaten einstellen.
Die Router selbst schauen rund alle Stunde nach, ob es Änderungen für sie gibt und ziehen sich diese dann in die lokale Config, so dass dann auch der Alfred „auf normalem Weg“ mit richtigen Daten versorgt wird.

Die Idee ist echt gut - ich ärgere mich gerade, warum ich nicht selber da drauf gekommen bin :smiley:
Für das Event dieses WE ist es zu spät (haben gerade die Router angeschlossen), aber bis zum nächsten werde ich auf jeden Fall mal ein kleines Skript schreiben und das hier oder auf Github posten! :slight_smile:

2 „Gefällt mir“

Dropbox könnte schwierig werden, da auch die statischen URLs immer auf 302er auf temporäre Dateien umgebogen werden, die dann aber https sind. Ich weiss nicht, ob es per http auch geht.

Hey, ich sehe aber noch wesentliches Ausbaupotential Deiner mobilen Technik.

Die Parkscheibe ist ja noch von Hand verstellbar und nicht mit dieser hier ersetzt:

:wink:

Ich habe es jetzt zum laufen bekommen :smile:
Kleine Ergänzung jeweils:
Als erstes im script (Falls kein GPS angeschloßen)
und im else-Teil (für den Fall ungültiger Koordinaten)
uci set gluon-node-info.@location[0].share_location=0;

Dann verschwindet der Knoten.

@M7880

Dann poste doch mal dein Script hier, ist bestimmt auch für andere interessant…

Hier ist es:
Das Device ist bei mir ttyACM0.
Muss man auf das jeweilige Gerät anpassen.

# Configure GPS
stty -F /dev/ttyACM0 raw 4800 cs8 clocal -parenb crtscts -cstopb;
uci set gluon-node-info.@location[0].share_location=0;

# Use GPS  as Stream
exec 4</dev/ttyACM0;
while true
do
    read this_line;
    nc=`echo $this_line | cut -d',' -f 1`;
    if [ "$nc" = '$GPRMC' ];
    then                           
        valid=`echo $this_line | cut -d',' -f 3`;
        if [ "$valid" = "A" ];
        then
            #First: Retrieve coordinate
            lat=`echo $this_line | cut -d',' -f 4`;
            lon=`echo $this_line | cut -d',' -f 6`;

            # Second: Determine if coordinate is oriented North/South or East/West
            latdir=`echo $this_line | cut -d',' -f 5`;
            londir=`echo $this_line | cut -d',' -f 7`;

            # Split DEGREES from coordinate
            latdeg="$(echo ${lat:0:2} | sed 's/^0*//')";
            londeg="$(echo ${lon:0:3} | sed 's/^0*//')";

            # Split MINUTES.SECONDS from coordinate
            latmin=`echo ${lat:2}`;
            lonmin=`echo ${lon:3}`;

            #Convert from Degree-Minutes to Decimal-Minutes
            latdec=$(awk -v l="$latmin" 'BEGIN {printf "%f", l/60}' | sed 's/^0*//')
            londec=$(awk -v l="$lonmin" 'BEGIN {printf "%f", l/60}' | sed 's/^0*//')

            #Use negative notation instead of North/South or East/West
            if [ $latdir = 'S' ];
            then
                latdeg="-"$latdeg;
            fi
            if [ $londir = 'W' ];
            then
                londeg="-"$londeg;
            fi
            echo "Position is valid Lat/Lon: "$latdeg$latdec   $londeg$londec;
            
            # Write to config
            uci set gluon-node-info.@location[0].share_location=1;
            uci set gluon-node-info.@location[0].latitude=$latdeg$latdec;
            uci set gluon-node-info.@location[0].longitude=$londeg$londec;
            # uci commit gluon-node-info; See Phip's comment below why this should not be done here.
            break;
        else
            echo "Position is Invalid..." $valid;
            uci set gluon-node-info.@location[0].share_location=0;
           break;
        fi
    fi
done <&4;
exit 0;

Cronjob einrichten (Überschreibt sämtliche vorhandene Cronjob-Einträge! Besser mit vi gucken/machen.):

echo '3 * * * * sh /usr/script/gps.sh > /dev/null' > /etc/crontabs/root