Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- '''
- https://raspberry.tips/projekte/gps-tracking-mit-dem-raspberry-pi
- '''
- from subprocess import call, PIPE
- from time import sleep
- from datetime import datetime as dt
- from pathlib import Path
- import logging
- logging.basicConfig()
- logger = logging.getLogger(__file__)
- def terminate():
- '''
- Terminate existing gpsd instances and
- start gpsd and sleep a few seconds
- '''
- ret_val1 = call(['sudo', 'killall', 'gpsd'], stderr=PIPE, stdout=PIPE)
- ret_val2 = call(['sudo', '/usr/sbin/gpsd', '/dev/ttyAMA0', '-F', '/var/run/gpsd.sock'], stderr=PIPE, stdout=PIPE)
- if ret_val1 or ret_val2:
- raise Exception('Could not kill gpsd or start gpsd')
- sleep(30)
- def refresh_time():
- '''
- Refresh the local time
- '''
- call(['sudo', 'service', 'ntp', 'restart'])
- sleep(3)
- def make_filename():
- '''
- output file name with actual date
- '''
- now = dt.now().replace(microsecond=0).isoformat()
- return Path('/home/pi/') / (now + '-gps_track')
- def start():
- '''
- start gpspipe and output
- the GPS Data as NMEA to file
- '''
- filename = make_filename()
- call(['gpspipe', '-d', '-l', '-r', '-o', filename], stderr=PIPE, stdout=PIPE)
- if __name__ == '__main__':
- logger.setLevel(logging.INFO)
- exc = lambda err: logger.critical(err)
- try:
- logger.info('Terminating process')
- terminate()
- except Exception as err:
- exc(err)
- try:
- logger.info('Refreshing time')
- refresh_time()
- except Exception as err:
- exc(err)
- try:
- logger.info('Start reading process')
- start()
- except Exception as err:
- exc(err)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement