Warning
This source is provided mainly for transparency and educational purposes, and may require significant setup and know-how to get running in a custom environment.
Global Navigation Satellite System (GNSS) Status is a system designed to collect, parse, and display Finnish GNSS and ionospheric data in real-time. The data is provided for free to all users, and is used, for example, in land surveying applications.
The system consists of two parts:
- A sensor application designed to run on an embedded system that collects and parses data from a GNSS sensor.
- The GNSS Status website that displays the collected data.
The C# application collects and parses NMEA0183 sentences from a GNSS sensor and parses ionospheric data from an image. The parsed data is then passed on to an MQTT server for storage.
- NMEA0183 Sentence Parsing: Collects and parses various NMEA0183 sentences such as GGA, GSA, GST, GSV, and NTR.
- Ionospheric Data Parsing: Extracts ionospheric data from the FINPOS Iono image provided by the National Land Survey of Finland to calculate the ionospheric percentage.
- MQTT Integration: Sends the parsed GNSS and ionospheric data to an MQTT server for further processing and storage.
- Configuration Management: Uses a configuration manager to handle various settings such as server addresses, ports, and intervals.
- Something to run the application on, such as a Raspberry Pi.
- GNSS Sensor
- .NET 7.0 SDK
- MQTT Server
-
Clone the repository:
git clone https://github.com/japsuu/GNSSStatus.git cd GNSSStatus
-
Install .NET 7.0 SDK: Follow the instructions on the .NET 7.0 SDK download page to install the SDK on your Raspberry Pi.
-
Build the project:
dotnet publish app/GNSSStatus.sln -r linux-arm64 -c Release --self-contained false /p:PublishSingleFile=true
-
Run the application:
cd app/Build/Release/net7.0/linux-arm64/publish ./GNSSStatus
The application uses a configuration file to manage settings.
An assets/config.json
file is autogenerated on first start to the directory.
Ensure it is correctly configured with your GNSS sensor details, MQTT server details, and other relevant settings.
Once the application is running, it will continuously collect and parse data from the GNSS sensor and the latest available FINPOS ionospheric image. The parsed data will be sent to the configured MQTT server.
The GNSS Status web UI (link) is a website that displays the collected GNSS and ionospheric data in real-time in a user-friendly format.
The user can select from a list of available GNSS sensor instances to view the data from.
Note
The web UI will ONLY list the OFFICIAL GNSS sensor instances. If you are running your own sensor, you will need to modify the source code to include your sensors in the list.
The web UI is built using vanilla HTML, CSS, and JavaScript for maximum compatibility. It is a client-side application and does not require any server-side components to run, allowing it to be hosted on any static web server.
- Real-time: Displays the collected GNSS and ionospheric data in real-time.
- Responsive Design: Works on all devices, from desktops to mobile phones.
- Cross-platform: Works on all modern web browsers and operating systems.
- Lightweight: The web UI is lightweight and loads quickly, even on slow connections.
- Secure: The web UI does not collect any personal data and does not require any permissions to run.
- Translation support: The web UI is available in both English and Finnish.
This section will briefly explain the available configuration options and how to use the web UI:
Settings:
- Selected rover: Select the rover you want to view data from.
- Display mode: Choose the timespan you want to view data from (e.g. "Start of day", "Last 24 hours"...).
- Auto-scale Y: Automatically scale the Y-axis of the graphs to fit the data.
- Show only RTK fixed: Only show data points where the GNSS sensor has a fixed RTK solution.
- Select date & download: Select a specific date to download the data from, as a CSV file.
Graphs:
- dZ: The difference between the GNSS sensor's altitude and the actual real altitude.
- dXY: The difference between the GNSS sensor's position and the actual real position.
Data (measured error):
- DeltaZ: The latest value of the dZ graph.
- DeltaXY: The latest value of the dXY graph.
- Ionosphere: The latest ionospheric percentage. Larger value means more ionospheric interference.
Data (rover data):
- Identifier: The identifier of the GNSS sensor. Each sensor has a unique identifier.
- GPS Time: The current GPS time.
- Distance to Base: The distance between the GNSS sensor and the base station.
- Fix Type: The current fix type of the GNSS sensor. Available values are "No Fix", "RTK Float", and "RTK Fix".
- Satellites in Use: The number of satellites in the GNSS sensor's solution.
- PDOP: The current position dilution of precision.
- HDOP: The current horizontal dilution of precision.
- VDOP: The current vertical dilution of precision.
- Error Latitude: The latitude error.
- Error Longitude: The longitude error.
- Error altitude: The altitude error.
FixType graph:
- Displays the percentages of the different fix types over the selected timespan.
Latest ionosphere status:
- Graph showing the latest ionospheric percentage over time. Provided by the National Land Survey of Finland (FINPOS).
All rights reserved. The source code is provided for educational purposes only and may not be used for commercial purposes without permission. Contact the author for more information.