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.
 
 
 
Go to file
Sergey Revyakin e222dc1193 добавил блок в README про запуск 1 month ago
.venv-sdr исправил кэширование у докера 1 month ago
NN_server init 1 month ago
common init 1 month ago
deploy исправил кэширование у докера 1 month ago
orange_scripts init 1 month ago
src init 1 month ago
.dockerignore init 1 month ago
.gitignore init 1 month ago
README.md добавил блок в README про запуск 1 month ago
install_all.sh init 1 month 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:

  1. выполняет preflight;
  2. ставит host non-python зависимости SDR;
  3. настраивает Docker + NVIDIA runtime;
  4. поднимает compose сервисы;
  5. устанавливает/перезапускает systemd unit'ы;
  6. проверяет статус, при ошибке печатает логи.

2. Матрица сервисов

Host / systemd (SDR)

  • dronedetector-sdr-433.service -> src/main_433.py
  • dronedetector-sdr-750.service -> src/main_750.py
  • dronedetector-sdr-868.service -> src/main_868.py
  • dronedetector-sdr-3300.service -> src/main_3300.py
  • dronedetector-sdr-4500.service -> src/main_4500.py
  • dronedetector-sdr-5200.service -> src/main_5200.py
  • dronedetector-sdr-5800.service -> src/main_5800.py
  • dronedetector-sdr-915.service -> orange_scripts/main_915.py
  • dronedetector-sdr-1200.service -> orange_scripts/main_1200.py
  • dronedetector-sdr-2400.service -> orange_scripts/main_2400.py

Docker Compose

  • dronedetector-server-to-master -> src/server_to_master.py
  • dronedetector-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 (hackrf package)
  • 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-sdr c --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. Ручная приемка

  1. ./install_all.sh выполняется до конца.
  2. docker compose -f deploy/docker/docker-compose.yml up -d поднимает оба контейнера.
  3. Все dronedetector-sdr-* имеют active (running).
  4. Тестовый POST в NN_server /receive_data доходит до server_to_master /process_data.
  5. Контур работает минимум 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)

Запуск всех SDR unitов:

sudo systemctl start dronedetector-sdr-433.service
sudo systemctl start dronedetector-sdr-750.service
sudo systemctl start dronedetector-sdr-868.service
sudo systemctl start dronedetector-sdr-3300.service
sudo systemctl start dronedetector-sdr-4500.service
sudo systemctl start dronedetector-sdr-5200.service
sudo systemctl start dronedetector-sdr-5800.service
sudo systemctl start dronedetector-sdr-915.service
sudo systemctl start dronedetector-sdr-1200.service
sudo systemctl start dronedetector-sdr-2400.service

Альтернатива одной командой:

for u in dronedetector-sdr-{433,750,868,3300,4500,5200,5800,915,1200,2400}.service; do
  sudo systemctl start "$u"
done

Проверка статуса всех SDR unitов:

sudo systemctl status dronedetector-sdr-*.service --no-pager

Полный ручной старт всего контура

docker compose -f deploy/docker/docker-compose.yml up -d
for u in dronedetector-sdr-{433,750,868,3300,4500,5200,5800,915,1200,2400}.service; do
  sudo systemctl start "$u"
done