|
|
| 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.
| |