You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
3 days ago | |
|---|---|---|
| .venv-sdr | 1 month ago | |
| NN_server | 4 weeks ago | |
| common | 3 days ago | |
| deploy | 3 days ago | |
| logs | 1 month ago | |
| orange_scripts | 3 days ago | |
| scripts_nn | 3 days ago | |
| src | 3 days ago | |
| telemetry | 2 weeks ago | |
| .dockerignore | 1 month ago | |
| .gitignore | 6 days ago | |
| README.md | 3 days ago | |
| install_all.sh | 3 days ago | |
| out.iq | 6 days ago | |
| read_energy.py | 4 weeks ago | |
| read_energy_ascii.py | 4 weeks ago | |
| restart_all.sh | 3 days ago | |
README.md
DroneDetector v2
Отдельный проектный контур (без миграции legacy), в котором:
- SDR-сканеры работают на хосте под
systemd; server_to_masterиNN_serverработают в Docker Compose;- весь runtime-конфиг хранится в одном корневом
.env.
1. Быстрый старт
Prerequisites
- Ubuntu/Debian (apt)
- NVIDIA GPU + установленный драйвер (
nvidia-smiдолжен работать) - Интернет для установки пакетов и сборки Docker-образов
- HackRF + GNU Radio стек (будет установлен через
install_all.sh)
Установка и запуск
cd /home/sibscience-4/from_ssh/DroneDetector
chmod +x install_all.sh
./install_all.sh
install_all.sh:
- выполняет preflight;
- ставит host non-python зависимости SDR;
- настраивает Docker + NVIDIA runtime;
- поднимает compose сервисы;
- устанавливает/перезапускает
systemdunit'ы; - проверяет статус, при ошибке печатает логи.
2. Матрица сервисов
Host / systemd (SDR)
dronedetector-sdr-433.service->src/main_433.pydronedetector-sdr-750.service->src/main_750.pydronedetector-sdr-868.service->src/main_868.pydronedetector-sdr-3300.service->src/main_3300.pydronedetector-sdr-4500.service->src/main_4500.pydronedetector-sdr-5200.service->src/main_5200.pydronedetector-sdr-5800.service->src/main_5800.pydronedetector-sdr-915.service->orange_scripts/main_915.pydronedetector-sdr-1200.service->orange_scripts/main_1200.pydronedetector-sdr-2400.service->orange_scripts/main_2400.py
Docker Compose
dronedetector-server-to-master->src/server_to_master.pydronedetector-nn-server->NN_server/server.py
Compose unit:
dronedetector-compose.service
3. Конфигурация
Единственный источник runtime-конфига: ./.env.
Все entrypoint'ы загружают root .env через common/runtime.py и валидируют обязательные переменные. При ошибке сервис падает сразу с понятным сообщением.
4. API (без изменения контрактов)
- NN_server:
POST /receive_data - server_to_master:
POST /process_data
Форматы payload/ответов сохранены в текущей логике сервисов.
5. Диагностика
systemd
systemctl status dronedetector-sdr-*.service
journalctl -u dronedetector-sdr-868.service -n 200 --no-pager
systemctl status dronedetector-compose.service
journalctl -u dronedetector-compose.service -n 200 --no-pager
docker compose
docker compose -f deploy/docker/docker-compose.yml ps
docker compose -f deploy/docker/docker-compose.yml logs dronedetector-server-to-master
docker compose -f deploy/docker/docker-compose.yml logs dronedetector-nn-server
6. Host non-python dependencies
Устанавливаются install_all.sh:
- GNU Radio
- gr-osmosdr
- libhackrf/hackrf-tools (
hackrfpackage) - libusb
- udev-related runtime via distro packages
SDR precheck перед каждым unit запуском:
- наличие
hackrf_info - наличие
gnuradio-config-info - импорт
osmosdr - детект устройства HackRF
7. install_all.sh: параметры и поведение
Скрипт idempotent: повторный запуск допустим.
Что делает:
- preflight (OS, диск,
.env, GPU) - host deps
.venv-sdrc--system-site-packages- Docker Engine (если отсутствует)
- NVIDIA Container Toolkit
docker compose up -d --build- установка unit'ов в
/etc/systemd/system - verify + авто-логи при ошибке
8. Типовые ошибки .env
Примеры fail-fast сообщений:
[src/server_to_master.py] invalid .env configuration: ...[NN_server/server.py] no NN_* model entries configured[orange_scripts/compose_send_data_915.py] invalid .env configuration: ...
Частые причины:
- пустое обязательное поле (
SERVER_PORT,lochost,hack_868и т.д.) - неверный тип (
SERVER_PORT=abc) - неправильный serial HackRF (не найден среди
lsusb -v -d 1d50:6089 | grep iSerial)
9. Ручная приемка
./install_all.shвыполняется до конца.docker compose -f deploy/docker/docker-compose.yml up -dподнимает оба контейнера.- Все
dronedetector-sdr-*имеютactive (running). - Тестовый POST в
NN_server /receive_dataдоходит доserver_to_master /process_data. - Контур работает минимум 1 минуту без падений.
10. Ручной запуск сервисов (без пересборки)
Docker-серверы
Запуск без пересборки:
docker compose -f deploy/docker/docker-compose.yml up -d
Пересборка только при изменении кода/зависимостей контейнеров:
docker compose -f deploy/docker/docker-compose.yml up -d --build
Остановка Docker-серверов:
docker compose -f deploy/docker/docker-compose.yml down
Все SDR-сервисы (systemd)
sudo systemctl status dronedetector-sdr-433.service
sudo systemctl status dronedetector-sdr-750.service
sudo systemctl status dronedetector-sdr-868.service
sudo systemctl status dronedetector-sdr-3300.service
sudo systemctl status dronedetector-sdr-4500.service
sudo systemctl status dronedetector-sdr-5200.service
sudo systemctl status dronedetector-sdr-5800.service
sudo systemctl status dronedetector-sdr-915.service
sudo systemctl status dronedetector-sdr-1200.service
sudo systemctl status dronedetector-sdr-2400.service
sudo systemctl stop dronedetector-sdr-433.service
sudo systemctl stop dronedetector-sdr-750.service
sudo systemctl stop dronedetector-sdr-3300.service
sudo systemctl stop dronedetector-sdr-4500.service
sudo systemctl stop dronedetector-sdr-5200.service
sudo systemctl stop dronedetector-sdr-5800.service
sudo systemctl stop dronedetector-sdr-1200.service
sudo systemctl stop dronedetector-sdr-2400.service
sudo systemctl stop dronedetector-sdr-1500.service
sudo systemctl stop dronedetector-sdr-868.service
sudo systemctl stop dronedetector-sdr-868-915.service
Проверка статуса всех SDR unitов:
sudo systemctl status dronedetector-sdr-*.service --no-pager
Просмотр логов SDR
# 50 последних
sudo journalctl -u dronedetector-sdr-5800.service -n 50 --no-pager
# в реальном времени
sudo journalctl -u dronedetector-sdr-5800.service -f
# c последней перезагрузки сервиса
since="$(systemctl show -p ActiveEnterTimestamp --value dronedetector-sdr-5800.service)"
sudo journalctl -u dronedetector-sdr-5800.service --since "$since" --no-pager
Просмотр логов от server-to-master
docker compose -f deploy/docker/docker-compose.yml logs --timestamps dronedetector-server-to-master | tail -n 50
Прошивка хаков
sudo hackrf_spiflash -w hackrf_one_usb.bin