Conversation
added 7 commits
September 13, 2026 07:44
…ead of being re-read from raw packets every time a page needs them. Two new tables keep track of each route that has ever been seen and the hops between the two endpoints. This prepares for faster queries in PR2
…async restoration Track user-edited fields in a Set so async applyURLParameters() does not overwrite user input in form pickers if typing occurs while parameter resolution is in flight (e.g. following a timezone toggle or page reload).
…hop tables instead of parsing thousands of raw packets on every request. Link analysis between nodes, related node lists, the hop picker, and the main traceroute table now query the database directly with fast filtering and pagination. This removes the old packet caps so busy networks can analyze full multi-day windows without missing data, and updates the table UI to display exact total counts.
…p tables instead of re-decoding raw packets on every page request. The network graph, maps, longest links, route patterns, node statistics, and packet details now query pre-calculated hops and routes, eliminating slow packet loops and repeated database lookups. Also removed obsolete legacy reader code.
…as shorter connected paths. Hop queries now keep the full route structure, and indirect connections and longest-path results are only built from hops that actually link up end to end, so distances, hop counts, and route previews stay correct.
…odes send positions like (0.0001, 0.0002) instead of exactly (0,0), which slipped past the old checks and placed nodes in the middle of the ocean, inflating longest links and paths. Positions near (0,0) or with impossible coordinates are now discarded wherever positions are read; nodes keep showing their last known good position with its original timestamp instead of jumping or disappearing. The capture log now warns when such a position arrives. Note: longest links and paths are still mostly garbage because of other unlikely positions, but this removes the biggest offender.
joroses
marked this pull request as ready for review
September 15, 2026 06:02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary (PR 3: Discard Bogus Near-Zero GPS Coordinates)
Fixes an issue where firmware bugs in some Meshtastic nodes emit near-zero GPS coordinates such as
(0.0001, 0.0002)instead of exact(0, 0). These invalid fixes bypassed standard(0, 0)checks, placing nodes in the Gulf of Guinea ("Null Island") and severely inflating network distance metrics, map extents, and longest RF links.Key Changes
Coordinate Validation Utility (
geo_utils.py):is_valid_position(latitude, longitude).None, non-finite floats (inf,NaN), coordinates exceeding valid degree ranges ([-90, 90]and[-180, 180]), and any coordinates within a 50 km radius of (0, 0).Ingestion Filtering (
mqtt_capture.py):Fallback to Last Known Good Position (
repositories.py):LocationRepositoryqueries evaluate up to depth 5 of a node's recent position reports. When a node intermittently broadcasts a corrupt fix, queries skip the corrupt report and retain the node's previous valid fix with its original timestamp.Commits
0bfd1d6(Discard bogus near-zero GPS coordinates):(0.0001, 0.0002)) caused by firmware bugs that placed nodes in the Gulf of Guinea ("Null Island") and inflated longest links and path metrics.Verification
tests/unit/test_position_validity.pycovering: