138 lines
6.2 KiB
Markdown
138 lines
6.2 KiB
Markdown
# Проект: FR24 / noisemap + RTL-SDR ingest
|
||
|
||
## 1. Назначение
|
||
Проект строит карту шумового загрязнения авиации для Московской области и развивает её в сторону локального ADS-B контура на RTL-SDR.
|
||
|
||
Сейчас проект состоит из двух связанных частей:
|
||
- **noisemap / FR24-прототип** — визуализация и расчёт шумовой плотности на базе исторических данных Flightradar24
|
||
- **RTL-SDR ingest-контур** — приём ADS-B с локального приёмника, хранение в PostgreSQL/PostGIS и восстановление данных после сбоев
|
||
|
||
## 2. Статус
|
||
- **Старт проекта:** 22 марта 2026
|
||
- **Текущий статус:** активен
|
||
- **Текущий фокус:** переход от FR24-only к локальному RTL-SDR контуру с PostgreSQL/PostGIS
|
||
- **Последнее обновление:** 18 апреля 2026
|
||
|
||
## 3. Текущая часть: noisemap / FR24-прототип
|
||
### URL
|
||
- https://openclaw.mva154.duckdns.org/noisemap/
|
||
|
||
### Расположение
|
||
- `tasks/flightradar24/prototype/`
|
||
|
||
### Стек
|
||
- Flask
|
||
- OpenLayers 10
|
||
- Turf.js
|
||
- Canvas2D
|
||
- flask-compress
|
||
|
||
### Что уже реализовано
|
||
- слой "Плотность пролётов"
|
||
- метрика рейсов/час
|
||
- радиусы влияния по высоте
|
||
- кэш плотности
|
||
- слайдер по дням
|
||
- легенда и попап по рейсам
|
||
- `/api/dates` и `/api/density`
|
||
- загрузка табло через Яндекс.Расписания
|
||
|
||
### Ограничения текущей части
|
||
- FR24 кредиты закончились
|
||
- охват данных неполный
|
||
- ночные рейсы и часть траекторий не покрываются
|
||
|
||
## 4. Новая часть: RTL-SDR ingest-контур
|
||
### Цель
|
||
Построить локальный контур приёма ADS-B с RTL-SDR, который:
|
||
- принимает поток в real time
|
||
- сохраняет сырьё с retention 3 дня
|
||
- догоняет пропуски после сбоя
|
||
- хранит данные в PostgreSQL/PostGIS
|
||
- отдаёт данные для визуализации на карте
|
||
|
||
### Архитектурные рамки
|
||
- 1 VM в PVE
|
||
- USB RTL-SDR пробрасывается в VM
|
||
- Docker Compose
|
||
- отдельные контейнеры для компонентов
|
||
- PostgreSQL + PostGIS
|
||
- сырьё и core-данные в одной БД, но логически разделены
|
||
|
||
### Согласованные ограничения VM
|
||
- CPU: до 6 vCPU
|
||
- RAM: 10–12 GB
|
||
- SSD: 80–100 GB max
|
||
|
||
### Режимы работы
|
||
- live
|
||
- recovery
|
||
- overlap recovery
|
||
|
||
### Базовые сущности хранения
|
||
- `captures`
|
||
- `raw_packets`
|
||
- `aircraft`
|
||
- `flights`
|
||
- `track_points`
|
||
- `tracks`
|
||
- `processing_state`
|
||
- `noise_results`
|
||
|
||
## 5. Данные и источники
|
||
### FR24
|
||
- исторические данные использовались для прототипа noisemap
|
||
- FR24 API ключ хранится в `~/.openclaw/.env`
|
||
- ключи и секреты не хранятся в проектных файлах
|
||
|
||
### ADS-B / RTL-SDR
|
||
- локальный источник для ingest-контура
|
||
- основной переходной источник после исчерпания FR24-only подхода
|
||
|
||
## 6. Бэклог
|
||
|
||
### ✅ Выполнено (апрель 2026)
|
||
- [x] RTL-SDR ingest контур (capture + preprocess + api + monitoring + backup)
|
||
- [x] PostgreSQL/PostGIS схема fr24
|
||
- [x] Leaflet карта с треками и фильтром периода
|
||
- [x] Мониторинг дашборд
|
||
- [x] Батчевая запись, фильтр onground, кеш скорости с TTL
|
||
- [x] Callsign из MSG1
|
||
|
||
### 🔜 Фаза 2, Шаг 1: Внешние источники данных
|
||
- [ ] Контейнер `fr24-external` с FR24 API + Яндекс.Расписания
|
||
- [ ] Схема `fr24_ext` в PostgreSQL
|
||
- [ ] ТЗ: `docs/PHASE2_STEP1_EXTERNAL_DATA.md`
|
||
|
||
### 🔜 Фаза 2, Шаг 2: Витрина данных
|
||
- [ ] Объединение RTL-SDR + FR24 API + табло в схему `fr24_mart`
|
||
- [ ] Шумовая сетка noise_grid
|
||
- [ ] Метрики покрытия источников
|
||
- [ ] ТЗ: `docs/PHASE2_STEP2_DATA_MART.md`
|
||
|
||
### 🔜 Фаза 2, Шаг 3: Перенос noisemap на VM-FR24
|
||
- [ ] Адаптация прототипа под fr24_mart
|
||
- [ ] Live режим из RTL-SDR
|
||
- [ ] Фильтр по источнику данных
|
||
- [ ] ТЗ: `docs/PHASE2_STEP3_NOISEMAP_MIGRATION.md`
|
||
|
||
## 7. Документация
|
||
- `tasks/flightradar24/README.md` — обзор проекта
|
||
- `tasks/flightradar24/docs/ARCHITECTURE.md` — контейнерная архитектура ingest-контура
|
||
- `tasks/flightradar24/docs/RTL-SDR_TZ.md` — ТЗ на ingest-контур
|
||
- `tasks/flightradar24/docs/VM_SETUP.md` — инструкция по созданию VM в PVE
|
||
- `tasks/flightradar24/docs/TEST_PLAN.md` — тестовый контракт и acceptance checks
|
||
- `tasks/flightradar24/docs/DEV_AGENT_HANDOFF.md` — пакет передачи Dev-агенту
|
||
- `tasks/flightradar24/prototype/docs/ARCHITECTURE.md` — архитектура прототипа
|
||
- `tasks/flightradar24/prototype/docs/NOISE_MODEL.md` — модель шума
|
||
- `tasks/flightradar24/prototype/docs/DATA_LOADING.md` — загрузка данных
|
||
- `tasks/flightradar24/prototype/docs/UI.md` — UI
|
||
|
||
## 8. Критерий направления
|
||
Проект считается развивающимся правильно, если:
|
||
- noisemap остаётся рабочим и полезным
|
||
- ingest-контур получает данные без дырок
|
||
- recovery умеет догонять сырьё автоматически
|
||
- БД не раздувается сверх лимитов VM
|
||
- карта продолжает получать данные для визуализации
|