Переменные окружения¶
Полный справочник. Источник истины — модели pydantic в
src/core/configs/;
значения по умолчанию в таблицах ниже сверены с ними.
Правила синтаксиса .env (пустое значение = ошибка, разделитель __) описаны
в Конфигурации станции.
Переменные последнего раздела — уровня скриптов — устроены иначе: их читают напрямую shell-скрипты, а не pydantic.
Примечание
Разделы, помеченные «управляется с портала», владелец настраивает в форме
«Настройки станции» на sonik.space — см. Конфигурацию станции.
Значения из .env в них действуют, пока на портале ничего не сохранено, и
остаются запасными после.
STATION — параметры станции¶
Единственный обязательный раздел: значений по умолчанию здесь нет.
Предупреждение
STATION__TOKEN и STATION__ID обязательны, но валидацию на старте не
проходит только незаполненный STATION__ID. STATION__TOKEN= — строка, и
пустое значение проходит валидацию: именно оно стоит в шаблоне client/.env.
Клиент запустится, но портал не примет ни один запрос.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
— |
Обязательна. Токен авторизации на портале. Секрет. Пустое значение проходит валидацию, см. предупреждение выше. |
|
int |
— |
Обязательна. Идентификатор станции на портале. |
|
float |
с портала |
Широта в градусах. Не задана — берётся из документа состояния портала (координаты станции на её странице). Задана — имеет приоритет и уходит на портал в запросе расписания. |
|
float |
с портала |
Долгота в градусах. То же правило. |
|
int |
с портала |
Высота над уровнем моря, м. То же правило. |
URL — адреса портала¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
|
Базовый адрес API. Менять только для работы с тестовым порталом. |
|
str |
|
Путь получения расписания проходов. |
|
str |
|
Путь выгрузки данных наблюдения. |
|
str |
|
Путь эндпоинтов станции: |
MQTT — живой канал с порталом¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
bool |
|
Держать подключение к брокеру портала: конфигурация применяется в момент сохранения формы, портал сразу видит статус и «offline». При |
|
str |
|
Адрес брокера. WebSocket на 443 того же хоста — закрытым сетям ничего открывать не нужно. |
API — таймауты HTTP¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
int |
|
Таймаут запроса расписания. |
|
int |
|
Таймаут выгрузки данных. Поднимайте на медленном канале: аудио и водопад весят десятки мегабайт. |
ANTENNA — поворотное устройство и трансивер¶
Управляется с портала. Смысл режимов и схема подключения — в
Поворотном устройстве. Модель самого ротатора задаётся в
docker-compose.yml сервиса rotctld и с портала не меняется.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
bool |
|
Включает поток слежения. При |
|
str |
|
Модель Hamlib. |
|
int |
|
Скорость последовательного порта. Игнорируется для сетевых моделей. |
|
str |
|
Адрес |
|
float |
|
Порог в градусах: команда на поворот отправляется, только если рассогласование больше этого значения. Защищает механику от дёрганья. |
|
|
|
Стратегия слежения. См. Режимы слежения. |
|
float |
|
Минимальный угол места. Ниже него ротатор не опускается — полезно, если антенну задевает мачта или крыша. |
|
str |
|
Хост |
|
int |
|
Порт |
Устарело, начиная с версии 2.0: ANTENNA__ROTATOR__FLIP (булев флаг) заменён на ANTENNA__ROTATOR__MODE.
Старая переменная игнорируется. FLIP=True соответствует MODE=Flip.
OBSERVATION — параметры наблюдения¶
Управляются с портала: SOAPY_RX_DEVICE, REMOVE_*, RUN_*_SCRIPT.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
|
Строка драйвера SoapySDR либо список диапазонов |
|
bool |
|
Удалять сырой |
|
bool |
|
Удалять файлы наблюдения после успешной выгрузки. При |
|
bool |
|
Запускать |
|
bool |
|
Запускать |
|
str |
|
Имя pre-скрипта в |
|
str |
|
Имя post-скрипта в |
|
float |
|
Предел работы |
|
float |
|
Период обновления доплеровской коррекции, с. |
|
float |
|
Период пересчёта положения ротатора, с. |
|
float |
|
Задержка перед отправкой пачки декодированных кадров, с. Кадры, появившиеся за это окно, уходят одним запросом. |
|
str |
|
Формат метки времени в именах файлов. |
|
str |
|
Шаблон имени файла наблюдения. |
Служебные вложенные разделы OBSERVATION__PREFIX__*, OBSERVATION__EXTENSION__*,
OBSERVATION__SENDING_KEY__* и OBSERVATION__UPLOAD_TYPES__* задают префиксы
(payload, waterfall, raw_waterfall, data, metadata), расширения
(ogg, png, dat, json) и имена полей выгрузки. Менять их на станции не нужно — портал ожидает
именно эти значения.
FLOWGRAPH — потоковый граф SDR¶
Управляется с портала, кроме UDP_DUMP_*, FLOWGRAPH_DISPATCHER и
DEFAULT_MODE. Каждое поле этого раздела превращается в аргумент
--kebab-case=значение командной строки flowgraph_dispatcher. Поля со
значением None не передаются вовсе. Подробнее — в
Потоковом графе.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
не задан |
Частота дискретизации, допускается запись |
|
int |
не задан |
Полоса приёмного тракта, Гц. |
|
str |
|
Имя антенного входа устройства. |
|
str |
|
Режим усиления: |
|
float |
не задан |
Общее усиление, дБ. Работает при |
|
str |
не задан |
Покаскадные настройки, например |
|
float |
|
Поправка опорного генератора, ppm. |
|
int |
не задан |
Исторический: графы этот параметр никогда не читали, с 2026-09-12 диспетчер его принимает и отбрасывает. Задавать незачем. |
|
int |
не задан |
Смещение гетеродина, Гц — уводит DC-пик от полезного сигнала. |
|
int |
не задан |
Частота гетеродина трансвертера, Гц. |
|
int |
не задан |
Смещение по основной полосе, Гц. |
|
bool |
не задан |
Подавление постоянной составляющей средствами драйвера. |
|
str |
не задан |
Дополнительные аргументы устройства SoapySDR. |
|
str |
не задан |
Аргументы потока SoapySDR. |
|
str |
не задан |
Аргументы перестройки SoapySDR. |
|
bool |
|
Писать сырой IQ-поток в файл. Обязательно для METEOR. |
|
str |
не задан |
Путь файла IQ-дампа. |
|
str |
|
Хост UDP-потока IQ. Единственный потребитель — |
|
int |
|
Порт UDP-потока IQ. |
|
str |
|
Имя исполняемого файла диспетчера графов. |
|
str |
|
Режим демодуляции, если портал прислал неизвестный, пока режимы станции ему не опубликованы. После публикации такой проход не начинается. |
Словари соответствия «режим портала → скрипт satnogs» (SCRIPTS и MODES)
переменными окружения не являются: это константы модуля
core/configs/flowgraph.py. Добавление режима описано в
Потоковом графе.
WATERFALL — водопад¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
bool |
|
Подбирать границы шкалы по данным (робастная оценка уровня шума через сигма-клиппинг). При |
|
int |
|
Нижняя граница шкалы, дБ. Действует при |
|
int |
|
Верхняя граница шкалы, дБ. Действует при |
|
int |
|
Фолбэк нижней границы: |
|
int |
|
Фолбэк верхней границы, там же. |
|
int |
|
Нижняя отсечка отсчётов при автоподборе, дБ. Работает в дополнение к |
|
int |
|
Сколько отсчётов должно пережить фильтрацию, чтобы автоподбору можно было верить. Меньше — берутся |
|
float |
|
Ширина изображения, дюймы. |
|
float |
|
Высота изображения, дюймы. |
|
bool |
|
Рисовать вспомогательную сетку поверх водопада. |
|
int |
|
Шаг подписей по оси времени, мин. |
|
str |
|
Формат подписей времени на оси. |
|
str |
|
Формат меток времени в метаданных. |
WATERFALL__GRIDSPEC — раскладка полотна matplotlib; менять на станции не нужно.
LOG — логирование¶
Управляются с портала: LEVEL, SCRIPT_LEVEL, FLOWGRAPH_LEVEL.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
|
Уровень логирования приложения. |
|
str |
|
Уровень для вывода скриптов из |
|
str |
|
Уровень для вывода потокового графа. |
|
str |
|
Директория лог-файлов. В compose это именованный том, поэтому логи переживают перезапуск. |
|
str |
|
Имя основного лог-файла. |
|
int |
|
Размер файла до ротации (5 МБ). |
|
int |
|
Количество ротированных файлов. |
|
str |
|
Формат строки лога. |
|
str |
|
Кодировка лог-файла. |
SCHEDULER — планировщик заданий¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
int |
|
Период опроса расписания на портале. |
|
int |
|
Период повторной отправки данных из |
|
int |
|
Период проверки sat-data bundle на портале; новая версия применяется между проходами, рестарт не нужен. |
|
int |
|
Размер пула потоков APScheduler. |
|
int |
|
Сколько экземпляров одного задания могут выполняться одновременно. |
|
bool |
|
Схлопывать пропущенные запуски в один. |
|
int |
|
Допустимое опоздание запуска задания, с. Больше — задание пропускается. |
|
str |
|
Уровень логирования самого APScheduler. На |
SDR — обследование приёмника¶
Поиск подключённых приёмников и калибровка усиления (soniks_client/sdr_survey.py).
Итог уходит на портал ключами sdr и calibration документа статуса и показывается
в форме «Настройки станции»; команды «Пересканировать» и «Откалибровать усиление»
приходят блоком commands документа состояния. Приёмник открывается только вне
прохода. Результаты и отметки выполненных команд — в sdr-survey.json рядом с
PATHS__STATE_FILE.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
float |
|
Как часто в простое перечислять приёмники заново — воткнутый или выпавший приёмник появляется на портале без перезапуска. На старте — всегда. |
|
float |
|
Сколько минут до ближайшего прохода должно оставаться, чтобы занять приёмник обследованием; меньше — откладывается до следующей сверки. |
|
float |
|
Шаг свипа по общему усилению при калибровке, дБ. |
|
float |
|
Порог подъёма шумовой полки над минимальной: первое усиление, на котором он достигнут, рекомендуется как |
|
int |
|
Выборок на одно измерение мощности. |
HEALTH — состояние станции¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
int |
|
Порт |
AGENT — агент обновлений¶
Читает их soniks-agent из того же .env (см. Агент обновлений); клиент их не
знает. Кроме них агенту нужны STATION__ID, STATION__TOKEN, URL__BASE и
HEALTH__PORT — те же, что у клиента.
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
int |
|
Период сверки с порталом ( |
|
int |
|
Образ применяется и L2 гоняется, только когда проход не идёт и до ближайшего дальше этого (решение 42). |
|
int |
|
L1: сколько ждать 200 от |
|
int |
|
Провалившийся gate digest не применяется повторно раньше этого срока; новый digest в канале — сразу. |
|
str |
|
Имя сервиса клиента в |
|
path |
|
Текущий и предыдущий образ, итог последнего применения — на томе |
|
int |
|
Таймаут запросов к порталу. |
PATHS — размещение файлов¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
|
Корень рабочих директорий. Директории создаются на старте. Оба compose задают |
|
str |
|
Текущие наблюдения. |
|
str |
|
Успешно выгруженные файлы (если их не удаляют). |
|
str |
|
Невыгруженные файлы, ждущие повторной отправки. |
|
str |
|
Последний полученный с портала документ состояния (конфигурация, координаты). Лежит на постоянном томе, не под |
Логика раскладки файлов по этим директориям — в Загрузке данных.
JOBS¶
Переменная |
Тип |
По умолчанию |
Описание |
|---|---|---|---|
|
str |
|
Префикс имён заданий наблюдения в планировщике. По нему они отличаются от служебных. |
Переменные уровня скриптов¶
Эти переменные не входят в модель настроек — их читают напрямую скрипты в
scripts/, унаследованные от SatNOGS. Поэтому у них нет префикса раздела, они
не валидируются на старте, а опечатка просто приводит к тому, что функция молча
не работает. Что делает каждый скрипт — в Скриптах и декодерах.
Обзор диапазона в простое (bandscan)¶
Между проходами станция может писать широкополосный обзор диапазона.
Переменная |
По умолчанию |
Описание |
|---|---|---|
|
выкл. |
|
|
— |
Обязательна при включении. Центральная частота, Гц. Допускается запись |
|
— |
Обязательна при включении. Селектор устройства для |
|
из |
Частота дискретизации обзора. |
|
|
Куда складывать результат. Нужен реальный примонтированный диск. |
|
|
Утилита захвата. |
|
по частоте: 20 (< 300 МГц) / 50 (< 500 МГц) / 100 (выше) |
Число каналов БПФ. |
|
|
Формат выхода. |
|
|
Формат входа. |
|
|
Где лежит PID-файл обзора ( |
Скрипт также требует FLOWGRAPH__RX_SAMP_RATE и FLOWGRAPH__ANTENNA — без них
он завершается с ошибкой, — и читает FLOWGRAPH__PPM_ERROR (по умолчанию 0),
FLOWGRAPH__RF_GAIN (0) и FLOWGRAPH__OTHER_SETTINGS (пусто).
METEOR¶
Переменная |
По умолчанию |
Описание |
|---|---|---|
|
|
Список NORAD ID через пробел, для которых запускается демодуляция METEOR из IQ-дампа. Требует |
Запись IQ (постобработка)¶
Переменная |
По умолчанию |
Описание |
|---|---|---|
|
выкл. |
Переименовывать дамп после прохода в |
|
выкл. |
Сжимать переименованный дамп через |
Сам дамп включается FLOWGRAPH__ENABLE_IQ_DUMP, путь берётся из
FLOWGRAPH__IQ_DUMP_FILENAME — обе переменные читаются с префиксом.
Управление реле GPIO¶
Переменная |
По умолчанию |
Описание |
|---|---|---|
|
выкл. |
Включает |
Парковка ротатора¶
Переменная |
По умолчанию |
Описание |
|---|---|---|
|
выкл. |
После прохода отправить ротатору команду парковки. Адрес берётся из |
|
|
Азимут и угол места парковки через пробел. Зависит от физической установки мачты, поэтому вынесено в переменную. |
Декодеры gr-satellites и SSTV¶
Переменная |
По умолчанию |
Описание |
|---|---|---|
|
|
Имя исполняемого файла декодера в |
|
|
Уровень логирования обёртки |
|
|
Не удалять логи |
|
не задан |
Порт ZMQ, если декодер получает поток не из файла. |
|
|
Предел декодирования SSTV, с. Зависит от длины прохода: по истечении процесс останавливается, остальная постобработка продолжается. |