James Smith
b23f63cb89
Stabilize satellite pass target switching
2026-03-19 16:41:55 +00:00
James Smith
afc8c2e84f
Wire satellite capture handoff
2026-03-19 15:59:58 +00:00
James Smith
30960e6d6f
Harden satellite target switching
2026-03-19 15:33:20 +00:00
James Smith
572d6e3215
Fix satellite target switching regression
2026-03-19 14:55:48 +00:00
James Smith
17e2ca0c6a
Stabilize satellite dashboard refreshes
2026-03-19 14:26:08 +00:00
James Smith
8191966e8e
Fix satellite dashboard startup helpers
2026-03-19 13:49:20 +00:00
James Smith
19c9b4eaf3
Stabilize satellite dashboard startup
2026-03-19 13:23:52 +00:00
James Smith
4268732d58
Restore satellite mission controls
2026-03-19 13:06:26 +00:00
James Smith
b746f9689c
Move satellite packets into map console
2026-03-19 12:17:28 +00:00
James Smith
0f56fa1a13
Rework satellite dashboard mission layout
2026-03-19 12:01:59 +00:00
James Smith
089687ca31
Cache satellite pass predictions
2026-03-19 11:27:38 +00:00
James Smith
c789646f24
Fix dashboard startup regressions and mode utilities
2026-03-19 10:37:21 +00:00
James Smith
4fc35c094c
Delay welcome page GPS and voice streams
2026-03-19 09:34:33 +00:00
James Smith
94e9d65fad
Defer hidden dashboard startup work
2026-03-19 09:19:36 +00:00
James Smith
7587c1d009
Lazy-load satellite iframe on main dashboard
2026-03-19 09:05:48 +00:00
James Smith
b8b661b3be
Revert "Retry ADS-B map bootstrap safely"
...
This reverts commit 2c66a2fe4a .
2026-03-19 08:54:59 +00:00
James Smith
2c66a2fe4a
Retry ADS-B map bootstrap safely
2026-03-19 08:52:08 +00:00
James Smith
665067e399
Retry slow SDR detection in ADS-B
2026-03-19 08:43:20 +00:00
James Smith
0ea03c8f93
Harden ADS-B dashboard bootstrap
2026-03-19 08:35:43 +00:00
James Smith
0f161f96d3
Revert "Keep ADS-B on local startup tiles"
...
This reverts commit 2ceeb520e9 .
2026-03-19 08:32:10 +00:00
James Smith
2ceeb520e9
Keep ADS-B on local startup tiles
2026-03-19 08:28:13 +00:00
James Smith
274824fe68
Keep ADS-B fallback grid until tiles load
2026-03-19 08:18:00 +00:00
James Smith
09e0ddef79
Ignore aborted satellite pass requests
2026-03-19 08:04:36 +00:00
James Smith
5486656782
Defer noncritical ADS-B startup work
2026-03-19 08:01:33 +00:00
James Smith
be4c9a87ad
Reduce repeated ADS-B device probes
2026-03-19 07:55:19 +00:00
James Smith
1be531a263
Skip pre-stop on dashboard navigation
2026-03-19 07:47:46 +00:00
James Smith
b00638f794
Stop clearing browser caches on load
2026-03-19 07:43:32 +00:00
James Smith
7c9df8beb3
Revert "Reduce ADS-B map layout shift"
...
This reverts commit af475ad6ea .
2026-03-19 00:17:22 +00:00
James Smith
af475ad6ea
Reduce ADS-B map layout shift
2026-03-19 00:11:29 +00:00
James Smith
853f1da581
Harden APRS mode teardown and map fallback
2026-03-19 00:06:47 +00:00
James Smith
412bdde2d9
Disable stale dashboard service worker cache
2026-03-19 00:01:47 +00:00
James Smith
42d2371ba6
Revert "Stage dashboard startup requests"
...
This reverts commit ab3c581ab0 .
2026-03-18 23:57:37 +00:00
James Smith
ab3c581ab0
Stage dashboard startup requests
2026-03-18 23:53:54 +00:00
James Smith
03a0f13772
Open satellite dashboard in new tab
2026-03-18 23:41:29 +00:00
James Smith
8927f50696
Use direct satellite dashboard links
2026-03-18 23:35:24 +00:00
James Smith
a8001604d7
Unify satellite navigation to dashboard
2026-03-18 23:29:09 +00:00
James Smith
4dc1cd43e4
Stabilize satellite dashboard sidebar panels
2026-03-18 23:17:02 +00:00
James Smith
01ed00805e
Refresh embedded satellite dashboard state
2026-03-18 23:09:07 +00:00
James Smith
a9eef9f949
Harden embedded satellite dashboard loading
2026-03-18 23:00:21 +00:00
James Smith
77cfed11d5
Fix satellite dashboard refresh flows
2026-03-18 22:53:36 +00:00
James Smith
694e16da59
Clear stale telemetry and add transmitter fallbacks
2026-03-18 22:43:40 +00:00
James Smith
75137646fc
Harden satellite dashboard telemetry loading
2026-03-18 22:35:31 +00:00
James Smith
c1f4c2310e
Align Meteor tracking defaults
2026-03-18 22:28:04 +00:00
James Smith
4deb9603db
Improve persisted Meteor status in dashboard
2026-03-18 22:25:20 +00:00
James Smith
4df59d0fad
Persist Meteor decode job state
2026-03-18 22:20:24 +00:00
James Smith
f5a2383c04
Add Meteor LRPT ground station pipeline
2026-03-18 22:01:52 +00:00
James Smith
bf2f0b4a7f
Harden dashboard loading against network stalls
2026-03-18 21:33:32 +00:00
James Smith
963fdaf013
Fix mode switch re-entry regressions
2026-03-18 21:26:01 +00:00
James Smith
c4b3fcbd51
Add observation profile management UI to Ground Station panel
...
- OBSERVATION PROFILES section with list of configured satellites
- + ADD button opens inline form pre-filled from currently selected satellite
and SatNOGS transmitter data (frequency, decoder type auto-detected)
- EDIT / ✕ buttons per profile row
- Form fields: frequency, decoder (FM/AFSK/GMSK/BPSK/IQ-only), min elevation,
gain, record IQ checkbox
- UPCOMING PASSES section below profiles with friendlier empty-state message
- gsOnSatelliteChange hook updates form when satellite dropdown changes
- CSS for .gs-form-row, .gs-profile-item, .gs-form-label
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 17:52:25 +00:00
James Smith
a45a4d8ad5
Add ground station automation with 6-phase implementation
...
Phase 1 - Automated observation engine:
- utils/ground_station/scheduler.py: GroundStationScheduler fires at AOS/LOS,
claims SDR, manages IQBus lifecycle, emits SSE events
- utils/ground_station/observation_profile.py: ObservationProfile dataclass + DB CRUD
- routes/ground_station.py: REST API for profiles, scheduler, observations, recordings,
rotator; SSE stream; /ws/satellite_waterfall WebSocket
- DB tables: observation_profiles, ground_station_observations, ground_station_events,
sigmf_recordings (added to utils/database.py init_db)
- app.py: ground_station_queue, WebSocket init, scheduler startup in _deferred_init
- routes/__init__.py: register ground_station_bp
Phase 2 - Doppler correction:
- utils/doppler.py: generalized DopplerTracker extracted from sstv_decoder.py;
accepts satellite name or raw TLE tuple; thread-safe; update_tle() method
- utils/sstv/sstv_decoder.py: replace inline DopplerTracker with import from utils.doppler
- Scheduler runs 5s retune loop; calls rotator.point_to() if enabled
Phase 3 - IQ recording (SigMF):
- utils/sigmf.py: SigMFWriter writes .sigmf-data + .sigmf-meta; disk-free guard (500MB)
- utils/ground_station/consumers/sigmf_writer.py: SigMFConsumer wraps SigMFWriter
Phase 4 - Multi-decoder IQ broadcast pipeline:
- utils/ground_station/iq_bus.py: IQBus single-producer fan-out; IQConsumer Protocol
- utils/ground_station/consumers/waterfall.py: CU8→FFT→binary frames
- utils/ground_station/consumers/fm_demod.py: CU8→FM demod (numpy)→decoder subprocess
- utils/ground_station/consumers/gr_satellites.py: CU8→cf32→gr_satellites (optional)
Phase 5 - Live spectrum waterfall:
- static/js/modes/ground_station_waterfall.js: /ws/satellite_waterfall canvas renderer
- Waterfall panel in satellite dashboard sidebar, auto-shown on iq_bus_started SSE event
Phase 6 - Antenna rotator control (optional):
- utils/rotator.py: RotatorController TCP client for rotctld (Hamlib line protocol)
- Rotator panel in satellite dashboard; silently disabled if rotctld unreachable
Also fixes pre-existing test_weather_sat_predict.py breakage:
- utils/weather_sat_predict.py: rewritten with self-contained skyfield implementation
using find_discrete (matching what committed tests expected); adds _format_utc_iso
- tests/test_weather_sat_predict.py: add _MOCK_WEATHER_SATS and @patch decorators
for tests that assumed NOAA-18 active (decommissioned Jun 2025, now active=False)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 17:36:55 +00:00