Gnss monitor: Difference between revisions

From Rsewiki
No edit summary
(Replaced content with "Experiments to extract and display GNSS live or recorded data == Screenshot == 300px 300px 300px Left: Satellite movement in the sky above. Mid: Reported movement of the stationary antenna. Right: Number of tracked satellites over the last ~20 hours. == Installation issues == Weather monitor installation | Instal...")
Tag: Replaced
 
Line 15: Line 15:


[[Wearher monitor modules | Modules]]
[[Wearher monitor modules | Modules]]
== Required packages ==
Some of the packages are merely for convenience, but most are required to run the intended applications.
libreadline-dev
libopencv-dev
libgpiod-dev
gpiod
cmake
subversion
aptitude
apt-file
telnet
ntp
ntpdate
nmap
lsof
libpaho-mqtt-dev
libpaho-mqttpp-dev (if not available, then not needed)
python3-paho-mqtt
python3-opencv
python3-setproctitle
mosquito
mosquitto-dev
mosquitto-clients
libusb-dev
libcli11-dev    (maybe not available)
libgeographiclib-dev
libpaho-mqttpp-dev
qt6-base-dev
qt6-tools-dev
libxkbcommon-dev
sudo apt install libreadline-dev libopencv-dev libgpiod-dev gpiod cmake subversion aptitude apt-file telnet ntp ntpdate nmap lsof python3-paho-mqtt libpaho-mqtt-dev python3-opencv python3-setproctitle mosquitto mosquitto-dev mosquitto-clients libusb-dev libcli11-dev libgeographiclib-dev libpaho-mqttpp-dev qt6-base-dev qt6-tools-dev libxkbcommon-dev
=== For Python install ===
pip install geographiclib
or
sudo apt install python3-geographiclib
=== Build ===
Code is found here (on SVN)
svn co svn://repos.gbar.dtu.dk/jcan/svnjca/projekter/gnss_receiver
The C++ code is then in qt/gnss_qt
Build by
cd gnss_receiver/qt/gnss_qt
mkdir -p build
cd build
cmake ..
make -j3
Debug build by
cd gnss_receiver/qt/gnss_qt
mkdir -p build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j3
Run once to create a configuration file, then edit to configure.
./gnss_qt
nano gnss_qt.ini
Debug run with valgrind
valgrind ./gnss_qt
== CMake problem ==
=== GeographicLibConfig.cmake ===
The find package
find_package(GeographicLib REQUIRED)
in cmake fails, as the file GeographicLibConfig.cmake is not found.
This can be fixed by renaming the provided file ''FindGeographicLib.cmake'' by
cd /usr/share/cmake/geographiclib
sudo ln -s FindGeographicLib.cmake GeographicLibConfig.cmake
=== XKB ===
Missing library, and CMake complains:
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")
The solution was to install
sudo apt install libxkbcommon-dev
This occurred on Raspberry Pi 4-5 using the 64-bit default OS.
=== XCB-plugin ===
When trying to start the Qt app on reboot I got:
Could not load the Qt platform plugin "xcb" in "" even though it was found.
I inserted
export QT_QPA_PLATFORM=xcb
into the 'on_reboot.bash' that is activated by crontab on reboot.
and installed
sudo apt install qt5dxcb-plugin
No, it didn't help. Use desktop-file
=== Autostart QT-GUI app at boot ===
Make a desktop file in ~/.config/autostart/
cd
cd .config
mkdir -p autostart
cd autostart
nano qt_monitor.desktop
Insert the following
[Desktop Entry]
Name=Gnss_qt
Exec=/home/local/on_reboot.fromDesktop
Type=Application
Terminal=true
NoDisplay=false
X-KeepTerminal=true
StartupNotify=true
The file /home/local/on_reboot.fromDesktop is an executable bash script with the following content;
#!/bin/bash
# script to start applications after a reboot
#
cd /home/local/svn/weather_monitor/qt_monitor/build
./gnss_qt -d 2>out_err.txt >out_console.txt
This seems to work better than crontab with an @reboot entry, as it has the XCB issue described above.
== Configure ==
After the gnss_qt is run the first time, there should be a default configuration file, this will need to be modified. E.g. similar to this:
[service]
logpath = /home/local/svn/weather_monitor/log/log_%d/
; the '%d' will be replaced with date and timestamp (must end with a '/'). =
max_logging_minutes = 60.0
log_service = true
[mqttin]
;broker = tcp://10.59.9.201:1883
broker = tcp://10.197.217.56:1883
context = ublox9/
clientid = ublox9_in
function = nmea/
system = ublox9/
log = true
print = false
use = true
[gnss]
;input = ../../../log/gnss_2025_06_18.nmea
input = ../../../log/log_24h_asta_mqtt.txt
input_use = false
log = false
interval_sec = 0
logtime = false
[ini]
; set 'saveconfig' to 'false' to avoid autosave =
saveconfig = true
version = 2285 2025-06-26 07:20:46
[mqttinw]
broker = tcp://192.168.2.216:1883
context = not used
clientid = weather_in
function =
system = weather7/
log = true
print = false
use = false
[weather]
input = ../log/weather-xxx.txt
input_use = false
log = false
interval_sec = 60
logpathload = /home/local/svn/weather_monitor/log/w1
logpathsave = /home/local/svn/weather_monitor/log/w2
logload = false
Each group corresponds to one of the modules in the app:
* Group ''[gnss]''. Input can be from a file, either directly from the receiver ''/dev/ttyACM0'', or a logfile generated by the MQTT streamer for NMEA messages. Set ''input_use = true'' to use this alternative.
* Group ''[mqttin]''. It is for use with an MQTT server that streams the NMEA messages. Change the IP in the ''[mqttin]'' group and change to ''use=true''. The NMEA messages are assumed to be in the payload of the message, and the subject as described (subscribing to 'ublox9/nmea/#').
* Group ''[mqttinw]'' is the input source for weather information.

Latest revision as of 07:50, 14 August 2025

Experiments to extract and display GNSS live or recorded data

Screenshot

Left: Satellite movement in the sky above. Mid: Reported movement of the stationary antenna. Right: Number of tracked satellites over the last ~20 hours.


Installation issues

Installation issues issues.

Modules