Commit Graph

91 Commits

Author SHA1 Message Date
James Smith f3d25b89c7 Add support for FlightAware dump1090-fa binary
Users building dump1090-fa from source (e.g., on Debian Trixie where
dump1090-mutability is unavailable) can now use it with ADS-B tracking.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 22:35:18 +00:00
James Smith 379de1dbea Refactor into modular structure with improvements
- Split monolithic intercept.py (15k lines) into modular structure:
  - routes/ - Flask blueprints for each feature
  - templates/ - Jinja2 HTML templates
  - data/ - OUI database, satellite TLEs, detection patterns
  - utils/ - dependencies, process management, logging
  - config.py - centralized configuration with env var support

- Add type hints to function signatures
- Replace bare except clauses with specific exceptions
- Add proper logging module (replaces print statements)
- Add environment variable support (INTERCEPT_* prefix)
- Add test suite with pytest
- Add Dockerfile for containerized deployment
- Add pyproject.toml with ruff/black/mypy config
- Add requirements-dev.txt for development dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 16:28:48 +00:00
Smittix 23abd5c6dd Update README.md 2025-12-22 18:09:57 +00:00
James Smith 62cb76441b Remove accidental file 2025-12-22 18:00:44 +00:00
James Smith d4c1ce2040 Fix polar plot trajectory to only show during active passes
The trajectory line now only appears when the satellite is currently
making the selected pass, fixing the confusing mismatch between the
predicted path and real-time position.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 18:00:20 +00:00
James Smith 9a4a629427 Fix satellite orbit track crossing antimeridian
Split orbit track into segments when longitude jumps > 180° to prevent
Leaflet from drawing lines across the entire map at the antimeridian.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:33:33 +00:00
James Smith b07a46809b Fix satellite dashboard map - remove old track lines properly
- Clear trackLine, satMarker, and orbitTrack before adding new ones
- Remove duplicate cleanup code
- Clear pass track when showing live orbit to avoid confusion

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:26:44 +00:00
James Smith d995199c22 Fix ADS-B field name: use 'alt' instead of 'altitude'
Dashboard expects 'alt' but backend was sending 'altitude'.
Fixed in MSG,3 and MSG,5 parsing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:13:06 +00:00
James Smith e838f79304 Fix ADS-B start endpoint and add debugging
- Return 'success' status instead of 'started'
- Return 'already_running' status instead of 'error' when already running
- Add console logging in dashboard for debugging
- Add backend print statements for debugging
- Better error message display in alerts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:10:21 +00:00
James Smith e1af4fc7c0 Fix aircraft dashboard start tracking status check
- Accept 'started' status in addition to 'success' and 'already_running'
- Show actual status in error message for debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:08:47 +00:00
James Smith 6dc7751569 Add hi-tech ADS-B aircraft radar dashboard
- New route at /adsb/dashboard for standalone aircraft tracking
- Green-themed radar display with animated grid background
- Live map with aircraft markers colored by altitude
- Aircraft list sorted by altitude with callsign, speed, heading
- Selected aircraft detail panel with full telemetry
- Statistics panel (total, with position, max/avg altitude)
- Start/Stop tracking button
- Auto-cleanup of stale aircraft after 60 seconds
- Responsive layout for different screen sizes
- Uses existing /adsb/stream SSE endpoint for real-time data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:02:26 +00:00
James Smith 244c0685b1 Fix JSON serialization errors - convert numpy types to native Python
- Convert all skyfield/numpy values to float() in /satellite/position
- Convert all skyfield/numpy values to float() in /satellite/predict
- Use bool() for visible flag
- Use int() for duration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:54:43 +00:00
James Smith e88f1df208 Fix field name mismatches between backend and frontend
- Backend: trajectory uses 'el'/'az' instead of 'elevation'/'azimuth'
- Backend: added 'norad' and 'startTimeISO' fields to pass data
- Backend: added colors for NOAA-20 and METEOR-M2-3
- Frontend: fixed renderPassList to use 'satellite' and 'startTime'
- Frontend: fixed updateCountdown to use 'startTimeISO' and 'satellite'
- Frontend: fixed updateStats to count satellites object keys

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:52:52 +00:00
James Smith 7f35d9c61d Fix live telemetry and sky view updates on satellite change
- Real-time position updates now use selectedSatellite directly
- Added drawPolarPlotWithPosition() for live satellite position display
- Fixed /satellite/position endpoint to accept NORAD IDs
- Fixed parameter names (latitude/longitude) consistency
- Fixed response field name (track instead of orbitTrack)
- Shows satellite name and elevation on polar plot
- Glowing marker effect on current position
- Shows "BELOW HORIZON" indicator when satellite not visible

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:02:17 +00:00
James Smith 2e7cbd6904 Add satellite selector to dashboard header
- Added dropdown in header to select target satellite
- Styled hi-tech selector with cyan glow effects
- Updates tracking status indicator on satellite change
- Added NOAA-20 and METEOR-M2-3 satellites
- Dashboard now calculates passes for selected satellite only
- Extended prediction window to 48 hours

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:56:00 +00:00
James Smith 4352e886b5 Fix satellite dashboard layout - proper 3-column grid
- Simplified grid to single row layout
- Fixed sidebar to not span multiple rows
- Lowered responsive breakpoint to 1200px
- Fixed panel flex-shrink behavior
- Better mobile breakpoint at 800px

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:52:11 +00:00
James Smith 878710e4f7 Fix satellite dashboard API and layout issues
- Fix parameter mismatch: accept both latitude/longitude and lat/lon
- Add NORAD ID to satellite name mapping for dashboard compatibility
- Widen sidebar from 350px to 420px for better readability
- Make sidebar scrollable to access all panels
- Add responsive breakpoints for different screen sizes
- Prevent telemetry values from wrapping

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:50:25 +00:00
James Smith 6e4d78af81 Add hi-tech satellite command dashboard
Features:
- Animated grid background with scan line effect
- Real-time polar plot with satellite trajectory
- Ground track map with Leaflet
- Countdown timer to next pass
- Live telemetry display
- Upcoming passes list with quality badges
- Observer location with GPS support
- Auto-updates every 5 seconds
- Responsive layout for different screens

