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 714d978573 Обновил команды для Readme 2 weeks ago
NN_server добавил drone_streaks 4 weeks ago
common Reapply "добавил новые сервисы" 2 months ago
deploy Merge remote-tracking branch 'origin/automatica-1' into Ufa 4 weeks ago
logs добавил папку с логами 3 months ago
orange_scripts добавил сервисы на 2400 и 5800 для nn 4 weeks ago
scripts_nn Final Automatica 1 month ago
signal Final Automatica 1 month ago
src Merge remote-tracking branch 'origin/automatica-1' into Ufa 4 weeks ago
telemetry . 2 months ago
train_scripts изменил конфиг обучения 4 weeks ago
.dockerignore init 3 months ago
.env.example . 4 weeks ago
.gitignore Merge remote-tracking branch 'origin/automatica-1' into Ufa 4 weeks ago
CLAUDE.md Readme для агента 2 weeks ago
README.md Обновил команды для Readme 2 weeks ago
capture_hourly.sh Изменил capture hourly для возможного запуска 2 weeks ago
install_all.sh не валится на сервисах без прописанных hack_id 2 weeks ago
install_all_train.sh Final Automatica 1 month ago
out.iq sync 2 months ago
read_energy.py добавил поддержку neptune в read_energy 2 weeks ago
read_energy_ascii.py скрипты для проверки работы хаков 2 months ago
read_energy_wide.py добавил поддержку neptune в read_energy 2 weeks ago
restart_all.sh не валится на сервисах без прописанных hack_id 2 weeks ago
torchsig.tar.gz добавил нужный бинарник torchsig 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)

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-1500.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-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

Wide_read_energy

./.venv-sdr/bin/python read_energy_wide.py \
    --serial 0000000000000000a18c63dc2a83b813 \
    --sample-rate 20000000 \
    --base 6000 \
    --roof 5700 \
    --step 20

Проверка тревоги

curl -X POST 'http://127.0.0.1:5010/process_data' \
    -H 'Content-Type: application/json' \
    -d '{"freq":"1200","amplitude":9}'

Read_energy

.venv-sdr/bin/python read_energy.py 

Read_energy Neptune

./.venv-sdr/bin/python read_energy.py --backend iio --uri ip:192.168.2.1 --only 2400 --refresh 0.5 --interval 0.2 --vec-len 1024