# Поддерживаемые спутники Демодуляцией и декодированием телеметрии занимается [gr-satellites](https://github.com/daniestevez/gr-satellites). Каждый аппарат описан в нём YAML-файлом (satyaml): частоты, модуляция, скорость, формат кадров. СОНИКС ведёт **собственный набор** таких определений — [soniks-satyaml](https://gitlab.com/space-education-development/soniks/client/soniks-satyaml). Он расширяет штатную базу gr-satellites аппаратами, которых там нет. ## Как определения попадают на станцию Двумя путями, и оба работают без вашего участия: 1. **При сборке образа.** Dockerfile копирует `soniks-satyaml/satyaml/*` поверх каталога satyaml библиотеки gr-satellites, а `sat.cfg` — в `/usr/local/bin`. Это запас на первый старт. 2. **При каждом старте контейнера — sat-data bundle с портала.** Клиент спрашивает у `sonik.space` свежайшую версию, скачивает архив (satyaml плюс `sat.cfg`), сверяет его sha256 и раскладывает по местам. Архив остаётся в кэше на постоянном томе, поэтому следующий старт обходится без сети, а версия уезжает на портал вместе с наблюдением — в `client_metadata` поле `radio.sat_data`. 3. **Между проходами — тот же bundle, без рестарта.** Раз в `SCHEDULER__SAT_DATA_SYNC_INTERVAL_IN_HOURS` (6 часов) клиент сверяет версию с порталом; новую скачивает и раскладывает, когда проход не идёт, и заново сообщает порталу список своих спутников. Практический вывод: недавно добавленный спутник доезжает до работающей станции сам, в пределах интервала проверки; перезапуск контейнера ускорит, обновлять образ не нужно. ```{note} До версии 2.3 определения тянулись клонированием gr-satellites и soniks-satyaml из git при каждом старте. В сетях, где открыт только `sonik.space`, клон падал и станция навсегда оставалась с определениями из образа, ничего об этом не сообщая. Теперь источник один, тот же, что и у всего остального, — портал. ``` ```{note} Если портал недоступен, клиент напишет предупреждение в лог и продолжит работу с тем, что уже есть: с кэшем прошлого bundle либо с определениями из образа. Это не ошибка. ``` ## Список аппаратов soniks-satyaml Ниже — то, что добавляет СОНИКС **сверх** штатной базы gr-satellites. Актуально на момент сборки документации; источник — [soniks-satyaml/satyaml](https://gitlab.com/space-education-development/soniks/client/soniks-satyaml/-/tree/main/satyaml). * 239Alferov * A-SEANSAT-PG1 * ACS3 * AL-MUNTHER * ALAINSAT-1 * ARCTICSAT-1 * ASRTU-1 * Avion_Kaluga_650 * BEE-1000 * BELIEFSAT-0 * BLUEBIRD-6 * BLUEWALKER-3 * BOTSAT-1 * BRO-18 * COLIBRI-S * CROCUBE * CSC-1 * CSC-2 * CTC-0 * Challangeone * DCS-1 * DIDO-2 * DIDO-3 * DJIBOUTI-1A * DJIBOUTI-1B * ERNST * FORESAIL-1P * GALAPAGOS-UTE * GEOSCAN-1 * GEOSCAN-2 * GEOSCAN-3 * GEOSCAN-4 * GEOSCAN-5 * GEOSCAN-6 * GHALIB * GRBBeta * HADES-ICM * HADES-R * HCT-SAT2 * HERMES-H1 * HERMES-H2 * HERMES-H3 * HERMES-H4 * HERMES-H5 * HERMES-H6 * HORIZON * HORS-1 * HORS-2 * HORS-3 * HORS-4 * HUBBLE-4 * HUNITY * HYDRA-T * HYPERVIEW-1G * HYTI * INNOCUBE * INNOSAT16 * INNOSAT3 * IRIS-F1 * IRIS-F2 * IRIS-F3 * ISOI * JACK001 * JINJUSAT-1B * KILLICK-1 * LASARSAT * LOBACHEVSKY * LUCA-1 * LUR-1 * Lilium-1 * MONITOR-2 * MORDOVIA-IOT * MTUSI-1 * NANOFF-A * NANOFF-B * NAPA-1 * NAPA-2 * NASBSAT-1 * NASBSAT-2 * NEPT-1 * NOKHCHO * NUSHSAT1 * PARUS-T1 * PHASMA-DIRAC * PHASMA-LAMARR * PHI-1 * QMR-KWT-2 * QMSAT * ROBUSTA-3A * RTU-MIREA1 * RUZAEVKA-390 * SAKHACUBE-CHOLBON * SAMSAT-IONOSPHERE * SATORO-3 * SATORO-T2 * SATURN * SIT-2086 * SIT-HSE * SITRO-AIS-10 * SITRO-AIS-11 * SITRO-AIS-12 * SITRO-AIS-13 * SITRO-AIS-14 * SITRO-AIS-15 * SITRO-AIS-16 * SITRO-AIS-17 * SITRO-AIS-18 * SITRO-AIS-19 * SITRO-AIS-20 * SITRO-AIS-21 * SITRO-AIS-22 * SITRO-AIS-23 * SITRO-AIS-24 * SITRO-AIS-25 * SITRO-AIS-26 * SITRO-AIS-27 * SITRO-AIS-28 * SITRO-AIS-29 * SITRO-AIS-30 * SITRO-AIS-31 * SITRO-AIS-32 * SITRO-AIS-33 * SITRO-AIS-34 * SITRO-AIS-35 * SITRO-AIS-36 * SITRO-AIS-37 * SITRO-AIS-38 * SITRO-AIS-39 * SITRO-AIS-40 * SITRO-AIS-41 * SITRO-AIS-42 * SITRO-AIS-43 * SITRO-AIS-44 * SITRO-AIS-45 * SITRO-AIS-46 * SITRO-AIS-47 * SITRO-AIS-48 * SITRO-AIS-49 * SITRO-AIS-5 * SITRO-AIS-50 * SITRO-AIS-51 * SITRO-AIS-52 * SITRO-AIS-53 * SITRO-AIS-54 * SITRO-AIS-55 * SITRO-AIS-56 * SITRO-AIS-57 * SITRO-AIS-58 * SITRO-AIS-59 * SITRO-AIS-6 * SITRO-AIS-60 * SITRO-AIS-61 * SITRO-AIS-62 * SITRO-AIS-63 * SITRO-AIS-64 * SITRO-AIS-65 * SITRO-AIS-7 * SITRO-AIS-8 * SITRO-AIS-9 * SITRO-TD-3 * SITRO-TD-4 * SWSU-60 * TEVEL2-1 * TEVEL2-2 * TEVEL2-3 * TEVEL2-4 * TEVEL2-5 * TEVEL2-6 * TEVEL2-7 * TEVEL2-8 * TEVEL2-9 * TPA-1 * TUBIN * TUSUR-GO * UHETSAT * UND-ROADS-1 * UND-ROADS-2 * UVSQ-SAT-NG * UmKA-1 * VDNH-80 * VIOLET * VIZARD-ION * ZIMSAT-2 * ZORKIY-2M-5 * ZORKIY-2M-7 * ZORKIY-2M-VPE * Zorkiy-2m * Zorkiy-2m-2 * Zorkiy-2m-4 * Zorkiy-2m-6 ## Добавление нового спутника Определения живут в отдельном репозитории, а не здесь. Порядок такой: 1. Подготовьте YAML по [формату gr-satellites](https://gr-satellites.readthedocs.io/en/latest/satyaml.html). 2. Отправьте merge request в [soniks-satyaml](https://gitlab.com/space-education-development/soniks/client/soniks-satyaml). Туда же кладутся точечные правки `sat.cfg`. 3. После вливания CI репозитория соберёт новый bundle и опубликует его на портале — версией служит короткий SHA коммита. 4. Все станции подхватят его при ближайшем перезапуске. Если аппарату нужен режим демодуляции, которого клиент ещё не знает, потребуется правка и в этом репозитории — см. [Как добавить режим демодуляции](../development/flowgraph.md#как-добавить-режим-демодуляции).