Skip to main content

Python 3 library for working with gpsd

Project description

Python3 GPSD client

This is a library for polling gpsd in Python3.

Forked from (gpsd-py3)[https://github.com/MartijnBraam/gpsd-py3]

Installation

Install through pip::

$ pip3 install py-gpsd2

Usage

Just import it and poll the gps. Only a single gpsd server a time is supported::

import gpsd2

# Connect to the local gpsd
gpsd2.connect()

# Connect somewhere else
gpsd2.connect(host="127.0.0.1", port=123456)

# Get gps position
packet = gpsd2.get_current()

# See the inline docs for GpsResponse for the available data
print(packet.position())

GpsResponse Object Information

Properties

Description and information copied from http://catb.org/gpsd/gpsd_json.html.

  • mode
    • Description: Indicates the status of the GPS reception
    • Availability: Always
    • Data Type: Int
    • Possible Values: 0=no mode value yet seen, 1=no fix, 2=2D fix, 3=3D fix
  • sats
    • Description: The number of satellites received by the GPS unit
    • Availability: Always
    • Data Type: Int
  • lat
    • Description: Latitude in degrees
    • Availability: mode >= 2
    • Data Type:
    • Possible Values: -90.0 to 90.0
  • lon
    • Description: Longitude in degrees
    • Availability: mode >= 2
    • Data Type: float
    • Possible Values: -180.0 to 180.0
  • track
    • Description: Course over ground, degrees from true north
    • Availability: mode >= 2
    • Data Type: float
  • hspeed
    • Description: Speed over ground, meters per second
    • Availability: mode >= 2
    • Data Type: float
  • time
    • Description: Time/date stamp in ISO8601 format, UTC. May have a fractional part of up to .001sec precision May be absent if mode is not 2 or 3.
    • Availability: mode >= 2
    • Data Type: string
    • Sample Value: 2016-08-05T01:51:44.000Z
  • error
    • Description: Error information
      • c - ecp: Climb/sink error estimate in meters/sec, 95% confidence.
      • s - eps: Speed error estinmate in meters/sec, 95% confidence.
      • t - ept: Estimated timestamp error (%f, seconds, 95% confidence). Present if time is present.
      • v - epv: Estimated vertical error in meters, 95% confidence. Present if mode is 3 and DOPs can be calculated from the satellite view.
      • x - epx: Longitude error estimate in meters, 95% confidence. Present if mode is 2 or 3 and DOPs can be calculated from the satellite view.
      • y - epy: Latitude error estimate in meters, 95% confidence. Present if mode is 2 or 3 and DOPs can be calculated from the satellite view.
    • Availability: mode >= 2 (NOTE: c & v require mode >= 3)
    • Data Type: dictionary
    • Possible Values:
  • alt
    • Description: Altitude in meters
    • Availability: mode >= 3
    • Data Type: float
  • climb
    • Description: Climb (positive) or sink (negative) rate, meters per second
    • Availability: mode >= 3
    • Data Type: float

Methods

  • position
    • Description: Get the latitude and longtitude as tuple
    • Availability: mode >= 2
    • Parameters: None
    • Return Type: tuple (latitude, longitude)
    • Sample Value: (39.8333333, -98.585522)
  • speed
    • Description: Get the horisontal speed with the small movements filtered out
    • Availability: mode >= 2
    • Parameters: None
    • Return Type: float
  • position_precision
    • Description: Get the error margin in meters for the current fix
    • Availability: mode >= 2
    • Parameters: None
    • Return Type: tuple (x-y plane, z direction)
  • get_time(local_time: bool)
    • Description: Get the GPS time in UTC or in local timezone
    • Availability: mode >= 2
    • Parameters: local_time
    • Return Type: datetime
  • map_url
  • altitude
    • Description: Get the altitude in meters
    • Availability: mode >= 3
    • Parameters: None
    • Return Type: float
  • movement
    • Description: Get the speed and direction of the current movement as dict
    • Availability: mode >= 3
    • Parameters: None
    • Return Type: dictionary
      • speed
      • track
      • climb
  • speed_vertical
    • Description: Get the vertical speed with the small movements filtered out
    • Availability: mode >= 3
    • Parameters: None
    • Return Type: float

Exception Information

  • NoFixError: Raised when a value is requested with the mode below the threshold for obtaining the data
    • Needs at least 2D fix
    • Needs at least 3D fix
  • General Exceptions
    • Unexpected message received from gps: ...
    • Unexpected data received as welcome. Is the server a gpsd 3 server?

Information on Available Functions

  • connect
    • Description: Connect to a GPSD instance
    • Parameters: host="127.0.0.1", port=2947
    • Return Type: None
  • get_current
    • Description: Poll gpsd for a new position
    • Parameters: None
    • Return Type: GpsResponse Object
  • device
    • Description: Get information about current gps device
    • Parameters: None
    • Return Type: dictionary
      • path
      • speed
      • driver
    • Sample Data: {'speed': 9600, 'path': '/dev/ttyS0', 'driver': 'MTK-3301'}

Sample Code

#!/usr/bin/env python3

import gpsd

# Connect to the local gpsd
gpsd.connect()

# Connect somewhere else
gpsd.connect(host="127.0.0.1", port=123456)

# Get gps position
packet = gpsd.get_current()

# See the inline docs for GpsResponse for the available data
print(" ************ PROPERTIES ************* ")
print("  Mode: " + str(packet.mode))
print("Satellites: " + str(packet.sats))
if packet.mode >= 2:
print("  Latitude: " + str(packet.lat))
print(" Longitude: " + str(packet.lon))
print(" Track: " + str(packet.track))
print("  Horizontal Speed: " + str(packet.hspeed))
print(" Time: " + str(packet.time))
print(" Error: " + str(packet.error))
else:
print("  Latitude: NOT AVAILABLE")
print(" Longitude: NOT AVAILABLE")
print(" Track: NOT AVAILABLE")
print("  Horizontal Speed: NOT AVAILABLE")
print(" Error: NOT AVAILABLE")

if packet.mode >= 3:
print("  Altitude: " + str(packet.alt))
print(" Climb: " + str(packet.climb))
else:
print("  Altitude: NOT AVAILABLE")
print(" Climb: NOT AVAILABLE")

print(" ************** METHODS ************** ")
if packet.mode >= 2:
print("  Location: " + str(packet.position()))
print(" Speed: " + str(packet.speed()))
print("Position Precision: " + str(packet.position_precision()))
print("  Time UTC: " + str(packet.time_utc()))
print("Time Local: " + str(packet.time_local()))
print("   Map URL: " + str(packet.map_url()))
else:
print("  Location: NOT AVAILABLE")
print(" Speed: NOT AVAILABLE")
print("Position Precision: NOT AVAILABLE")
print("  Time UTC: NOT AVAILABLE")
print("Time Local: NOT AVAILABLE")
print("   Map URL: NOT AVAILABLE")

if packet.mode >= 3:
print("  Altitude: " + str(packet.altitude()))
# print("  Movement: " + str(packet.movement()))
# print("  Speed Vertical: " + str(packet.speed_vertical()))
else:
print("  Altitude: NOT AVAILABLE")
# print("  Movement: NOT AVAILABLE")
# print(" Speed Vertical: NOT AVAILABLE")

print(" ************* FUNCTIONS ************* ")
print("Device: " + str(gpsd.device()))

Sample Output

     ************ PROPERTIES *************
                  Mode: 3
            Satellites: 10
              Latitude: 39.8333333
             Longitude: -98.585522
                 Track: 237.31
      Horizontal Speed: 0.0
                  Time: 2016-08-05T03:02:13.000Z
                 Error: {'v': 31.97, 't': 0.005, 'x': 10.055, 'c': (63.94,), 's': 35 .16, 'y': 17.58}
              Altitude: 100.3
                 Climb: 0.0
     ************** METHODS **************
               Location: (39.8333333, -98.585522)
                  Speed: 0
     Position Precision: (17.58, 31.97)
               Time UTC: 2016-08-05 03:02:13
             Time Local: 2016-08-04 23:02:13-04:00
                Map URL: http://www.openstreetmap.org/?mlat=39.8333333&mlon=-98.585522&zoom=15
               Altitude: 100.3
     ************* FUNCTIONS *************
                 Device: {'driver': 'MTK-3301', 'path': '/dev/ttyS0', 'speed': 9600}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_gpsd2-0.1.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_gpsd2-0.1.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file py_gpsd2-0.1.0.tar.gz.

File metadata

  • Download URL: py_gpsd2-0.1.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for py_gpsd2-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4d0fed77c646bb85944145eda747a0caa2fcc2a1779daf3d4df9e3e6a384ab62
MD5 ff948a69d93b57f300abca7261280747
BLAKE2b-256 9ddc03125ecf40af5855b4d3c4c8197c6eb31e6c190a408e05a9d8725521968e

See more details on using hashes here.

File details

Details for the file py_gpsd2-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: py_gpsd2-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for py_gpsd2-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 218f75e92b46eb38c1c6cc7858c8ec665d4770371c99edfeed3d3bfa9a8b95d3
MD5 73c63bc9e084c4acb247b3b17f9d57ac
BLAKE2b-256 ca845bc6151b790a29d716731c627554933d32d773bdd3cc18c0684d46a362d1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page