Access via /satellite/dashboard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:37:08 +00:00
Smittix b3f89b2717 Update README.md 2025-12-22 15:35:24 +00:00
Smittix 42b4f2e98e Add files via upload 2025-12-22 15:35:03 +00:00
Smittix 1c5a1d0f10 Delete screenshot2.png 2025-12-22 15:34:48 +00:00
Smittix fe04697eff Add files via upload 2025-12-22 15:33:38 +00:00
Smittix dce627eb68 Delete screenshot2.png 2025-12-22 15:33:23 +00:00
James Smith bea4005981 Throttle SBS updates to prevent frontend overload
- Batch updates every 1 second instead of every message
- Remove verbose MSG,3 debug output
- Reduces frontend updates from hundreds/sec to ~1/sec

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:11:11 +00:00
James Smith ccf6c5d227 Start dump1090 with --net flag and connect to SBS port
- App starts dump1090-mutability with network mode enabled
- Waits 3 seconds for initialization
- Connects to SBS port 30003 for position data
- No longer relies on system service being configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:09:57 +00:00
James Smith 7210a3b4e1 Simplify ADS-B to always use SBS service
Skip the port check and always connect to localhost:30003.
The SBS parser will handle connection errors and retry.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:28:42 +00:00
James Smith ee86df913c Add debug output for request data
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:25:03 +00:00
James Smith b3c72b7389 Add forceService option to bypass service check
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:15:17 +00:00
James Smith 919e7a1064 Don't kill dump1090 on startup - may be a system service
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:07:52 +00:00
James Smith d182632111 Add debug output to service check
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:05:53 +00:00
James Smith acbe51e149 Add verbose debug output for MSG,3 parsing
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:04:14 +00:00
James Smith 8c77ae5655 Improve SBS parser with better error handling and debug output
- Add try/except for value conversion
- Add position debug output
- Fix MSG,5 to extract callsign and altitude

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:02:21 +00:00
James Smith 3d839c5800 Switch to SBS format parsing for dump1090 service
- Check for SBS port 30003 instead of JSON endpoint
- Parse SBS BaseStation format for aircraft data
- Supports MSG types 1,3,4,5,6 for callsign, position, velocity, squawk
- Auto-reconnect on connection loss

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:57:17 +00:00
James Smith e684f49b42 Add support for using existing dump1090-mutability service
- Check for existing JSON endpoint before starting dump1090
- Use existing service if available (port 30005 or 8080)
- Add poll_adsb_json_only function for service mode
- Don't kill system service on stop, just stop polling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:41:46 +00:00
James Smith 886dabe4be Add debug output for ADS-B JSON polling thread
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:37:03 +00:00
James Smith 3def0bf11b Add port 30005 to dump1090 JSON endpoint list
dump1090-mutability uses port 30005 for JSON data by default.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:33:50 +00:00
James Smith 35ed682ffe Add startup cleanup for stale RTL-SDR processes
Kills any orphaned dump1090, rtl_adsb, rtl_433, multimon-ng, rtl_fm
processes on app startup to prevent "device busy" errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:21:08 +00:00
James Smith 12ef63cee6 Fix ADS-B process reference bug and add debug output
- Fix poll_dump1090_json using wrong process reference
- Add debug output for ADS-B decoder selection
- Add debug output for JSON and raw aircraft detection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:17:48 +00:00
James Smith c98a4208a8 Fix user site-packages not loading when running as root/sudo
Explicitly adds user site-packages to sys.path when ENABLE_USER_SITE
is disabled, allowing pip-installed packages like skyfield to be found.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:14:10 +00:00
James Smith c61cd6297d Add missing time import
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:08:21 +00:00
James Smith a89687fabe Fix ADS-B aircraft map plotting and improve dependency detection
- Fix calls to non-existent drawAircraftRadar(), now calls updateAircraftMarkers()
- Fix null check for lat/lon coordinates (use == null instead of === undefined)
- Add polling of dump1090 JSON endpoint for decoded aircraft positions
- Add debug logging for Python module import failures
- Add startup diagnostics for troubleshooting skyfield detection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:05:43 +00:00
James Smith bd06494407 Add satellite orbit tracking, UI improvements, and startup dependency check
- Fix ground track to show full orbit (±45 min) with past/future segments
- Redesign satellite section as 2x2 grid layout for better visibility
- Add startup dependency notification in top-left corner
- Make tool status mode-specific (pager/433MHz/aircraft show relevant tools)
- Add skyfield library for accurate orbital calculations
2025-12-22 10:02:49 +00:00
Smittix a98c2aacd6 Update README.md 2025-12-22 08:24:59 +00:00
Smittix cdee0ae448 Add files via upload 2025-12-22 08:24:40 +00:00
Smittix 8bac903316 Delete screenshot1.png 2025-12-22 08:24:25 +00:00
Smittix d6e92d0bc6 Update README.md 2025-12-21 23:57:21 +00:00
Smittix fc86790f86 Add files via upload 2025-12-21 23:57:08 +00:00
James Smith 1853f88b4c Center Bluetooth proximity radar in its section
Make the radar panel span both grid columns to eliminate empty space on the right and center the visualization.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:55:06 +00:00
James Smith fc7a3912de Update acknowledgments with new dependencies
Add dump1090, Leaflet.js, OpenStreetMap, and Celestrak

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:44:28 +00:00
James Smith 9a2cc48377 Add satellite countdown, Leaflet map, theme toggle, and UI improvements
- Replace canvas aircraft map with Leaflet.js + OpenStreetMap
- Add dark/light theme toggle with localStorage persistence
- Add satellite pass countdown with live timer
- Add countdown to satellite popout with selectable passes
- Add client probe analysis for WiFi privacy leak detection
- Hide waterfall and output console in satellite mode
- Fix satellite countdown to update when selecting different passes
- Update documentation with new features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:42:42 +00:00