[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
need help: have issues with gpsd-client under python
From: |
Beta Tester |
Subject: |
need help: have issues with gpsd-client under python |
Date: |
Thu, 30 Jun 2022 06:52:56 +0200 |
hi, i have several issues with gpsd under python.
i have two Raspberry Pi Zero W (rev.1.3) acting as gpsd-server (via WiFi,
HOST_1:192.168.1.7 & HOST_2:192.168.1.8) with an GPS device on each connected
via serial port on GPIO.
and i have a Raspberry Pi 4 acting as gpsd-client (via LAN-cable,
IP:192.168.1.2) to collect and store gps data from both gpsd-servers.
the gpsd-client is made in python:
two threads are running `gps.gpd(host=HOST_1)`, `gps.gpd(host=HOST_2)` to
collect gps data of interest (`TPV`,`SKY`) and make a copy of it (with
transforming nested dictwrapper to dict) and put the data to a queue.
another thread is taking the data from the queue and store them to a in-memory
database first and every 10 minutes it store the data from the in-memory
database to a file and clean the in-memory database and it starts a script that
uses the data from the database file to publish the data for a local webpage.
everything works well except:
1. `gps.next()` seems to get crazy from time to time in two ways.
case 1: `gps.next()` blocks forever and never returns.
case 2: `gpd.next()` returns the same gps record repeatly over and over.
2. because `gps.next()` or `gps.read()` blocks the thread, is there a way to
set a timeout to get back control to the loop?
or is there a non-blocking way to see if there are data in `gps.gps()`
before entrering the blocking `gps.next()` or `gps.read()`?
3. when starting with `gps.gps(reconnect=True)`, when does a reconnect happen?
i cannot see any difference between reconnect enabled or disabled.
e.g., the gpsd-servers powers off and powers on again,
gps.gps(reconnect=True) does not come back receiving gps data.
4. not every time i get a `StopIteration` exception, then the gpsd-server goes
down while `gps.next()`.
on all Raspberry Pi's there is the newest RasPiOS Bullseye installed and is
full updated.
on all RPi's i tried the debian distribution of gpsd v3.22 and i compiled gpsd
`release-3.22`, `release-3.23`, `release-3.24` and `3.24.1-dev` from source
code.
all RPi's (gpsd-servers/-clients) were always on the same version of gpsd.
the gpsd v3.24 shows up the issue quicker than v3.23
on the gpsd-server on the RPi ZeroW i run `gpsd -D 5 -G -N -n -s 115200
/dev/ttyAMA0 2>&1 | tee /tmp/test-gpsd.txt` as root
do i something wrong in the two gpsd-client threads?
maybe the RPi Zero W with its single core CPU is too weak to handle a
gpsd-client?
the link to the python source code i use, in case someone will watch the code
to point me, what i am doing wrong there:
https://github.com/beta-tester/python-gpsd-client/blob/main/gps_issue.py
PS.: i know `gpsplot` exists. i just want to know what is going wrong in my
application.
thank you in advanced.
- need help: have issues with gpsd-client under python,
Beta Tester <=
Re: need help: have issues with gpsd-client under python, Gary E. Miller, 2022/06/30