/Methods/RunPlayerSubscription

<< Click to Display Table of Contents >>

Navigation:  API MasterSCADA 4D > Подключение к исполнительной системе по JSON > HTTP API MasterPLC > Проигрывание истории >

/Methods/RunPlayerSubscription

Создаёт архивный запрос для текущего набора параметров и ставит его в асинхронную очередь. Получение результата выполняется через PlayerPublishData.

HTTP: POST /Methods/RunPlayerSubscription

Запрос

{
  "sessionId": 123456789,
  "subscriptionId": 1,
  "startTime": 1709990000000,
  "endTime": 1710000000000,
  "speed": 1.0
}

Поля запроса

Поле

Тип

Обязательное

По умолчанию

Описание

sessionId

integer

условно

Нужен, если сессия не передана заголовком Session-Id

subscriptionId

integer

да

Идентификатор подписки проигрывателя

startTime

integer

нет

0

Начало диапазона, Unix time в миллисекундах

endTime

integer

нет

0

Конец диапазона, Unix time в миллисекундах; 0 внутри архива заменяется текущим временем

speed

number

нет

0

Сейчас используется только проверка знака; темп публикации не регулирует

64-битные поля времени принимают также строки с десятичным числом, а speed — числовую строку. В новых клиентах следует передавать JSON-числа.

Ответ

{
  "subscriptionId": 1,
  "code": 0
}

Поля ответа

Поле

Тип

Описание

subscriptionId

integer

Идентификатор подписки

code

integer

0, если запрос создан и поставлен в очередь

Поведение и ограничения

Успешный ответ подтверждает только постановку запроса в очередь, а не готовность архивных данных.

Для каждого параметра жёстко задаётся максимум 100 значений на страницу. Если данных больше, продолжение выполняется внутри подписки после чтения страницы через PlayerPublishData.

Обработчик включает get_bounds: архивный слой может добавить ближайшие граничные значения вокруг запрошенного диапазона, если они доступны.

Архивный запрос ставится с нулевым тайм-аутом, который в DataArchiveManager означает неограниченное ожидание. Если источник не завершит запрос, PlayerPublishData может неограниченно возвращать OpcUa_BadWaitingForInitialData.

Абсолютное значение speed нигде не используется: метод не выдерживает интервалы между архивными метками и не ускоряет выдачу.

При speed < 0 обработчик только меняет startTime и endTime местами, но не устанавливает флаг Request::Options::reversed. При обычном диапазоне startTime < endTime получается неподдерживаемый диапазон с началом после конца, и архивный слой возвращает пустые данные. Обратное воспроизведение фактически не реализовано.

Повторный запуск заменяет db_request, доступный через подписку, но не отменяет ранее поставленный архивный запрос; его результат становится недоступен клиенту этой подписки.

Если в подписку не добавлено ни одного параметра, запрос завершается успешным пустым массивом data.

Метод не перезапускает таймер активности подписки.