Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
GPS Zeit aus Navit in Skript schreiben?
#8
So, ich hab mal ein wenig in meinen "alten Dateibeständen" gekramt. Ich wusste ich hatte so was ähnliches schon mal gebraucht. Bei unserem ersten Wetterballon ist noch ein RPi mitgeflogen (ist inzwischen von einem Arduino ersetzt worden). Genau das gleich Problem mit der Systemzeit hatten wir da auch.
Hier
bin ich damals fündig geworden und habe auch vom Autor sehr nette und schnelle Hilfe bekommen. Das Python Script von der Seite hatten wir damals abgeändert um dem RPi die Systemzeit beizubringen. Ich habe das jetzt noch ein wenig angepasst. Dabei ist das raus gekommen (ich habe es gpstime.py genannt):
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import serial
import time
import datetime
import commands
import os
import sys

# Dictionary fuer die empfangene Daten
Protokolle = {}
# Variablen fuer die Uhrzeit
Uhrzeit = ""
Datum = ""
Stunde = ""
Minute = ""
Sekunde = ""
Tag = ""
Monat = ""
Jahr = ""

# UART oeffnen
UART = serial.Serial("/dev/ttyACM0", 9600)
UART.isOpen()

while True:
    Protokolle = {}
    for Counter in range(3):

        Daten = []

        # Zeile einlesen
        Zeile = UART.readline()
        Zeile = Zeile.strip()
        # Zeile trennen
        Daten = Zeile.split(",")
        # Daten dem Dictionary hinzufuegen
        Schluessel = Daten[0]
        del Daten[0]
        Protokolle.update({Schluessel:Daten})
    for Key in Protokolle.iterkeys():
        # Daten extrahieren
        if(Key == "$GPRMC"):
            # Datum formatieren
            Uhrzeit = Protokolle[Key][0]
#           UTC + 1 Stunde
            Stunde = int(float(Uhrzeit[0:2]) + 1)
            Minute = Uhrzeit[2:4]
            Sekunde = Uhrzeit[4:6]
            Datum = Protokolle[Key][8]
            Tag = Datum[0:2]
            Monat = Datum[2:4]
            Jahr = Datum[4:6]
            Seperator = "."

#           Systemzeit zusammen setzen (MMDDhhmmYY.ss)
            Systemzeit = Monat+Tag+str(Stunde)+Minute+Jahr+Seperator+Sekunde

#           Sytemzeit setzen
            os.system('sudo date ' + str(Systemzeit))

            print Key
            print Monat
            print Tag
            print Stunde
            print Minute
            print Jahr
            print Systemzeit
            time_set = True
            UART.close()

            sys.exit()
            time.sleep(1)
gpstime.py habe ich in /home/pi erstellt und mit
Code:
chmod +x gpstime.py
ausführbar gemacht.
Folgende Zeile muss noch an die eigene Schnittstelle angepasst werden. Wie man die raus findet erklärt CHristian hier.
Code:
UART = serial.Serial("/dev/ttyACM0", 9600)
Das Script holt sich aus den NMEA Daten den GPRMC Datensatz und daraus dann das Datum und die Uhrzeit und übergibt das dem RPi als Systemzeit.
Damit das alles auch automatisch abläuft, lasse ich das Script von /etc/rc.local beim Systemstart aufrufen:
Code:
python /home/pi/gpstime.py &
Bei einem ersten Test hatte mein USB-GPS "leider" sofort einen Fix. Also hat alles super funktioniert.
Da ich leider von Python keine große Ahnung habe, weiß ich noch nicht was das Skript macht wenn der GPS Empfänger länger zum Fix braucht. Ich hoffe das meiner jetzt über Nacht alles vergisst und er morgen früh länger für einen Fix braucht. Dann kann ich dazu vielleicht mehr sagen.
Sollte das mit der rc.local keine gute Idee sein, könnte man das Script auch in crontab z.B. die 2./5. und 7. Minute nach Systemstart starten lassen. Ich werde berichten.
Zitieren


Nachrichten in diesem Thema
RE: GPS Zeit aus Navit in Skript schreiben? - von tigger-gg - 22.03.2017, 00:04

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
RasPiCarProjekt