radio: private radio tracker (/trackers/radio): frequencies, UBC125XLT banks + CSV, nets, ISS passes over Gouda, listening log, ntfy reminders
All checks were successful
Deploy production / deploy (push) Successful in 1m26s

This commit is contained in:
2026-10-26 16:58:29 +00:00
parent e24ee7f95d
commit 03574a95a7
37 changed files with 48839 additions and 3 deletions

23
docs/radio-tracker.md Normal file
View File

@@ -0,0 +1,23 @@
# Radio tracker (/trackers/radio)
Private (owner-only, 404 for everyone else) tracker for Opa Chiel's scanner hobby.
- **Frequencies** (`radio.frequencies`): freq in Hz, mode, band (marine/air/ham/pmr/other), name,
location, notes, marine channel, tags. Seeded from Opa's lists (airband banks 4-6, marine banks
7-10) and the extras in his notes (Haagse ronde, KLM ronde, ISS downlink, ADS-B).
- **Scanner banks** (`radio.channels`): Uniden UBC125XLT layout, 10 banks x 50 channels.
`/trackers/radio/banks.csv` exports all 500 channels in BC125AT_SS column order.
- **Nets** (`radio.nets`): days (1 = Mon .. 7 = Sun) and "HH:MM" times in Europe/Amsterdam.
- **ISS passes** (`radio.iss_passes`, `radio.iss_tle`): computed in `scripts/radio.ts iss` with
satellite.js from the Celestrak TLE (CATNR 25544) for Gouda (52.011 N, 4.711 E), 5 days ahead.
- **Log** (`radio.log`): what was heard, linked to a frequency.
## Jobs (systemd user timers on stan-ovh, copies in deploy/systemd)
- `radio-iss.timer`: daily 04:15 Amsterdam, `bun scripts/radio.ts iss` in the app container.
- `radio-remind.timer`: every minute, `bun scripts/radio.ts remind`. Sends an ntfy push
10 minutes before each net with `remind` on and each ISS pass with max elevation >= 10 deg.
`radio.reminders` makes each reminder fire once.
- Both read `~/.config/radio.env` (mode 600): `RADIO_NTFY_URL` (ntfy topic URL), optional
`RADIO_NTFY_TOKEN`. Log: `~/.local/state/radio.log`.
- `bun scripts/radio.ts upcoming` prints the next 24 h of reminders without sending.