[satellites] update satellites tracked#1004
Conversation
// added #41866 GOES-16 celestrak_weather // added #55506 ELEKTRO-L4 celestrak_active // added #67756 ELEKTRO-L5 celestrak_active // removed #53106(payload) = #53109(rocket body) = IO-117(Greencube), satellite decommissioned for all entries generated data_source field showing celestrak group data source
accius
left a comment
There was a problem hiding this comment.
Thanks for keeping the satellite registry current, and thanks to @creinemann for the source list.
Reviewed the diff — this is a clean, data-only update to server/routes/satellites-tracked.js:
- Adding GOES-16 (#41866) and ELEKTRO-L4/L5 (#55506/#67756) looks correct, and dropping IO-117/GreenCube on decommissioning is the right call.
- Converting the trailing
// CelesTrak group: ...comments into a realdata_sourcefield is a nice improvement — self-documenting and queryable rather than buried in a comment.
Two small notes, neither blocking:
data_sourceis currently informational only. The TLE fetch insatellites.jshardcodesgroups = ['amateur', 'weather', 'goes']and matches purely by NORAD ID. Thecelestrak_activeentries (QMR-KWT-2, ELEKTRO-L3/L4/L5) aren't in those group files, so they resolve via the per-NORAD CATNR fallback. That path already works for the existingactivesats, so the new ones will resolve the same way — just flagging that the field doesn't yet drive fetch behavior in case a future change wants to wire it up.- GOES-16 and the new ELEKTRO entries omit
mode/frequency. The merge logic insatellites.jshandles missing optional fields gracefully (||/??), so this is fine, but adding HRIT/LRIT mode + downlink frequency for the ELEKTRO sats (consistent with L2/L3) would round out the metadata if you have it handy.
CI is green and the branch merges cleanly into Staging. Looks good to me.
— K0CJH
|
@accius you said,
actually the 'data_source' field is utilized in the change to the
(my personal opinion only) is that the extra information is difficult to accurately maintain unless it is constantly being reviewed and updated, and could be dropped completely focusing OHC solely on location tracking and prediction |
|
@MichaelWheeley — fair points, thanks for the follow-up. On On dropping The plan: a background fetcher — same state-machine pattern as #1007 — refreshed daily, joined by NORAD ID, with the curated values in Appreciate you pushing on this. — K0CJH |
…e, optional Space-Track (#1007) * squash merge satellite OMM data download * fix(dxspider-proxy): stop quiet-band connection churn + fix auth detection The socket idle timeout (60s) was the shortest of all failure timers, so any 60s gap between spots — normal on quiet bands overnight — tore down a healthy connection. Keepalive (120s) was too slow to prevent it and the 180s activity watchdog (the graceful node-failover) never got to run. - socket timeout 60s -> 300s, as a last-resort TCP backstop; the 180s activity watchdog now owns failover as designed - keepalive 120s -> 60s so the connection stays warm - destroy the socket in the 'timeout' handler — Node does not auto-close on timeout, leaving a zombie socket that kept feeding data and spuriously reset the failover counter after [RECONNECT] - mark authenticated on first spot; the DXSpider prompt has no trailing newline so prompt-based detection never matched, and sh/dx output lines ("...de Helmut<DF4IY>") false-matched the prompt regex Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(dxcluster): per-fetch AbortController so HamQTH fallback can run /api/dxcluster/paths shared one AbortController across the proxy fetch and the HamQTH fallback fetch. When the dxspider-proxy hangs to the 10s limit, controller.abort() fires — and the fallback fetch then receives an already-aborted signal, rejecting instantly with AbortError before HamQTH is ever contacted. newSpots stays empty and the endpoint returns the stale path cache (empty on a fresh server start). Give each upstream its own AbortController + timeout, cleared in a finally block. The HamQTH fallback now actually runs when the proxy is down. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * [satellites] update satellites tracked (#1004) * update satellites tracked // added #41866 GOES-16 celestrak_weather // added #55506 ELEKTRO-L4 celestrak_active // added #67756 ELEKTRO-L5 celestrak_active // removed #53106(payload) = #53109(rocket body) = IO-117(Greencube), satellite decommissioned for all entries generated data_source field showing celestrak group data source * minor name change correction * useLightning remove double space (#1005) * Newutils cleanup (#1006) * fix require path * - fix state machine unit test - if invalid state is provided then state should gracefully reset - duplicate of same removed * feat(n3fjp): live entry-preview lines + preview color (#979) Adds real-time "as you type" preview support to the N3FJP Logged QSOs layer, based on a working prototype by Ben, KC1UEK. - Server: /api/n3fjp/qso accepts status log|preview|clear; trusts bridge-supplied coords first, falls back to grid then HamQTH; stale previews self-expire after 5 min. - Layer: previews render in their own colour with a dashed arc, bypass the display-window filter, and show a "(preview)" popup. - DX target: layer emits a dedicated ohc-n3fjp-dx-target event; App.jsx moves the DX crosshair via handleDXChange (no WSJT-X channel reuse). - Settings: new Preview color picker in Integrations. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(satellites) #987: hide satellite status box with the Hide UI toggle The satellite status box is appended to the map container rather than .leaflet-control-container, so the Hide UI style block never matched it. Add .sat-data-window to that selector list — same mechanism every other floating map panel already uses. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(solar) #988: selectable 6/12/24/48h history for X-Ray Flux panel A solar flare outside the fixed 6h window was invisible in the panel and missing from the "peak" rating. Add a timeframe dropdown to the X-Ray Flux view; the displayed peak is recomputed for the selected window. Server: /api/noaa/xray now pulls the 3-day SWPC feed, keeps only the 0.1-0.8nm band the panel plots, and trims to the last 50h — so the per-client payload stays small instead of shipping the multi-MB raw feed every 5 min. Choice persists in localStorage; default stays 6h. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(settings) #989: user-selectable callbook for callsign lookups Clicking a callsign always opened QRZ.com. Add a "Callsign Lookup" dropdown in Station Settings (QRZ.com / HamQTH / QRZCQ), matching the DX Cluster Source selector. New src/utils/callbook.js builds the lookup URL; both callsign-click paths in CallsignLink.jsx route through it. Choice persists in localStorage; default stays QRZ.com. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * rebase to latest staging, resolve merge conflict statemachine.js * add CelesTrak http status code 429 as rate limit block * - correct Axios AbortSignal timeout - logError not a valid function, it's use was masked by an outer exception handler, replaced with logWarn - isCelestrakEnabled was not getting used, CelesTrak was always active backup for Space-Track even when disabled * - added `'use strict';` - added `const` to `jsonBytes` - added `const` to `match` * - protect `s.data_source.startsWith` with `s.data_source?.startsWith` * - added explict messages on `try{}catch{ logWarn(...); }` * - protected function by replacement of `typeof ... object` with `Array.isArray(...)` * - extended `Login to Space-Track` section, now checks POST for failures and login fail * - added remarks regarding size of `ommCache` and `ommUnusedCache` * !Array.isArray * - `'User-Agent':` switched from `'Mozilla/5.0'` to `OpenHamClock/${APP_VERSION}` * - enhanced message on unknown exception * - enhanced message on exception in CSV reading error * - add kick start run() after state-machine constructor - `useSatellites.js` fetch data every minute if empty data set * satellites.js - publish ommCache timestamp at /api/satellites/data/timestamp, client can obtain timestamp for latest data without loading the entire data set * - revised JSON structure timestamp/data - fetch timestamp and check for change before fetching entire data set - fix setInterval so that if data set is empty repeat every minute --------- Co-authored-by: accius <chris@cjhlighting.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
What does this PR do?
Type of change
How to test
Checklist
server.js: caches have TTLs and size caps (we serve 2,000+ concurrent users)var(--accent-cyan), etc.).bak,.old,console.logdebug lines, or test scripts included