-
Notifications
You must be signed in to change notification settings - Fork 0
Home
rootfabric edited this page Oct 22, 2025
·
14 revisions
Эта страница описывает телеметрию и команды, которые предоставляет плагин se-grid-controller на выделенном сервере Space Engineers. Документация основана на классах устройств в клиентской библиотеке secontrol, которые повторяют протокол взаимодействия с плагином.
- Каждый блок на гриде представлен экземпляром
BaseDeviceс собственнымdevice_id, типом (device_type) и ключом телеметрии. При создании устройство подписывается на обновления Redis и сразу подтягивает текущий срез данных.
Ключи и имя заполняются из метаданных, а также кэшируются при появлении телеметрии.【F:src/secontrol/base_device.py†L887-L943】 - Если ожидаемого ключа телеметрии нет, клиент сканирует Redis по шаблону
se:{owner}:grid:{grid}:*:{device}:telemetry, чтобы подключиться к существующему ключу.【F:src/secontrol/base_device.py†L944-L963】 - Все команды публикуются в канал
se.{player}.commands.device.{deviceId}. Перед отправкой клиент автоматически добавляет идентификаторы грида, устройства и пользователя, а также метаданные об инициаторе и временную метку.【F:src/secontrol/base_device.py†L1005-L1031】【F:src/secontrol/base_device.py†L1214-L1238】 - Базовые методы
enable,disable,toggle_enabledдоступны для большинства устройств и обновляют кэш флагов при успехе.【F:src/secontrol/base_device.py†L1005-L1031】 - Инвентарные устройства наследуются от
ContainerDevice, которая нормализует содержимоеitemsи реализует перенос предметов между инвентарями через командуtransfer_itemsс JSON в полеstate. Есть удобные обёрткиmove_subtype,move_allиdrain_to.【F:src/secontrol/devices/container_device.py†L1-L114】【F:src/secontrol/devices/container_device.py†L116-L193】
- Батарея
- Кокпит
- Коннектор
- Контейнер
- Сортировщик конвейера
- Генератор газа
- Гироскоп
- Лампа
- Большая турель
- Проектор
- Реактор
- Перерабатывающий завод
- Пульт дистанционного управления
- Корабельный бур
- Корабельный гриндер
- Корабельный сварщик
- Двигатель (трастер)
- Базовый корабельный инструмент
- Использует только базовые поля
BaseDevice(enabled,isWorking,isFunctionalи т. п.). Дополнительных показателей батарея не добавляет.【F:src/secontrol/devices/battery_device.py†L8-L19】
| Команда | Параметры | Описание |
|---|---|---|
battery_mode |
mode ∈ {"auto", "recharge", "discharge"} |
Переключает режим работы батареи; проверка допустимого значения выполняется на клиенте до отправки сообщения в Redis.【F:src/secontrol/devices/battery_device.py†L8-L19】 |
-
enabled,isUnderControl,hasPilot— флаги включения и захвата управления.【F:src/secontrol/devices/cockpit_device.py†L29-L37】 -
pilot— словарь сentityId,identityId, именем и уровнями кислорода/энергии/водорода пилота, если он присутствует.【F:src/secontrol/devices/cockpit_device.py†L38-L48】 -
shipMass— масса корабля (total,base,physical).【F:src/secontrol/devices/cockpit_device.py†L51-L60】 -
linearVelocityиangularVelocity— вектор скорости с компонентами и длиной.【F:src/secontrol/devices/cockpit_device.py†L62-L66】 -
gravity— вложенные векторыnatural,artificial,totalдля гравитации.【F:src/secontrol/devices/cockpit_device.py†L68-L77】 -
inventories— список инвентарей кокпита (каждый элемент — словарь из телеметрии).【F:src/secontrol/devices/cockpit_device.py†L79-L84】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Включает или выключает питание кокпита, синхронизирует локальный кэш флагов.【F:src/secontrol/devices/cockpit_device.py†L87-L92】 |
handbrake |
handBrake: bool |
Устанавливает состояние ручного тормоза.【F:src/secontrol/devices/cockpit_device.py†L93-L95】 |
dampeners |
dampeners: bool |
Управляет инерционными демпферами.【F:src/secontrol/devices/cockpit_device.py†L96-L98】 |
control_thrusters |
controlThrusters: bool |
Разрешает или запрещает управление трастерами из кокпита.【F:src/secontrol/devices/cockpit_device.py†L99-L101】 |
control_wheels |
controlWheels: bool |
Разрешает или запрещает управление колесами.【F:src/secontrol/devices/cockpit_device.py†L102-L103】 |
set_main |
isMain: bool |
Назначает блок главным кокпитом грида.【F:src/secontrol/devices/cockpit_device.py†L104-L106】 |
- Стандартные флаги
enabledиlockedприсутствуют в телеметрии устройства черезBaseDeviceи метаданные Redis.【F:src/secontrol/devices/connector_device.py†L13-L21】
| Команда | Параметры | Описание |
|---|---|---|
connector_state |
enabled: bool?, locked: bool? |
Переключает питание и/или замок коннектора; оба параметра необязательны и передаются только при необходимости изменить состояние.【F:src/secontrol/devices/connector_device.py†L13-L21】 |
-
items— список предметов с полямиtype,subtype,amount, а при наличииdisplayName; данные нормализуются клиентом при разборе телеметрии.【F:src/secontrol/devices/container_device.py†L19-L49】 -
capacity— агрегированные показатели объёма и массы (currentVolume,maxVolume,currentMass,fillRatio).【F:src/secontrol/devices/container_device.py†L51-L64】
| Команда | Параметры | Описание |
|---|---|---|
transfer_items |
state: JSON-строка с fromId, toId, items[] (type, subtype, amount) |
Базовая команда Redis-плагина, используемая для любых операций перемещения инвентаря.【F:src/secontrol/devices/container_device.py†L66-L118】 |
move_items |
items: Iterable, from_id, to_id
|
Высокоуровневый метод клиента: формирует полезную нагрузку для transfer_items по списку словарей или объектов телеметрии.【F:src/secontrol/devices/container_device.py†L120-L133】 |
move_subtype |
subtype, amount?, type?, from_id, to_id
|
Перемещает один сабтайп с опциональным ограничением по количеству и типу предмета.【F:src/secontrol/devices/container_device.py†L134-L143】 |
move_all |
to_id, blacklist?
|
Переносит все предметы, кроме перечисленных в blacklist, автоматически читая телеметрию контейнера.【F:src/secontrol/devices/container_device.py†L145-L167】 |
drain_to |
to_id, subtypes: Iterable |
Передает указанные сабтайпы полностью из исходного контейнера в целевой.【F:src/secontrol/devices/container_device.py†L169-L193】 |
-
mode,isWhitelist,drainAll— режим работы, состояние списка и глобальное вытягивание ресурсов.【F:src/secontrol/devices/conveyor_sorter_device.py†L33-L57】 -
filters[]— список фильтров с полямиtype,subtype,allSubtypes, нормализованных клиентом.【F:src/secontrol/devices/conveyor_sorter_device.py†L1-L31】【F:src/secontrol/devices/conveyor_sorter_device.py†L33-L57】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Управляет питанием сортировщика, поддерживая локальный кэш состояния.【F:src/secontrol/devices/conveyor_sorter_device.py†L60-L64】 |
set_whitelist / set_blacklist
|
whitelist: bool? |
Переключают режим работы; set_whitelist принимает булев параметр, set_blacklist отправляет фиксированное значение.【F:src/secontrol/devices/conveyor_sorter_device.py†L65-L69】 |
set_drain_all |
drainAll: bool |
Активирует или отключает вытягивание всех предметов через сеть конвейеров.【F:src/secontrol/devices/conveyor_sorter_device.py†L70-L72】 |
clear_filters |
— | Полностью очищает список фильтров блока.【F:src/secontrol/devices/conveyor_sorter_device.py†L73-L81】 |
add_filters / remove_filters
|
filters[] |
Добавляют или удаляют фильтры; значения нормализуются вспомогательной функцией клиента.【F:src/secontrol/devices/conveyor_sorter_device.py†L73-L96】【F:src/secontrol/devices/conveyor_sorter_device.py†L1-L31】 |
set_filters |
filters[], whitelist? |
Заменяет весь список фильтров и при необходимости переключает режим списка.【F:src/secontrol/devices/conveyor_sorter_device.py†L82-L96】【F:src/secontrol/devices/conveyor_sorter_device.py†L1-L31】 |
-
filledRatioи производственные показателиproductionCapacity,currentOutput,maxOutput.【F:src/secontrol/devices/gas_generator_device.py†L12-L30】 - Флаги
useConveyorSystem,autoRefill, а также агрегированная структураfunctional_status(enabled,isFunctional,isWorking).【F:src/secontrol/devices/gas_generator_device.py†L12-L30】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Управляет питанием генератора и отражает новое состояние в кэше устройства.【F:src/secontrol/devices/gas_generator_device.py†L33-L36】 |
use_conveyor |
useConveyor: bool |
Включает использование конвейерной сети для подачи льда.【F:src/secontrol/devices/gas_generator_device.py†L37-L38】 |
auto_refill |
autoRefill: bool |
Автоматически пополняет баллоны, подключенные к блоку.【F:src/secontrol/devices/gas_generator_device.py†L39-L40】 |
refill_bottles |
— | Мгновенно заправляет баллоны в инвентаре генератора.【F:src/secontrol/devices/gas_generator_device.py†L41-L42】 |
- Использует стандартные поля
BaseDevice(enabled,isFunctional,isWorking). Специализированных показателей нет.【F:src/secontrol/devices/gyro_device.py†L12-L36】
| Команда | Параметры | Описание |
|---|---|---|
override |
pitch, yaw, roll ∈ [-1;1], power? |
Клиент нормализует значения и формирует CSV-строку для установки ручного управления гироскопом.【F:src/secontrol/devices/gyro_device.py†L12-L28】 |
enable / disable
|
— | Включает или выключает блок; доступны обертки enable и disable.【F:src/secontrol/devices/gyro_device.py†L30-L36】 |
clear_override |
— | Сбрасывает ручные установки и возвращает гироскоп в автоматический режим.【F:src/secontrol/devices/gyro_device.py†L30-L36】 |
-
enabled,intensity,radius— стандартные поля состояния лампы.【F:src/secontrol/devices/lamp_device.py†L69-L115】 -
color— текущий RGB в диапазоне 0–1 с удобными геттерами для преобразования к целочисленному цвету.【F:src/secontrol/devices/lamp_device.py†L69-L115】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / set_enabled
|
enabled: bool |
Управление питанием лампы; set_enabled принимает булево значение и вызывает соответствующую команду.【F:src/secontrol/devices/lamp_device.py†L43-L58】 |
color |
color: Sequence/str/dict |
Принимает цвет в различных форматах, нормализует его к трем компонентам 0–1 перед отправкой в Redis.【F:src/secontrol/devices/lamp_device.py†L5-L41】【F:src/secontrol/devices/lamp_device.py†L59-L67】 |
-
enabled,aiEnabled,idleRotation,rangeиtarget(структура с текущей целью илиnull).【F:src/secontrol/devices/large_turret_device.py†L12-L28】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Управление питанием и синхронизация локального состояния турели.【F:src/secontrol/devices/large_turret_device.py†L30-L33】 |
idle_rotation |
idleRotation: bool |
Включает пассивное вращение турели при отсутствии целей.【F:src/secontrol/devices/large_turret_device.py†L34-L35】 |
set_range |
range: float |
Устанавливает дистанцию обнаружения и стрельбы.【F:src/secontrol/devices/large_turret_device.py†L36-L37】 |
shoot_once |
— | Производит одиночный выстрел.【F:src/secontrol/devices/large_turret_device.py†L38-L43】 |
shoot_on / shoot_off
|
— | Постоянно включает или выключает стрельбу турели.【F:src/secontrol/devices/large_turret_device.py†L38-L43】 |
reset_target |
— | Сбрасывает текущую цель, позволяя турели выбрать новую.【F:src/secontrol/devices/large_turret_device.py†L38-L43】 |
-
remainingBlocks,buildableBlocks,projectedGridName— ключевые показатели текущей проекции.【F:src/secontrol/devices/projector_device.py†L64-L84】 - Методы
blueprint_key,load_blueprint_snapshotиload_blueprint_xmlпозволяют считывать сохранённые префабы из Redis-ключа, который формируется самим устройством.【F:src/secontrol/devices/projector_device.py†L114-L155】
| Команда | Параметры | Описание |
|---|---|---|
set_state |
enabled: bool |
Включает или выключает питание проектора.【F:src/secontrol/devices/projector_device.py†L18-L23】 |
projector_state |
Любая комбинация флагов keepProjection, showOnlyBuildable, instantBuild, alignGrids, projectionLocked, useAdaptiveOffsets, useAdaptiveRotation
|
Обновляет внутреннее состояние проекции; требуется хотя бы один параметр.【F:src/secontrol/devices/projector_device.py†L24-L46】 |
set_scale / set_offset / set_rotation
|
scale: float, offset: Vector3, rotation: Vector3 |
Полностью задают масштаб, смещение и ориентацию проекции.【F:src/secontrol/devices/projector_device.py†L47-L63】 |
nudge_offset / nudge_rotation
|
Инкрементальные смещения/повороты | Добавляют указанные дельты к текущему положению или вращению.【F:src/secontrol/devices/projector_device.py†L47-L63】 |
reset_projection / lock_projection / unlock_projection
|
— | Управляют сохранением и фиксацией текущей проекции.【F:src/secontrol/devices/projector_device.py†L59-L63】 |
load_prefab |
prefabId, keep? |
Загружает заранее сохранённый префаб; опция keep сохраняет текущую проекцию в списке последних.【F:src/secontrol/devices/projector_device.py†L86-L101】 |
load_blueprint_xml |
xml: str |
Поднимает проекцию из XML ShipBlueprintDefinition.【F:src/secontrol/devices/projector_device.py†L102-L113】 |
export_grid_blueprint |
includeConnected: bool? |
Экспортирует текущий грид в Redis и возвращает ключ со снапшотом/блюпринтом.【F:src/secontrol/devices/projector_device.py†L118-L127】 |
-
currentOutput,maxOutput,outputRatio— показатели мощности реактора.【F:src/secontrol/devices/reactor_device.py†L12-L28】 - Флаги
useConveyorSystem,enabled,isFunctional,isWorking— состояние подачи топлива и функциональности блока.【F:src/secontrol/devices/reactor_device.py†L12-L28】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Управляет питанием реактора.【F:src/secontrol/devices/reactor_device.py†L31-L34】 |
use_conveyor |
useConveyor: bool |
Включает или отключает использование конвейерной сети для подачи топлива.【F:src/secontrol/devices/reactor_device.py†L35-L36】 |
-
useConveyorSystem,isProducing,isQueueEmpty,currentProgress— состояние и прогресс переработки.【F:src/secontrol/devices/refinery_device.py†L26-L39】 -
inputInventory,outputInventory— вложенные структуры объема, массы и предметов, нормализованные_parse_inventory.【F:src/secontrol/devices/refinery_device.py†L8-L23】【F:src/secontrol/devices/refinery_device.py†L40-L48】 -
queue— список элементов очереди производства с типом, сабтайпом и количеством.【F:src/secontrol/devices/refinery_device.py†L49-L52】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Управляет питанием перерабатывающего завода.【F:src/secontrol/devices/refinery_device.py†L55-L58】 |
use_conveyor |
useConveyor: bool? |
Синхронизирует использование конвейерной сети, даже если параметр не передан (используется для актуализации состояния).【F:src/secontrol/devices/refinery_device.py†L59-L63】 |
queue_clear |
— | Полностью очищает очередь производства.【F:src/secontrol/devices/refinery_device.py†L64-L65】 |
queue_remove |
index: int, amount: int? |
Удаляет элемент очереди по индексу, опционально уменьшая его количество.【F:src/secontrol/devices/refinery_device.py†L66-L70】 |
queue_add |
blueprint: str/tuple/dict, amount: int? |
Добавляет чертёж в очередь; клиент нормализует запись _normalize_queue_item. Доступен метод add_queue_items для массовых операций.【F:src/secontrol/devices/refinery_device.py†L24-L25】【F:src/secontrol/devices/refinery_device.py†L71-L80】 |
- Наследует базовые поля (
enabled,isWorking, координаты) изBaseDevice; отдельная телеметрия реализована на стороне плагина и приходит в виде стандартных флагов.【F:src/secontrol/devices/remote_control_device.py†L12-L44】
| Команда | Параметры | Описание |
|---|---|---|
remote_control |
targetId: int?, targetName: str? |
Включает автопилот и назначает цель по идентификатору или имени.【F:src/secontrol/devices/remote_control_device.py†L12-L18】 |
remote_goto |
gps: str / координаты, speed: float? |
Строит GPS-строку (GPS:...) или принимает координаты и отправляет блок на указанную позицию; параметр speed задаётся в state.【F:src/secontrol/devices/remote_control_device.py†L19-L44】 |
-
harvestRatio,cutOutDepth,drillRadius,drillPowerConsumption,collectStone— показатели добычи и настройки радиуса бурения.【F:src/secontrol/devices/ship_drill_device.py†L9-L21】
| Команда | Параметры | Описание |
|---|---|---|
collect_stone |
collectStone: bool |
Управляет сбором камня буром.【F:src/secontrol/devices/ship_drill_device.py†L22-L23】 |
cut_depth |
cutDepth: float |
Задает глубину реза инструмента.【F:src/secontrol/devices/ship_drill_device.py†L24-L25】 |
drill_radius |
drillRadius: float |
Изменяет радиус бурения.【F:src/secontrol/devices/ship_drill_device.py†L26-L27】 |
-
grindingMultiplier,grindSpeedMultiplier,helpOthers— параметры скорости разборки и помощи союзникам.【F:src/secontrol/devices/ship_grinder_device.py†L9-L17】
| Команда | Параметры | Описание |
|---|---|---|
help_others |
helpOthers: bool |
Разрешает помогать союзным персонажам при разборке блоков.【F:src/secontrol/devices/ship_grinder_device.py†L18-L19】 |
-
weldingMultiplier,weldSpeedMultiplier,helpOthers,showArea— настройки скорости сварки и визуализации зоны действия.【F:src/secontrol/devices/ship_welder_device.py†L9-L20】
| Команда | Параметры | Описание |
|---|---|---|
help_others |
helpOthers: bool |
Разрешает обслуживать союзников при сварке.【F:src/secontrol/devices/ship_welder_device.py†L21-L22】 |
show_area |
showArea: bool |
Отображает область действия инструмента.【F:src/secontrol/devices/ship_welder_device.py†L23-L24】 |
- Использует базовые поля
BaseDevice(enabled,isFunctional,isWorking). Специфических показателей нет.【F:src/secontrol/devices/thruster_device.py†L11-L23】
| Команда | Параметры | Описание |
|---|---|---|
thruster_control |
override: float?, enabled: bool? |
Устанавливает тягу и/или включает блок. Метод клиента set_thrust заполняет только переданные поля.【F:src/secontrol/devices/thruster_device.py†L11-L23】 |
ShipToolDevice — базовый класс для бора, гриндера и сварщика, предоставляющий общую логику.
-
useConveyorSystem,requiredPowerInput,powerConsumptionMultiplierи агрегированный статусenabled/isFunctional/isWorking.【F:src/secontrol/devices/ship_tool_device.py†L9-L23】
| Команда | Параметры | Описание |
|---|---|---|
enable / disable / toggle
|
— | Управляют питанием любого корабельного инструмента.【F:src/secontrol/devices/ship_tool_device.py†L24-L28】 |
use_conveyor |
useConveyor: bool |
Включает использование конвейеров для подачи ресурсов.【F:src/secontrol/devices/ship_tool_device.py†L29-L30】 |
_send_boolean_command, _send_float_command
|
Внутренние параметры наследников | Вспомогательные методы, которые используют устройства-наследники для отправки специализированных команд (см. конкретные разделы).【F:src/secontrol/devices/ship_tool_device.py†L31-L34】 |