尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Self-hosted ADS-B flight tracker PWA: RTL-SDR + readsb, dead-reckoned planes, to-scale silhouettes, faux-3D SEA/BFI/RNT airports
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A self-hosted ADS-B flight tracker for the skies above Renton, WA, built as an installable phone app. A $30 software-defined radio on a windowsill hears the aircraft overhead, and a small web app turns that into a live map with real aircraft silhouettes, airline logos, routes and a faux-3D view of SEA, Boeing Field and Renton airports.
Live: sky.spenc.ee (Add to Home Screen on a phone for the app). The public site is served through a Cloudflare tunnel from a filtered copy of the data that leaves out anything locating the receiver; see nginx.conf. This repo is the whole project.
1090 MHz +--------------------------- docker compose ---------------------------+
antenna --> RTL-SDR | ultrafeeder (readsb + tar1090) sky-api (stdlib Python, SQLite) |
| /data/aircraft.json /api/ac/<hex> lookups + log |
| traces, receiver.json /api/fill community gaps |
| \ / |
| +-----> sky-web (nginx) <--+ |
+----------------------------|---------------------------------------- +
v
web/ PWA (vanilla JS + Leaflet), service worker
sky-api looks aircraft up on adsbdb.com only when someone taps a plane, and tops up what the antenna cannot hear (parked and taxiing aircraft at SEA/BFI behind terrain, traffic beyond range) from adsb.fi, adsb.lol and airplanes.live. Those feeds are read-only; nothing from the receiver is sent to them.
Dead reckoning. The receiver reports a position about once a second per aircraft. Between fixes the app advances each marker along its track at its ground speed on every animation frame, then blends any disagreement with the next real fix in over a short window, so planes glide instead of jumping.
Route trust. Callsign-to-route databases are wrong often, because one flight number flies several legs per day. sky-api computes the cross-track distance from the aircraft to the origin-destination great circle and marks the route "trusted" only within ROUTE_SLACK_NM (120 nm). Untrusted routes are not shown.
Silhouettes. tools/build_shapes.py crops and normalizes the outlines in shapes-src/ (one common scale, about 1 unit per meter) into web/shapes/, with an index of sizes, type aliases and ADS-B emitter-category fallbacks. The app scales each icon by real aircraft size, and at airport zoom draws it at true size.
Faux-3D buildings. tools/build_airports.py pulls aerodrome features from Overpass and writes a compact web/airports.json (coordinates rounded to about 1 m). The app draws buildings as extruded footprints with a shifted roof layer and shadow, with the walls shaded by facing. Detail arrives with zoom: runways always, taxiways, then buildings.
Service worker. web/sw.js precaches the app shell (versioned, so a release replaces the old cache) and keeps a size-capped cache of map tiles. Live data (/data/, /api/) always goes to the network.
.env next to docker-compose.yml (see .env.example):
LAT=47.48
LON=-122.21
Use your real receiver location here; it stays on your machine (.env is git-ignored). The app also reads it at runtime from receiver.json.docker compose up -d, then open http://<host>:8504/. The stock tar1090 UI is at /classic/.~/adsb on a server: SKY_HOST=user@host ./deploy.sh.python3 tools/build_airports.py (stdlib only) and python3 tools/build_shapes.py (needs cairosvg and Pillow).Sightings are stored in state/sky.db (SQLite).
web/airports.jsonweb/vendor/leaflet/GPL-3.0, see LICENSE. The aircraft silhouettes are derived from GPL-3.0 work, which sets the license for the whole repo.