bb01e9a06c
## Summary - **ADS-B & AIS:** OpenSky and AISStream OSINT feeds upsert into the CoT store; tactical tracks still arrive via adsbcot/aiscot on `:8089`. Map clients subscribe via `GET /api/cot/stream` (SSE) with viewport bbox filtering and Air / Surface / Team layer toggles. - **ALPR (Flock/OSM):** Toggleable license-plate reader layer sourced from OpenStreetMap, with SQLite cache, Overpass fallback, tiled viewport fetching, and clustered markers with direction cones. - **Map performance:** Ring-based tile selection (fixes zoom-out crash), immutable tile cache, incremental marker sync, split cluster load/query, and padded SSE bbox to reduce reconnect churn. ## Docs - `docs/tracking.md` — ADS-B/AIS accuracy tiers, freshness, self-hosted receivers, optional OSINT API keys - `docs/map-and-cameras.md` — ALPR layer and map behavior updates --------- Co-authored-by: Madison Grubb <madison@elastiflow.com> Reviewed-on: #36
49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# ADS-B and AIS
|
|
|
|
Aircraft and vessels use the same **CoT** store as ATAK/iTAK. The map consumes `GET /api/cot/stream` (SSE, viewport bbox). Toggle **Air**, **Surface**, and **Team** on the map.
|
|
|
|
## Accuracy tiers
|
|
|
|
1. **Tactical (best):** local SDR/AIS receiver → [adsbcot](https://github.com/snstac/adsbcot) / [aiscot](https://github.com/snstac/aiscot) → KestrelOS CoT `:8089` (sub-second updates).
|
|
2. **Vessels (live OSINT):** AISStream WebSocket push as vessels transmit.
|
|
3. **Aircraft (awareness OSINT):** OpenSky bbox poll — not a live stream; typical lag ~5s.
|
|
|
|
For tactical use, run local receivers. Do not rely on OpenSky alone.
|
|
|
|
## Freshness
|
|
|
|
Tracks update via SSE `update` events (CoT `:8089`, AISStream) or coalesced `snapshot` after each OpenSky poll. Stale tracks are removed automatically (team ~90s, OSINT ~30s without a new fix).
|
|
|
|
OSINT feeds run only while a map client is connected (SSE subscriber). Keep the map tab visible for live updates.
|
|
|
|
## Self-hosted
|
|
|
|
**ADS-B:** [adsbcot](https://github.com/snstac/adsbcot) → `tls://host:8089`
|
|
|
|
```ini
|
|
[adsbcot]
|
|
COT_URL = tls://kestrelos.example.com:8089
|
|
FEED_URL = tcp+beast://127.0.0.1:30005
|
|
```
|
|
|
|
**AIS:** [aiscot](https://github.com/snstac/aiscot) → `tls://host:8089`
|
|
|
|
```ini
|
|
[aiscot]
|
|
COT_URL = tls://kestrelos.example.com:8089
|
|
FEED_URL = tcp://127.0.0.1:10110
|
|
```
|
|
|
|
Use KestrelOS credentials (see [atak-itak.md](atak-itak.md)).
|
|
|
|
## OSINT APIs (optional)
|
|
|
|
Set these only if you want viewport OSINT without local receivers:
|
|
|
|
| Variable | Purpose |
|
|
|----------|---------|
|
|
| `AISSTREAM_API_KEY` | AISStream WebSocket |
|
|
| `OPENSKY_CLIENT_ID` / `OPENSKY_CLIENT_SECRET` | OpenSky OAuth (recommended for production) |
|
|
|
|
UIDs: `ICAO.*` (ADS-B), `MMSI.*` (AIS). Icons follow CoT type (`a-f-A-*`, `a-f-S-*`, `a-f-G-*`).
|