LS Player MQTT API: различия между версиями
м (Отступы) |
|||
| (не показано 19 промежуточных версий этого же участника) | |||
| Строка 29: | Строка 29: | ||
* '''entity''' - ID или наименование проигрываемой сущности. | * '''entity''' - ID или наименование проигрываемой сущности. | ||
* '''count''' - Опциональный параметр. Количество повторений проигрывания. Если не задан или значение равно Null то проигрывание продолжится до получения следующей команды с равным или боле высоким приоритетом. | * '''count''' - Опциональный параметр. Количество повторений проигрывания. Если не задан или значение равно Null то проигрывание продолжится до получения следующей команды с равным или боле высоким приоритетом. | ||
* '''priority''' - Приоритет команды. Чем | * '''priority''' - Приоритет команды. Значение от 1 до 100. Чем больше значение - тем выше приоритет. Команда с более низким приоритетом не может отменять команду с более высоким приоритетом. Текущие сопоставления приоритетов: Расписание - 60, Триггер - 50, Ручной запуск - 40. | ||
==== Stop ==== | ==== Stop ==== | ||
| Строка 43: | Строка 43: | ||
} | } | ||
* '''cmd''' - Название команды. | * '''cmd''' - Название команды. | ||
* '''priority''' - Приоритет команды. Чем | * '''priority''' - Приоритет команды. Значение от 1 до 100. Чем больше значение - тем выше приоритет. Команда с более низким приоритетом не может отменять команду с более высоким приоритетом. Текущие сопоставления приоритетов: Расписание - 60, Триггер - 50, Ручной запуск - 40. | ||
| Строка 355: | Строка 355: | ||
* '''msg''' - contain error message | * '''msg''' - contain error message | ||
* '''data''' - contain related error data | * '''data''' - contain related error data | ||
<span id="pub-lmschedulerevents"></span> | |||
<span id="pub-lmschedulerevents"></span> | <span id="pub-lmschedulerevents"></span> | ||
| Строка 497: | Строка 500: | ||
* '''byweekday''' - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’. | * '''byweekday''' - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’. | ||
* '''from_min''' - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’. | * '''from_min''' - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’. | ||
* '''to_min''' - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’. | * '''to_min''' - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’.<span id="sub-lmschedulereventsadd"></span> | ||
=== SUB <code>lm/scheduler/events/add</code> === | === SUB <code>lm/scheduler/events/add</code> === | ||
| Строка 784: | Строка 786: | ||
* '''byweekday''' - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’. | * '''byweekday''' - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’. | ||
* '''from_min''' - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’. | * '''from_min''' - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’. | ||
* '''to_min''' - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’. | * '''to_min''' - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’.<span id="pub-lmschedulereventschanges"></span> | ||
=== PUB <code>lm/scheduler/events/changes</code> === | === PUB <code>lm/scheduler/events/changes</code> === | ||
| Строка 968: | Строка 969: | ||
* '''end''' - Дата и время окончания события в ISO формате. | * '''end''' - Дата и время окончания события в ISO формате. | ||
* '''duration''' - Продолжительность события в секундах. | * '''duration''' - Продолжительность события в секундах. | ||
=== PUB <code>lm/scheduler/player/status</code> === | === PUB <code>lm/scheduler/player/status</code> === | ||
| Строка 1021: | Строка 1023: | ||
=== PUB <code>lm/scheduler/do/*/status</code> === | |||
== PUB <code>lm/scheduler/do/*/status</code> == | |||
Публикует текущее активное событие управления цифровым выходом DO1 если оно есть. | Публикует текущее активное событие управления цифровым выходом DO1 если оно есть. | ||
| Строка 1068: | Строка 1069: | ||
* '''action''' - Действие которое должно быть выполнено для данного события. | * '''action''' - Действие которое должно быть выполнено для данного события. | ||
* '''state''' - Состояние цифрового выхода. Может принимать значения 0 (выключен) или 1 (включен). | * '''state''' - Состояние цифрового выхода. Может принимать значения 0 (выключен) или 1 (включен). | ||
=== SUB <code>lm/settings/datetime/timezone</code> === | === SUB <code>lm/settings/datetime/timezone</code> === | ||
Получает текущую таймзону. | Получает текущую таймзону. | ||
Payload format | Payload format | ||
| Строка 1100: | Строка 1101: | ||
= 4 | == 4 Управление устройствами Art-Net == | ||
= | |||
Сервис осуществляет мониторинг и управления ArtNet и RDM устройствами. | Сервис осуществляет мониторинг и управления ArtNet и RDM устройствами. | ||
<span id="pub-lmartnet_devices_management_serviceerror"></span> | <span id="pub-lmartnet_devices_management_serviceerror"></span> | ||
=== PUB <code>lm/artnet_devices_management_service/error</code> === | |||
Публикует ошибки. | Публикует ошибки. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>{ | Payload format<pre>{ | ||
msg: str | msg: str | ||
data: Any | data: Any | ||
| Строка 1131: | Строка 1120: | ||
* '''data''' - contain related error data | * '''data''' - contain related error data | ||
=== PUB <code>lm/artnet_devices_management_service/artnet/devices/changes</code> === | |||
Публикует вновь созданные/измененные/удаленные ArtNet устройства. | Публикует вновь созданные/измененные/удаленные ArtNet устройства. | ||
{ | Payload format | ||
{ | |||
status: Literal['created', 'updated', 'deleted'] | status: Literal['created', 'updated', 'deleted'] | ||
device: { | device: { | ||
| Строка 1205: | Строка 1185: | ||
rdm_devices_count: int | rdm_devices_count: int | ||
} | } | ||
} | } | ||
=== PUB <code>lm/artnet_devices_management_service/rdm/devices/changes</code> === | |||
Публикует вновь созданные/измененные/удаленные RDM устройства. | Публикует вновь созданные/измененные/удаленные RDM устройства. | ||
{ | Payload format | ||
{ | |||
status: Literal['created', 'updated', 'deleted'] | status: Literal['created', 'updated', 'deleted'] | ||
device: { | device: { | ||
| Строка 1230: | Строка 1203: | ||
supported_params: dict[str, Any] | supported_params: dict[str, Any] | ||
} | } | ||
} | } | ||
* '''uid''' - Уникальный идентификатор устройства. | * '''uid''' - Уникальный идентификатор устройства. | ||
* '''art_net_device_mac''' - Mac адрес ArtNet устройства к которому подключено данное rdm устройство. | * '''art_net_device_mac''' - Mac адрес ArtNet устройства к которому подключено данное rdm устройство. | ||
| Строка 1237: | Строка 1210: | ||
* '''supported_params''' - Словарь параметров и их значений. | * '''supported_params''' - Словарь параметров и их значений. | ||
=== PUB <code>lm/artnet_devices_management_service/cmd_response</code> === | |||
Публикует результаты выполнения асинхронных команд. | Публикует результаты выполнения асинхронных команд. | ||
Используется для уведомления о завершении длительных операций, которые выполняются в фоновом режиме. Клиент получает <code>transaction_uid</code> при инициации команды и может отслеживать её статус через данный топик. | Используется для уведомления о завершении длительных операций, которые выполняются в фоновом режиме. Клиент получает <code>transaction_uid</code> при инициации команды и может отслеживать её статус через данный топик. | ||
{ | Payload format | ||
{ | |||
"transaction_uid": "string", | "transaction_uid": "string", | ||
"status": "string" | "status": "string" | ||
} | } | ||
* '''transaction_uid''' - Уникальный идентификатор транзакции, возвращаемый при инициации асинхронной команды | * '''transaction_uid''' - Уникальный идентификатор транзакции, возвращаемый при инициации асинхронной команды | ||
* '''status''' - Статус выполнения команды. Возможные значения: “done”, “error” | * '''status''' - Статус выполнения команды. Возможные значения: “done”, “error” | ||
{ | Example | ||
{ | |||
"transaction_uid": "550e8400-e29b-41d4-a716-446655440000", | "transaction_uid": "550e8400-e29b-41d4-a716-446655440000", | ||
"status": "done" | "status": "done" | ||
} | } | ||
== 5 Управление триггерами == | |||
<span id="pub-lmtrigger_servicetriggertrigger_list"></span> | <span id="pub-lmtrigger_servicetriggertrigger_list"></span> | ||
Публикует список всех триггеров. | === PUB <code>'lm/trigger_service/trigger/trigger_list'</code> === | ||
Топик всегда содержит актуальный список. | Публикует список всех триггеров. Топик всегда содержит актуальный список. | ||
[ | Payload format | ||
[ | |||
{ | { | ||
name: str | name: str | ||
| Строка 1303: | Строка 1250: | ||
params: dict[str, Any] | params: dict[str, Any] | ||
} | } | ||
] | ] | ||
* '''name''' - Имя триггера. | * '''name''' - Имя триггера. | ||
* '''tr_type''' - Тип триггера. | * '''tr_type''' - Тип триггера. | ||
* '''params''' - Словарь с параметрами триггера. | * '''params''' - Словарь с параметрами триггера. | ||
[ | Example | ||
[ | |||
{ | { | ||
"name": "TriggerFromMqtt", | "name": "TriggerFromMqtt", | ||
| Строка 1322: | Строка 1268: | ||
} | } | ||
} | } | ||
] | ] | ||
=== PUB <code>lm/trigger_service/action/action_list</code> === | |||
== PUB <code>lm/trigger_service/action/action_list</code> == | Публикует список всех action. <br />Топик всегда содержит актуальный список. | ||
Payload format | |||
[ | |||
[ | |||
{ | { | ||
name: str | name: str | ||
| Строка 1341: | Строка 1282: | ||
params: dict[str, Any] | params: dict[str, Any] | ||
} | } | ||
] | ] | ||
* '''name''' - Имя action. | * '''name''' - Имя action. | ||
* '''action_type''' - Тип action. | * '''action_type''' - Тип action. | ||
* '''params''' - Словарь с параметрами action. | * '''params''' - Словарь с параметрами action. | ||
[ | Example | ||
[ | |||
{ | { | ||
"name": "default", | "name": "default", | ||
| Строка 1359: | Строка 1299: | ||
} | } | ||
} | } | ||
] | ] | ||
=== PUB <code>lm/trigger_service/relation_list</code> === | |||
Публикует список всех связей между триггером и action. | Публикует список всех связей между триггером и action. | ||
[ | Payload format | ||
[ | |||
{ | { | ||
trigger: { | trigger: { | ||
| Строка 1384: | Строка 1320: | ||
} | } | ||
} | } | ||
] | ] | ||
* '''trigger''' - Словарь с триггером. | * '''trigger''' - Словарь с триггером. | ||
* '''action''' - Словарь с action. | * '''action''' - Словарь с action. | ||
[ | Example | ||
[ | |||
{ | { | ||
"trigger": { | "trigger": { | ||
| Строка 1413: | Строка 1348: | ||
} | } | ||
} | } | ||
] | ] | ||
=== SUB <code>lm/trigger_service/trigger/add</code> === | |||
Добавляет новый триггер. | Добавляет новый триггер. | ||
| Строка 1428: | Строка 1360: | ||
* Mqtt - Срабатывает при получении Mqtt сообщения удовлетворяющего заданным параметрам. | * Mqtt - Срабатывает при получении Mqtt сообщения удовлетворяющего заданным параметрам. | ||
{ | Payload format | ||
{ | |||
name: str | name: str | ||
tr_type: str | tr_type: str | ||
params: dict[str, Any] | params: dict[str, Any] | ||
} | } | ||
* '''name''' - Имя триггера. | * '''name''' - Имя триггера. | ||
* '''tr_type''' - Тип триггера. | * '''tr_type''' - Тип триггера. | ||
* '''params''' - Словарь с параметрами триггера. Параметры отличаются в зависимости от типа триггера. | * '''params''' - Словарь с параметрами триггера. Параметры отличаются в зависимости от типа триггера. | ||
{ | Example | ||
{ | |||
"name": "TriggerFromMqtt", | "name": "TriggerFromMqtt", | ||
"tr_type": "RawUDP", | "tr_type": "RawUDP", | ||
| Строка 1452: | Строка 1382: | ||
"data": "any" | "data": "any" | ||
} | } | ||
} | } | ||
'''Ожидаемые Параметры''' | |||
Параметры для <u>триггера с типом RawUDP</u> | |||
{ | { | ||
network_type: Literal['udp'] | network_type: Literal['udp'] | ||
| Строка 1469: | Строка 1399: | ||
* '''listen_port''' - Прослушиваемый порт. | * '''listen_port''' - Прослушиваемый порт. | ||
* '''data''' - Полезная нагрузка. Принимает строку полностью отражающую полезную нагрузку UDP пакета. | * '''data''' - Полезная нагрузка. Принимает строку полностью отражающую полезную нагрузку UDP пакета. | ||
Example RawUDP params | |||
{ | |||
{ | |||
"network_type": "udp", | "network_type": "udp", | ||
"listen_ip": "0.0.0.0", | "listen_ip": "0.0.0.0", | ||
"listen_port": "5555", | "listen_port": "5555", | ||
"data": "any" | "data": "any" | ||
} | } | ||
Параметры для <u>триггера с типом ArtNet</u> | |||
{ | { | ||
network_type: Literal['tcp', 'udp'] | network_type: Literal['tcp', 'udp'] | ||
| Строка 1497: | Строка 1425: | ||
* '''channel''' - Номер канала в ArtNet пакете. | * '''channel''' - Номер канала в ArtNet пакете. | ||
* '''min_level''' - Минимальное значение в канале для срабатывания триггера. | * '''min_level''' - Минимальное значение в канале для срабатывания триггера. | ||
* '''max_level''' - Максимальное значение в канале для срабатывания триггера. | * '''max_level''' - Максимальное значение в канале для срабатывания триггера.<span id="example-artnet-params"></span>Example ArtNet params | ||
{ | |||
<span id="example-artnet-params"></span> | |||
{ | |||
"network_type": "udp", | "network_type": "udp", | ||
"listen_ip": "0.0.0.0", | "listen_ip": "0.0.0.0", | ||
| Строка 1510: | Строка 1434: | ||
"min_level": 1, | "min_level": 1, | ||
"max_level": 124 | "max_level": 124 | ||
} | } | ||
Параметры для <u>триггера с типом Mqtt</u> | |||
{ | { | ||
topic: str | topic: str | ||
| Строка 1519: | Строка 1444: | ||
} | } | ||
* '''topic''' - Mqtt топик для отслеживания. | * '''topic''' - Mqtt топик для отслеживания. | ||
* '''payload''' - Полезная нагрузка mqtt сообщения в виде байт. Должна точно совпадать. | * '''payload''' - Полезная нагрузка mqtt сообщения в виде байт. Должна точно совпадать.<span id="example-mqtt-params"></span>Example Mqtt params | ||
{ | |||
<span id="example-mqtt-params"></span> | |||
{ | |||
"topic": "lm/di/port/1", | "topic": "lm/di/port/1", | ||
"payload": "\x01" | "payload": "\x01" | ||
} | } | ||
=== SUB <code>lm/trigger_service/trigger/delete</code> === | |||
Удаляет триггер. | Удаляет триггер. | ||
<span id="payload-format-4"></span> | <span id="payload-format-4"></span> | ||
=== Payload format === | === Payload format === | ||
{ | |||
{ | |||
name: str | name: str | ||
} | } | ||
* '''name''' - Имя триггера. | * '''name''' - Имя триггера.<span id="example-4"></span>Example | ||
{ | |||
<span id="example-4"></span> | |||
{ | |||
"name": "TriggerFromMqtt", | "name": "TriggerFromMqtt", | ||
} | } | ||
=== SUB <code>lm/trigger_service/action/add</code> === | |||
Добавляет новый action. | Добавляет новый action. | ||
| Строка 1563: | Строка 1473: | ||
* '''send_trigger_to_mqtt''' - Отправляет по mqtt сообщение в теле которого находится сработавший триггер. | * '''send_trigger_to_mqtt''' - Отправляет по mqtt сообщение в теле которого находится сработавший триггер. | ||
{ | Payload format | ||
{ | |||
name: str | name: str | ||
action_type: str | action_type: str | ||
params: dict[str, Any] | params: dict[str, Any] | ||
} | } | ||
* '''name''' - Имя action. | * '''name''' - Имя action. | ||
* '''action_type''' - Тип action. | * '''action_type''' - Тип action. | ||
* '''params''' - Словарь с параметрами action. Различается в зависимости от типа action. | * '''params''' - Словарь с параметрами action. Различается в зависимости от типа action.<span id="example-5"></span>Example | ||
{ | |||
<span id="example-5"></span> | |||
{ | |||
"name": "default", | "name": "default", | ||
"action_type": "send_trigger_to_mqtt", | "action_type": "send_trigger_to_mqtt", | ||
| Строка 1586: | Строка 1491: | ||
"retain": false | "retain": false | ||
} | } | ||
} | } | ||
'''Ожидаемые Параметры''' | |||
Параметры для actions с типом <code>send_trigger_to_mqtt</code> и <code>send_trigger_to_mqtt</code> совпадают. | Параметры для actions с типом <code>send_trigger_to_mqtt</code> и <code>send_trigger_to_mqtt</code> совпадают. | ||
{ | |||
{ | |||
topic: str | topic: str | ||
payload: str | payload: str | ||
retain: bool | retain: bool | ||
} | } | ||
* '''topic''' - Mqtt topic в который будет отправлено сообщение. | * '''topic''' - Mqtt topic в который будет отправлено сообщение. | ||
* '''payload''' - Mqtt payload. Полезная нагрузка сообщения. | * '''payload''' - Mqtt payload. Полезная нагрузка сообщения. | ||
| Строка 1603: | Строка 1509: | ||
Типа <code>send_trigger_to_mqtt</code> игнорирует поля '''payload''' и '''retain''' но в сообщении они должны присутствовать. | Типа <code>send_trigger_to_mqtt</code> игнорирует поля '''payload''' и '''retain''' но в сообщении они должны присутствовать. | ||
{ | Example params | ||
{ | |||
"topic": "lm/trigger_service/trigger/", | "topic": "lm/trigger_service/trigger/", | ||
"payload": "", | "payload": "", | ||
"retain": false | "retain": false | ||
} | } | ||
=== SUB <code>lm/trigger_service/action/delete</code> === | |||
Удаляет action. | Удаляет action. | ||
{ | Payload format | ||
{ | |||
name: str | name: str | ||
} | } | ||
* '''name''' - Имя action. | * '''name''' - Имя action. | ||
{ | Example | ||
{ | |||
"name": "default", | "name": "default", | ||
} | } | ||
=== SUB <code>lm/trigger_service/set_trigger_to_action_relation</code> === | |||
Создает связь между триггером и action. | Создает связь между триггером и action. | ||
Payload format | |||
trigger: { | trigger: { | ||
name: str | name: str | ||
| Строка 1657: | Строка 1553: | ||
* '''action''' - Словарь с action. | * '''action''' - Словарь с action. | ||
{ | Example | ||
{ | |||
"trigger": { | "trigger": { | ||
"name": "TriggerFromMqtt", | "name": "TriggerFromMqtt", | ||
| Строка 1680: | Строка 1575: | ||
} | } | ||
} | } | ||
} | } | ||
=== SUB <code>lm/trigger_service/delete_trigger_to_action_relation</code> === | |||
Удаляет связь между триггером и action. | Удаляет связь между триггером и action. | ||
Payload format | |||
trigger: { | trigger: { | ||
name: str | name: str | ||
| Строка 1705: | Строка 1596: | ||
* '''action''' - Словарь с action. | * '''action''' - Словарь с action. | ||
{ | Example | ||
{ | |||
"trigger": { | "trigger": { | ||
"name": "TriggerFromMqtt", | "name": "TriggerFromMqtt", | ||
| Строка 1728: | Строка 1618: | ||
} | } | ||
} | } | ||
} | } | ||
=== PUB <code>lm/trigger_service/error</code> === | |||
Публикует ошибки. | Публикует ошибки. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>{ | Payload format<pre>{ | ||
msg: str | msg: str | ||
data: Any | data: Any | ||
| Строка 1749: | Строка 1634: | ||
* '''data''' - contain related error data | * '''data''' - contain related error data | ||
=== SUB <code>lm/trigger_service/delete_trigger_with_related_actions</code> === | |||
Удаляет триггер и все связанные с ним действия. | Удаляет триггер и все связанные с ним действия. | ||
{ | Payload format | ||
{ | |||
name: str | name: str | ||
} | } | ||
* '''name''' - Имя триггера. | * '''name''' - Имя триггера.<span id="example-10"></span>Example | ||
{ | |||
<span id="example-10"></span> | |||
{ | |||
"name": "TriggerFromMqtt", | "name": "TriggerFromMqtt", | ||
} | } | ||
== 6. Настройки системы == | |||
Сервис осуществляет конфигурирование системных настроек ОС. | Сервис осуществляет конфигурирование системных настроек ОС. | ||
=== PUB <code>lm/system_configurator/error</code> === | |||
Публикует ошибки. | Публикует ошибки. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>{ | Payload format<pre>{ | ||
msg: str | msg: str | ||
data: Any | data: Any | ||
| Строка 1812: | Строка 1667: | ||
* '''data''' - contain related error data | * '''data''' - contain related error data | ||
< | === PUB <code>lm/system_settings/external_access/certificates</code> === | ||
Публикует список всех x509 сертификатов.<br />Топик всегда содержит актуальный список. | |||
Payload format | |||
[ | |||
[ | |||
{ | { | ||
name: str | name: str | ||
| Строка 1835: | Строка 1680: | ||
params: dict[str, Any] | params: dict[str, Any] | ||
} | } | ||
] | ] | ||
* '''name''' - Имя сертификата. | * '''name''' - Имя сертификата. | ||
* '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’ | * '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’ | ||
* '''params''' - Словарь с параметрами сертификата. Набор параметров отличается в зависимости от [[#certificate-params-format|типа]] сертификата. | * '''params''' - Словарь с параметрами сертификата. Набор параметров отличается в зависимости от [[#certificate-params-format|типа]] сертификата. | ||
[ | Example | ||
[ | |||
{ | { | ||
"cert_type": "certificate", | "cert_type": "certificate", | ||
| Строка 1857: | Строка 1701: | ||
"-----END CERTIFICATE-----\n"}] | "-----END CERTIFICATE-----\n"}] | ||
} | } | ||
] | ] | ||
=== PUB <code>lm/system_settings/external_access/web_access_settings</code> === | |||
== PUB <code>lm/system_settings/external_access/web_access_settings</code> == | Публикует список настроек web доступа.<br />Топик всегда содержит актуальный список. | ||
Payload format | |||
{ | |||
{ | |||
http_port: int | http_port: int | ||
https_port: int | https_port: int | ||
| Строка 1876: | Строка 1715: | ||
is_http_redirected: bool | is_http_redirected: bool | ||
cert_name: str | cert_name: str | ||
} | } | ||
* '''http_port''' - Http порт. По умолчанию 80. | * '''http_port''' - Http порт. По умолчанию 80. | ||
* '''https_port''' - Https порт. По умолчанию 443. | * '''https_port''' - Https порт. По умолчанию 443. | ||
| Строка 1883: | Строка 1722: | ||
* '''cert_name''' - Имя сертификата сервера. | * '''cert_name''' - Имя сертификата сервера. | ||
{ | Example | ||
{ | |||
"http_port": 80, | "http_port": 80, | ||
"https_port": 443, | "https_port": 443, | ||
| Строка 1892: | Строка 1730: | ||
"is_http_redirected": true, | "is_http_redirected": true, | ||
"cert_name": "" | "cert_name": "" | ||
} | } | ||
=== SUB <code>lm/system_settings/external_access/change_web_access_settings</code> === | |||
Меняет настройки web доступа. | Меняет настройки web доступа. | ||
{ | Payload format | ||
{ | |||
http_port: int | http_port: int | ||
https_port: int | https_port: int | ||
| Строка 1910: | Строка 1744: | ||
is_http_redirected: bool | is_http_redirected: bool | ||
cert_name: str | cert_name: str | ||
} | } | ||
* '''http_port''' - Http порт. По умолчанию 80. | * '''http_port''' - Http порт. По умолчанию 80. | ||
* '''https_port''' - Https порт. По умолчанию 443. | * '''https_port''' - Https порт. По умолчанию 443. | ||
| Строка 1917: | Строка 1751: | ||
* '''cert_name''' - Имя сертификата сервера. | * '''cert_name''' - Имя сертификата сервера. | ||
{ | Example | ||
{ | |||
"http_port": 80, | "http_port": 80, | ||
"https_port": 443, | "https_port": 443, | ||
| Строка 1926: | Строка 1759: | ||
"is_http_redirected": true, | "is_http_redirected": true, | ||
"cert_name": "" | "cert_name": "" | ||
} | } | ||
=== SUB <code>lm/system_settings/certificates/upload_certificate</code> === | |||
Загружает сертификат и его ключ для дальнейшего использования в настройках доступа. | Загружает сертификат и его ключ для дальнейшего использования в настройках доступа. | ||
{ | Payload format | ||
{ | |||
cert_name: str | cert_name: str | ||
certificate: bytes | certificate: bytes | ||
key: bytes | key: bytes | ||
intermediate: bytes | intermediate: bytes | ||
} | } | ||
* '''cert_name''' - Читаемое имя сертификата. | * '''cert_name''' - Читаемое имя сертификата. | ||
* '''certificate''' - x.509 сертификат в pem формате. | * '''certificate''' - x.509 сертификат в pem формате. | ||
| Строка 1949: | Строка 1778: | ||
* '''intermediate''' - (Опционально) промежуточный сертификат. | * '''intermediate''' - (Опционально) промежуточный сертификат. | ||
=== SUB <code>lm/system_settings/certificates/upload_certificate_corresponding_csr</code> === | |||
== SUB <code>lm/system_settings/certificates/upload_certificate_corresponding_csr</code> == | |||
Загружает сертификат относящийся к сформированному ранее csr. | Загружает сертификат относящийся к сформированному ранее csr. | ||
{ | Payload format | ||
{ | |||
cert_name: str | cert_name: str | ||
certificate: bytes | certificate: bytes | ||
} | } | ||
* '''cert_name''' - Имя csr сертификата. | * '''cert_name''' - Имя csr сертификата. | ||
* '''certificate''' - x.509 сертификат в pem формате. | * '''certificate''' - x.509 сертификат в pem формате. | ||
=== SUB <code>lm/system_settings/certificates/delete_certificate</code> === | |||
Удаляет сертификат и все связанные с ним файлы. | Удаляет сертификат и все связанные с ним файлы. | ||
{ | Payload format | ||
{ | |||
id: int | id: int | ||
name: str | name: str | ||
| Строка 1984: | Строка 1803: | ||
public_bytes: str | public_bytes: str | ||
params: dict[str, Any] | params: dict[str, Any] | ||
} | } | ||
* '''id''' - (Опционально) Идентификатор сертификата. | * '''id''' - (Опционально) Идентификатор сертификата. | ||
* '''name''' - Имя сертификата. | * '''name''' - Имя сертификата. | ||
* '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’ | * '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’ | ||
* '''public_bytes''' - Открытый ключ сертификата. | * '''public_bytes''' - Открытый ключ сертификата. | ||
* '''params''' - Словарь с параметрами сертификата. Набор параметров отличается в зависимости от [[#certificate-params-format|типа]] сертификата. | * '''params''' - Словарь с параметрами сертификата. Набор параметров отличается в зависимости от [[#certificate-params-format|типа]] сертификата.<span id="example-4"></span> | ||
{ | Example | ||
{ | |||
"cert_type": "certificate", | "cert_type": "certificate", | ||
"name": "cert_name", | "name": "cert_name", | ||
| Строка 2006: | Строка 1824: | ||
"public_bytes": "-----BEGIN CERTIFICATE-----\n" | "public_bytes": "-----BEGIN CERTIFICATE-----\n" | ||
"-----END CERTIFICATE-----\n"}] | "-----END CERTIFICATE-----\n"}] | ||
=== SUB <code>lm/system_settings/certificates/generate_csr</code> === | |||
Генерирует Certificate Signing Request. | Генерирует Certificate Signing Request. | ||
{ | Payload format | ||
{ | |||
cert_name: str | cert_name: str | ||
cert_type: str | cert_type: str | ||
| Строка 2024: | Строка 1837: | ||
subject: str | subject: str | ||
san: str | san: str | ||
} | } | ||
* '''cert_name''' - Имя сертификата. | * '''cert_name''' - Имя сертификата. | ||
* '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’ | * '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’ | ||
* '''key_size''' - Размер ключа в байтах. Принимает значения 2048 иои 4096. | * '''key_size''' - Размер ключа в байтах. Принимает значения 2048 иои 4096. | ||
* '''subject''' - Строка в формате rfc4514. | * '''subject''' - Строка в формате rfc4514. | ||
* '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | * '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>.<span id="example-5"></span> | ||
{ | Example | ||
{ | |||
"cert_name": "ss_cert23", | "cert_name": "ss_cert23", | ||
"cert_type": "certificate", | "cert_type": "certificate", | ||
| Строка 2040: | Строка 1852: | ||
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA", | "subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA", | ||
"san": "IP=192.168.0.3,DNS=domain.com" | "san": "IP=192.168.0.3,DNS=domain.com" | ||
} | } | ||
=== SUB <code>lm/system_settings/certificates/generate_self_sign_certificate</code> === | |||
Генерирует самоподписанный сертификат. | Генерирует самоподписанный сертификат. | ||
{ | Payload format | ||
{ | |||
cert_name: str | cert_name: str | ||
cert_type: str | cert_type: str | ||
| Строка 2058: | Строка 1866: | ||
subject: str | subject: str | ||
san: str | san: str | ||
} | } | ||
* '''cert_name''' - Имя сертификата. | * '''cert_name''' - Имя сертификата. | ||
* '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’. | * '''cert_type''' - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’. | ||
| Строка 2065: | Строка 1873: | ||
* '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | * '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | ||
{ | Example | ||
{ | |||
"cert_name": "ss_cert23", | "cert_name": "ss_cert23", | ||
"cert_type": "certificate", | "cert_type": "certificate", | ||
| Строка 2074: | Строка 1881: | ||
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA", | "subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA", | ||
"san": "IP=192.168.0.3,DNS=domain.com" | "san": "IP=192.168.0.3,DNS=domain.com" | ||
} | } | ||
< | === PUB <code>lm/system_settings/network/interfaces/wired/eth*/statistics</code> === | ||
== | <code>PUB lm/system_settings/network/interfaces/wired/eth0/statistics</code> | ||
<code>PUB lm/system_settings/network/interfaces/wired/eth1/statistics</code> | |||
Публикует информацию о проводном интерфейсе ethernet каждые 10 секунд. | Публикует информацию о проводном интерфейсе ethernet каждые 10 секунд. | ||
{ | Payload format | ||
{ | |||
status: str | status: str | ||
ip_assign_method: Literal['manual', 'dhcp'] | ip_assign_method: Literal['manual', 'dhcp'] | ||
| Строка 2095: | Строка 1902: | ||
dns_servers: list[str] | dns_servers: list[str] | ||
mac_address: str | mac_address: str | ||
} | } | ||
* '''status''' - Статус интерфейса. Может быть <code>up</code> или <code>down</code>. | * '''status''' - Статус интерфейса. Может быть <code>up</code> или <code>down</code>. | ||
* '''ip_assign_method''' - Способ назначения ip адреса. Может быть <code>manual</code> или <code>dhcp</code>. | * '''ip_assign_method''' - Способ назначения ip адреса. Может быть <code>manual</code> или <code>dhcp</code>. | ||
| Строка 2105: | Строка 1912: | ||
* '''mac_address''' - MAC адрес интерфейса. | * '''mac_address''' - MAC адрес интерфейса. | ||
{ | Example | ||
{ | |||
"status": "up", | "status": "up", | ||
"ip_assign_method": "manual", | "ip_assign_method": "manual", | ||
| Строка 2117: | Строка 1923: | ||
"dns_servers": ["8.8.8.8", "8.8.4.4"], | "dns_servers": ["8.8.8.8", "8.8.4.4"], | ||
"mac_address": "e4:5f:01:a8:e0:6c" | "mac_address": "e4:5f:01:a8:e0:6c" | ||
} | |||
=== SUB <code>lm/system_settings/network/interfaces/wired/eth*/set_ip_credential</code> === | |||
SUB <code>lm/system_settings/network/interfaces/wired/eth0/set_ip_credential</code><span id="sub-lmsystem_settingsnetworkinterfaceswiredeth1set_ip_credential"></span>SUB <code>lm/system_settings/network/interfaces/wired/eth1/set_ip_credential</code> | |||
< | |||
== SUB <code>lm/system_settings/network/interfaces/wired/eth0/set_ip_credential</code> | |||
<span id="sub-lmsystem_settingsnetworkinterfaceswiredeth1set_ip_credential"></span> | |||
Устанавливает ip адресацию и шлюз на интерфейс. | Устанавливает ip адресацию и шлюз на интерфейс. | ||
| Строка 2134: | Строка 1936: | ||
Статическая адресация: | Статическая адресация: | ||
{ | |||
{ | |||
ip_assign_method: Literal['manual'] | ip_assign_method: Literal['manual'] | ||
static_ip: str | static_ip: str | ||
static_netmask: str | static_netmask: str | ||
static_gateway: str | static_gateway: str | ||
} | } | ||
* '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>manual</code>. | * '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>manual</code>. | ||
* '''static_ip''' - IPv4 адрес интерфейса | * '''static_ip''' - IPv4 адрес интерфейса | ||
| Строка 2146: | Строка 1947: | ||
* '''static_gateway''' - Шлюз по умолчанию. | * '''static_gateway''' - Шлюз по умолчанию. | ||
{ | Example | ||
{ | |||
"ip_assign_method": "manual", | "ip_assign_method": "manual", | ||
"static_ip": "192.168.0.205", | "static_ip": "192.168.0.205", | ||
"static_netmask": "255.255.255.0", | "static_netmask": "255.255.255.0", | ||
"static_gateway": "192.168.0.1" | "static_gateway": "192.168.0.1" | ||
} | } | ||
{ | |||
Динамическая адресация | |||
{ | |||
ip_assign_method: Literal['dhcp'] | ip_assign_method: Literal['dhcp'] | ||
} | } | ||
* '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>dhcp</code>. | * '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>dhcp</code>. | ||
<span id="example-9"></span>Example | |||
<span id="example-9"></span> | { | ||
{ | |||
"ip_assign_method": "dhcp" | "ip_assign_method": "dhcp" | ||
} | } | ||
< | === SUB <code>lm/system_settings/network/interfaces/wired/eth*/set_dns_credential</code> === | ||
== SUB <code>lm/system_settings/network/interfaces/wired/eth0/set_dns_credential</code> | SUB <code>lm/system_settings/network/interfaces/wired/eth0/set_dns_credential</code> | ||
SUB <code>lm/system_settings/network/interfaces/wired/eth1/set_dns_credential</code> | |||
Назначение dns серверов на интерфейс. | Назначение dns серверов на интерфейс. | ||
| Строка 2181: | Строка 1977: | ||
Поддерживает статическое и динамическое (dhcp) назначение dns серверов. | Поддерживает статическое и динамическое (dhcp) назначение dns серверов. | ||
Payload format | |||
Статическое назначение: | Статическое назначение: | ||
{ | |||
{ | |||
dns_assign_method: Literal['manual'] | dns_assign_method: Literal['manual'] | ||
static_dns_servers: list[str] | static_dns_servers: list[str] | ||
} | } | ||
* '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>manual</code>. | * '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>manual</code>. | ||
* '''static_dns_servers''' - Список DNS серверов. | * '''static_dns_servers''' - Список DNS серверов.<span id="example-10"></span>Example | ||
{ | |||
<span id="example-10"></span> | |||
{ | |||
"dns_assign_method": "manual", | "dns_assign_method": "manual", | ||
"static_dns_servers": ["8.8.8.8", "8.8.4.4"] | "static_dns_servers": ["8.8.8.8", "8.8.4.4"] | ||
} | } | ||
Динамическое назначение: | Динамическое назначение: | ||
{ | |||
{ | |||
dns_assign_method: Literal['dhcp'] | dns_assign_method: Literal['dhcp'] | ||
} | } | ||
* '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>dhcp</code>. | * '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>dhcp</code>. | ||
{ | Example | ||
{ | |||
"dns_assign_method": "dhcp" | "dns_assign_method": "dhcp" | ||
} | } | ||
=== PUB <code>lm/system_settings/network/interfaces/modem/statistics</code> === | |||
Публикует информацию о модемном интерфейсе каждые 10 секунд. | Публикует информацию о модемном интерфейсе каждые 10 секунд. | ||
{ | Payload format | ||
{ | |||
ip_assign_method: Literal['manual', 'dhcp'] | ip_assign_method: Literal['manual', 'dhcp'] | ||
ip: str | ip: str | ||
| Строка 2243: | Строка 2028: | ||
access_technologies: list[str] | access_technologies: list[str] | ||
} | } | ||
} | } | ||
* '''status''' - Статус интерфейса. Может быть <code>up</code> или <code>down</code>. | * '''status''' - Статус интерфейса. Может быть <code>up</code> или <code>down</code>. | ||
* '''ip_assign_method''' - Способ назначения ip адреса. Может быть <code>manual</code> или <code>dhcp</code>. | * '''ip_assign_method''' - Способ назначения ip адреса. Может быть <code>manual</code> или <code>dhcp</code>. | ||
| Строка 2261: | Строка 2046: | ||
** '''access_technologies''': Список текущих режимов (LTE, UMTS и т.д.). | ** '''access_technologies''': Список текущих режимов (LTE, UMTS и т.д.). | ||
{ | Example | ||
{ | |||
"status": "up", | "status": "up", | ||
"ip_assign_method": "manual", | "ip_assign_method": "manual", | ||
| Строка 2284: | Строка 2068: | ||
"access_technologies": ["LTE"] | "access_technologies": ["LTE"] | ||
} | } | ||
} | } | ||
=== SUB <code>lm/system_settings/network/interfaces/modem/set_ip_credential</code> === | |||
Устанавливает ip адресацию и шлюз на интерфейс. | Устанавливает ip адресацию и шлюз на интерфейс. | ||
Поддерживает статическое назначение ip и назначение через dhcp. | Поддерживает статическое назначение ip и назначение через dhcp. | ||
Payload format | |||
{ | Статическая адресация | ||
{ | |||
ip_assign_method: Literal['manual'] | ip_assign_method: Literal['manual'] | ||
static_ip: str | static_ip: str | ||
static_netmask: str | static_netmask: str | ||
static_gateway: str | static_gateway: str | ||
} | } | ||
* '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>manual</code>. | * '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>manual</code>. | ||
* '''static_ip''' - IPv4 адрес интерфейса | * '''static_ip''' - IPv4 адрес интерфейса | ||
* '''static_netmask''' - Сетевая маска интерфейса. | * '''static_netmask''' - Сетевая маска интерфейса. | ||
* '''static_gateway''' - Шлюз по умолчанию. | * '''static_gateway''' - Шлюз по умолчанию.<span id="example-13"></span>Example | ||
{ | |||
<span id="example-13"></span> | |||
{ | |||
"ip_assign_method": "manual", | "ip_assign_method": "manual", | ||
"static_ip": "192.168.0.205", | "static_ip": "192.168.0.205", | ||
"static_netmask": "255.255.255.0", | "static_netmask": "255.255.255.0", | ||
"static_gateway": "192.168.0.1" | "static_gateway": "192.168.0.1" | ||
} | } | ||
{ | Динамическая адресация | ||
{ | |||
ip_assign_method: Literal['dhcp'] | ip_assign_method: Literal['dhcp'] | ||
} | } | ||
* '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>dhcp</code>. | * '''ip_assign_method''' - Способ назначения ip адреса. Должно быть <code>dhcp</code>. | ||
<span id="example-14"></span>Example | |||
<span id="example-14"></span> | { | ||
{ | |||
"ip_assign_method": "dhcp" | "ip_assign_method": "dhcp" | ||
} | } | ||
=== SUB <code>lm/system_settings/network/interfaces/modem/set_dns_credential</code> === | |||
Назначение dns серверов на интерфейс. | Назначение dns серверов на интерфейс. | ||
Поддерживает статическое и динамическое (dhcp) назначение dns серверов. | Поддерживает статическое и динамическое (dhcp) назначение dns серверов. | ||
Payload format | |||
Статическое назначение: | Статическое назначение: | ||
{ | |||
{ | |||
dns_assign_method: Literal['manual'] | dns_assign_method: Literal['manual'] | ||
static_dns_servers: list[str] | static_dns_servers: list[str] | ||
} | } | ||
* '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>manual</code>. | * '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>manual</code>. | ||
* '''static_dns_servers''' - Список DNS серверов. | * '''static_dns_servers''' - Список DNS серверов. | ||
{ | Example | ||
{ | |||
"dns_assign_method": "manual", | "dns_assign_method": "manual", | ||
"static_dns_servers": ["8.8.8.8", "8.8.4.4"] | "static_dns_servers": ["8.8.8.8", "8.8.4.4"] | ||
} | } | ||
{ | Динамическое назначение | ||
{ | |||
dns_assign_method: Literal['dhcp'] | dns_assign_method: Literal['dhcp'] | ||
} | } | ||
* '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>dhcp</code>. | * '''dns_assign_method''' - Способ назначения dns серверов. Должно быть <code>dhcp</code>.<span id="example-16"></span> | ||
{ | Example | ||
{ | |||
"dns_assign_method": "dhcp" | "dns_assign_method": "dhcp" | ||
} | } | ||
=== SUB <code>lm/system_settings/network/interfaces/modem/set_apn_credential</code> === | |||
Назначение настроек apn на интерфейс. | Назначение настроек apn на интерфейс. | ||
Поддерживается только статическое назначение. | Поддерживается только статическое назначение. | ||
Payload format | |||
Статическое назначение: | Статическое назначение: | ||
{ | |||
{ | |||
apn: str | apn: str | ||
username: str | username: str | ||
password: str | password: str | ||
} | } | ||
* '''apn''' - APN сервер. | * '''apn''' - APN сервер. | ||
* '''username''' - Имя пользователя если есть либо пустая строка. | * '''username''' - Имя пользователя если есть либо пустая строка. | ||
* '''password''' - Пароль если есть либо пустая строка. | * '''password''' - Пароль если есть либо пустая строка. | ||
{ | Example | ||
{ | |||
"apn": "internet.mts.ru", | "apn": "internet.mts.ru", | ||
"username": "mts", | "username": "mts", | ||
"password": "mts" | "password": "mts" | ||
} | } | ||
=== PUB <code>lm/system_settings/datetime/rtc_status</code> === | |||
Публикует статус rtc модуля | Публикует статус rtc модуля | ||
Payload format | |||
{ | { | ||
is_active: bool | is_active: bool | ||
| Строка 2423: | Строка 2184: | ||
* '''is_active''' - Активен ли rtc модуль. | * '''is_active''' - Активен ли rtc модуль. | ||
{ | Example | ||
{ | |||
"is_active": true, | "is_active": true, | ||
} | } | ||
=== SUB <code>lm/system_settings/datetime</code> === | |||
Принимает [[#base-format-for-command-payload|команды]] на изменение даты и времени конфигурации системы. | Принимает [[#base-format-for-command-payload|команды]] на изменение даты и времени конфигурации системы. | ||
Список принимаемых команд | |||
'''Set Date''' | |||
Description: > Set system date. | Description: > Set system date. | ||
| Строка 2454: | Строка 2208: | ||
data: dict > date: str - date in format ‘Y:M:D’ | data: dict > date: str - date in format ‘Y:M:D’ | ||
Example:<br /> | Example:<br /><code>{'command': 'set_date', 'data': {'date': '1970:01:01'}}</code> | ||
<code>{'command': 'set_date', 'data': {'date': '1970:01:01'}}</code> | |||
'''Set Time''' | |||
Description: > Set system time. | Description: > Set system time. | ||
| Строка 2471: | Строка 2221: | ||
data: dict > time: str - time in format ‘HH:mm:ss’ | data: dict > time: str - time in format ‘HH:mm:ss’ | ||
Example:<br /> | Example:<br /><code>{'command': 'set_time', 'data': {'time': '13:00:00'}}</code> | ||
<code>{'command': 'set_time', 'data': {'time': '13:00:00'}}</code> | |||
'''Set Datetime''' | |||
Description: > Set system date and time. | Description: > Set system date and time. | ||
| Строка 2488: | Строка 2234: | ||
data: dict > datetime: str - time in format ‘Y:M:D HH:mm:ss’ | data: dict > datetime: str - time in format ‘Y:M:D HH:mm:ss’ | ||
Example:<br /> | Example:<br /><code>{'command': 'set_datetime', 'data': {'datetime': '1970:01:01 13:00:00'}}</code> | ||
<code>{'command': 'set_datetime', 'data': {'datetime': '1970:01:01 13:00:00'}}</code> | |||
'''Change Ntp Status''' | |||
Description: > Enable or disable ntp synchronization. | Description: > Enable or disable ntp synchronization. | ||
| Строка 2505: | Строка 2247: | ||
data: dict > ntp: bool - is ntp sync enable | data: dict > ntp: bool - is ntp sync enable | ||
Example:<br /> | Example:<br /><code>{'command': 'change_ntp_status', 'data': {'ntp': True}}</code> | ||
<code>{'command': 'change_ntp_status', 'data': {'ntp': True}}</code> | |||
'''Set Ntp Servers''' | |||
Description: > Set ntp servers. > Generate ntp config, replace it then restart systemd-timesyncd.service > Accepts list of ip addresses or domain names | Description: > Set ntp servers. > Generate ntp config, replace it then restart systemd-timesyncd.service > Accepts list of ip addresses or domain names | ||
| Строка 2522: | Строка 2260: | ||
data: dict > ntp_servers: list[str] - list of servers ip addresses or dns names | data: dict > ntp_servers: list[str] - list of servers ip addresses or dns names | ||
Example:<br /> | Example:<br /><code>{'command': 'set_ntp_servers', 'data': {'ntp_servers': ['192.168.0.2', 'ntp1.stratum2.com']}}</code> | ||
<code>{'command': 'set_ntp_servers', 'data': {'ntp_servers': ['192.168.0.2', 'ntp1.stratum2.com']}}</code> | |||
'''Set timezone''' | |||
Description: > Set system timezone. | Description: > Set system timezone. | ||
| Строка 2538: | Строка 2273: | ||
data: dict > timezone: str - timezone name | data: dict > timezone: str - timezone name | ||
Example:<br /> | Example:<br /><code>{'command': 'set_timezone', 'data': {'timezone': 'Europe/London'}}</code> | ||
<code>{'command': 'set_timezone', 'data': {'timezone': 'Europe/London'}}</code> | |||
{ | Base format for command payload | ||
{ | |||
'command': str | 'command': str | ||
'data': dict[str, Any] | 'data': dict[str, Any] | ||
} | } | ||
* '''command''' - command name | * '''command''' - command name | ||
* '''data''' - any data for command | * '''data''' - any data for command | ||
| Строка 2556: | Строка 2289: | ||
<code>{'command': 'set_ip', 'data': {'ifname': 'eth0', 'ip': '192.168.0.1'}}</code> | <code>{'command': 'set_ip', 'data': {'ifname': 'eth0', 'ip': '192.168.0.1'}}</code> | ||
=== SUB <code>lm/system_settings/power_control</code> === | |||
== SUB <code>lm/system_settings/power_control</code> == | |||
Управляет питанием устройства | Управляет питанием устройства | ||
{ | Payload format | ||
{ | |||
command: str | command: str | ||
delay: int | delay: int | ||
} | } | ||
* '''command''' - Команда управления питанием. Может принимать значения “reboot” и “shutdown”. | * '''command''' - Команда управления питанием. Может принимать значения “reboot” и “shutdown”. | ||
* '''delay''' - Задержка срабатывания команды в минутах. | * '''delay''' - Задержка срабатывания команды в минутах. | ||
{ | Example | ||
{ | |||
"command": "reboot", | "command": "reboot", | ||
"delay": "0", | "delay": "0", | ||
} | } | ||
'''Certificate params format''' | |||
Парамеры сертификата отличаются в зависимости от его типа. В данный момент поддерживается два типа сертификата x509: <code>certificate</code> и <code>csr</code>. | Парамеры сертификата отличаются в зависимости от его типа. В данный момент поддерживается два типа сертификата x509: <code>certificate</code> и <code>csr</code>. | ||
{ | x509 certificate params format | ||
{ | |||
subject: str | subject: str | ||
san: str | san: str | ||
| Строка 2598: | Строка 2321: | ||
valid_from: float | valid_from: float | ||
valid_to: float | valid_to: float | ||
} | } | ||
* '''subject''' - Строка в формате rfc4514. | * '''subject''' - Строка в формате rfc4514. | ||
* '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | * '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | ||
| Строка 2606: | Строка 2328: | ||
* '''valid_to''' - Дата по которую сертификат действителен. Формат Posix timestamp. | * '''valid_to''' - Дата по которую сертификат действителен. Формат Posix timestamp. | ||
{ | Example | ||
{ | |||
"issuer": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA", | "issuer": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA", | ||
"san": "IP=192.168.0.3", | "san": "IP=192.168.0.3", | ||
| Строка 2615: | Строка 2336: | ||
"valid_from": "1664440221.0", | "valid_from": "1664440221.0", | ||
"valid_to": "1759048221.0" | "valid_to": "1759048221.0" | ||
} | } | ||
{ | |||
'''x509 csr params format''' | |||
{ | |||
subject: str | subject: str | ||
san: str | san: str | ||
} | } | ||
* '''subject''' - Строка в формате rfc4514. | * '''subject''' - Строка в формате rfc4514. | ||
* '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | * '''san''' - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами <code>IP=</code> или <code>DNS=</code>. | ||
Example | |||
{ “subject”: “OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA”, “san”: “IP=192.168.0.3”, } | |||
== 7. Управление Di Do интерфейсами плеера == | |||
=== PUB <code>lm/di/port/*</code> === | |||
<span id="pub-lmdiport0-player-v1-only"></span>PUB <code>lm/di/port/0</code> (player V1 only)<span id="pub-lmdiport1"></span>PUB <code>lm/di/port/1</code><span id="pub-lmdiport2-player-v2-only"></span>PUB <code>lm/di/port/2</code> (player V2 only)<span id="pub-lmdiport3-player-v2-only"></span>PUB <code>lm/di/port/3</code> (player V2 only) | |||
= | |||
< | |||
= | |||
<span id="pub-lmdiport0-player-v1-only"></span> | |||
<span id="pub-lmdiport1"></span> | |||
<span id="pub-lmdiport2-player-v2-only"></span> | |||
<span id="pub-lmdiport3-player-v2-only"></span> | |||
Публикует состояние di порта | Публикует состояние di порта | ||
| Строка 2663: | Строка 2362: | ||
* '''di_port_number''' - Номер di порта. | * '''di_port_number''' - Номер di порта. | ||
int | Payload format | ||
int | |||
Example | |||
1 | |||
1 | |||
* '''int''' - Статус Di порта. 1 - активен, 0 - неактивен. | * '''int''' - Статус Di порта. 1 - активен, 0 - неактивен. | ||
<span id="pub-lmdoport0-player-v1-only"></span> | <span id="pub-lmdoport0-player-v1-only"></span> | ||
< | === PUB <code>lm/do/port/*</code> === | ||
== PUB <code>lm/do/port/ | PUB <code>lm/do/port/0</code> (player V1 only) | ||
<span id="pub-lmdoport3-player-v2-only"></span> | PUB <code>lm/do/port/1</code><span id="pub-lmdoport2-player-v2-only"></span>PUB <code>lm/do/port/2</code> (player V2 only)<span id="pub-lmdoport3-player-v2-only"></span>PUB <code>lm/do/port/3</code> (player V2 only) | ||
Публикует состояние do порта | Публикует состояние do порта | ||
| Строка 2692: | Строка 2380: | ||
* '''do_port_number''' - Номер do порта. | * '''do_port_number''' - Номер do порта. | ||
int | Payload format | ||
int | |||
Example | |||
1 | |||
1 | |||
* '''int''' - Статус DO порта. 1 - активен, 0 - неактивен. | * '''int''' - Статус DO порта. 1 - активен, 0 - неактивен. | ||
=== SUB <code>lm/do/change_state</code> === | |||
== SUB <code>lm/do/change_state</code> == | |||
Принимает команды для изменения состояния DO порта. | Принимает команды для изменения состояния DO порта. | ||
{ | Payload command format | ||
{ | |||
"port": int, | "port": int, | ||
"state": int, | "state": int, | ||
} | } | ||
Example | |||
{ | { | ||
"port": 1, | "port": 1, | ||
| Строка 2730: | Строка 2407: | ||
== 8. Управление RS485 интерфейсами плеера == | |||
<span id="pub-lmserialport_controllererror"></span> | <span id="pub-lmserialport_controllererror"></span> | ||
=== PUB <code>lm/serialport_controller/error</code> === | |||
Публикует ошибки. | Публикует ошибки. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>{ | Payload format<pre>{ | ||
msg: str | msg: str | ||
data: Any | data: Any | ||
| Строка 2762: | Строка 2424: | ||
* '''data''' - contain related error data | * '''data''' - contain related error data | ||
< | === PUB <code>lm/serialport_controller/ports</code> === | ||
Публикует список rs485 портов. | |||
Payload format | |||
[ | |||
[ | |||
{ | { | ||
name: str | name: str | ||
mode: Literal['rs485', 'dmxOut'] | mode: Literal['rs485', 'dmxOut'] | ||
} | } | ||
] | ] | ||
* '''name''' - Имя порта. | * '''name''' - Имя порта. | ||
* '''mode''' - Предназначение порта. | * '''mode''' - Предназначение порта. | ||
[ | Example | ||
[ | |||
{ | { | ||
"name": "port1", | "name": "port1", | ||
| Строка 2807: | Строка 2458: | ||
"mode": "dmxOut", | "mode": "dmxOut", | ||
} | } | ||
] | ] | ||
=== SUB <code>lm/serialport_controller/ports/change_mode</code> === | |||
Меняет предназначение порта. | Меняет предназначение порта. | ||
{ | Payload format | ||
{ | |||
name: str | name: str | ||
mode: Literal['rs485', 'dmxOut'] | mode: Literal['rs485', 'dmxOut'] | ||
} | } | ||
* '''name''' - Имя порта. | * '''name''' - Имя порта. | ||
* '''mode''' - Предназначение порта. | * '''mode''' - Предназначение порта. | ||
{ | Example | ||
{ | |||
"name": "port1", | "name": "port1", | ||
"mode": "rs485", | "mode": "rs485", | ||
} | } | ||
== 9. Управление светодиодами плеера == | |||
<span id="pub-lmledsstate"></span> | |||
=== PUB <code>'lm/leds/state'</code> === | |||
Публикует состояние диодов rs485 портов | |||
Payload format | |||
{ | |||
{ | |||
Port1: { | Port1: { | ||
green: bool, | green: bool, | ||
| Строка 2875: | Строка 2509: | ||
red: bool, | red: bool, | ||
}, | }, | ||
} | } | ||
{ | Example | ||
{ | |||
"Port1": { | "Port1": { | ||
"green": true, | "green": true, | ||
| Строка 2896: | Строка 2530: | ||
"red": true, | "red": true, | ||
}, | }, | ||
} | } | ||
* '''green''' - Статус зеленого светодиода. | * '''green''' - Статус зеленого светодиода. | ||
* '''red''' - Статус красного светодиода. | * '''red''' - Статус красного светодиода. | ||
=== SUB <code>lm/leds/change_state</code> === | |||
== SUB <code>lm/leds/change_state</code> == | |||
Принимает команды для изменения состояния диодов у rs485 порта. | Принимает команды для изменения состояния диодов у rs485 порта. | ||
{ | Payload command format | ||
{ | |||
pub port: Literal['Port1', 'Port2', 'Port3', 'Port4'], | pub port: Literal['Port1', 'Port2', 'Port3', 'Port4'], | ||
green: bool, | green: bool, | ||
red: bool, | red: bool, | ||
} | } | ||
Example | |||
{ | { | ||
"port": "Port1", | "port": "Port1", | ||
| Строка 2928: | Строка 2556: | ||
* '''red''' - Статус красного светодиода. | * '''red''' - Статус красного светодиода. | ||
=== SUB <code>lm/leds/blink</code> === | |||
== SUB <code>lm/leds/blink</code> == | |||
Принимает команды для мигания всех светодиодов на всех rs485 портах. | Принимает команды для мигания всех светодиодов на всех rs485 портах. | ||
{ | Payload format | ||
{ | |||
times: int, | times: int, | ||
interval: int, | interval: int, | ||
} | } | ||
Example | |||
{ | |||
{ | |||
"times": 5, | "times": 5, | ||
"interval": 1000 | "interval": 1000 | ||
} | } | ||
* '''times''' - Количество миганий (от 1 до 255). | * '''times''' - Количество миганий (от 1 до 255). | ||
* '''interval''' - Интервал между миганиями в миллисекундах. | * '''interval''' - Интервал между миганиями в миллисекундах. | ||
== 10. Обновление программного обеспечения плеера == | |||
<span id="pub-lmupdate_serviceversionversion_list"></span> | |||
=== PUB <code>lm/update_service/version/version_list</code> === | |||
Публикует список версий всех модулей. Топик всегда содержит актуальный список. | |||
Payload format<pre>[ | |||
{ | |||
<pre>[ | |||
{ | |||
id: int | id: int | ||
version: str | version: str | ||
| Строка 2993: | Строка 2596: | ||
* '''description''' - (Optional) description | * '''description''' - (Optional) description | ||
[ | Example | ||
[ | |||
{ | { | ||
"id": 1, | "id": 1, | ||
| Строка 3004: | Строка 2606: | ||
"description": null | "description": null | ||
} | } | ||
] | ] | ||
=== PUB <code>lm/update_service/update/update_list'</code> === | |||
Публикует список обновлений. Топик всегда содержит актуальный список. | Публикует список обновлений. Топик всегда содержит актуальный список. | ||
<pre>[ | Payload format<pre>[ | ||
{ | { | ||
id: int | id: int | ||
| Строка 3037: | Строка 2634: | ||
* '''description''' - (Optional) description. | * '''description''' - (Optional) description. | ||
[ | Example | ||
[ | |||
{ | { | ||
"id": 1, | "id": 1, | ||
| Строка 3051: | Строка 2647: | ||
"description": "A error occurred during installation update. Installation filed. None" | "description": "A error occurred during installation update. Installation filed. None" | ||
} | } | ||
] | ] | ||
=== SUB <code>lm/update_service/update/add_update</code> === | |||
Добавляет обновление в базу. | Добавляет обновление в базу. | ||
<pre>{ | Payload format<pre>{ | ||
file: str | file: str | ||
}</pre> | }</pre> | ||
* '''file: str''' - путь до файла обновления | * '''file: str''' - путь до файла обновления | ||
<span id="example-2"></span>Example | |||
{"file": "/home/lightmaster/projects/wess-group/lightmaster/updater/lmp_2022.update"} | |||
=== SUB <code>lm/update_service/update/check_update</code> === | |||
== SUB <code>lm/update_service/update/check_update</code> == | |||
Проверяет совместимость обновления. | Проверяет совместимость обновления. | ||
<pre>{ | Payload format<pre>{ | ||
id: int | id: int | ||
}</pre> | }</pre> | ||
* '''id''' - id обновления | * '''id''' - id обновления | ||
Example | |||
{'id': 5} | |||
<span id="sub-lmupdate_serviceupdateinitial_update"></span> | <span id="sub-lmupdate_serviceupdateinitial_update"></span> | ||
=== SUB <code>lm/update_service/update/initial_update</code> === | |||
Совмещает добавление обновления в базу и его проверку. | Совмещает добавление обновления в базу и его проверку. | ||
<pre>{ | Payload format<pre>{ | ||
file: str | file: str | ||
}</pre> | }</pre> | ||
* '''file: str''' - путь до файла обновления | * '''file: str''' - путь до файла обновления | ||
Example | |||
{"file": "/home/lightmaster/projects/wess-group/lightmaster/updater/lmp_2022.update"} | |||
=== SUB <code>lm/update_service/update/install_update</code> === | |||
Устанавливает обновление | Устанавливает обновление | ||
<pre>{ | Payload format<pre>{ | ||
id: int | id: int | ||
}</pre> | }</pre> | ||
* '''id''' - id обновления | * '''id''' - id обновления | ||
Example | |||
{'id': 5} | |||
=== SUB <code>lm/update_service/update/restore_update</code> === | |||
Откатывает обновление на предыдущую версию. | Откатывает обновление на предыдущую версию. | ||
<pre>{ | Payload format<pre>{ | ||
id: int | id: int | ||
}</pre> | }</pre> | ||
* '''id''' - id обновления | * '''id''' - id обновления | ||
Example | |||
{'id': 5} | |||
=== SUB <code>lm/update_service/update/delete_update</code> === | |||
Удаляет обновление и все связанные с ним файлы. | Удаляет обновление и все связанные с ним файлы. | ||
<pre>{ | Payload format<pre>{ | ||
id: int | id: int | ||
}</pre> | }</pre> | ||
* '''id''' - id обновления | * '''id''' - id обновления | ||
Example | |||
{'id': 5} | |||
=== SUB <code>lm/update_service/version/get_versions_list</code> === | |||
== SUB <code>lm/update_service/version/get_versions_list</code> == | Запрос на публикацию списка версий всех модулей.<br /> | ||
Публикация происходит в топик <code>lm/update_service/version/get_versions_list/response</code> | Публикация происходит в топик <code>lm/update_service/version/get_versions_list/response</code> | ||
| Строка 3196: | Строка 2745: | ||
'''Response topic''' если установлен то ответ публикуется в указанный топик вместо стандартного. | '''Response topic''' если установлен то ответ публикуется в указанный топик вместо стандартного. | ||
=== PUB <code>lm/update_service/version/get_versions_list/response</code> === | |||
Публикует ответ на запрос из топика <code>lm/update_service/version/get_versions_list</code>. | Публикует ответ на запрос из топика <code>lm/update_service/version/get_versions_list</code>. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>[ | Payload format<pre>[ | ||
{ | { | ||
id: int | id: int | ||
| Строка 3229: | Строка 2767: | ||
* '''description''' - (Optional) description | * '''description''' - (Optional) description | ||
[ | Example | ||
[ | |||
{ | { | ||
"id": 1, | "id": 1, | ||
| Строка 3240: | Строка 2777: | ||
"description": null | "description": null | ||
} | } | ||
] | ] | ||
=== SUB <code>lm/update_service/version/get_module_version</code> === | |||
Публикует версию конкретного модуля. | Публикует версию конкретного модуля. | ||
| Строка 3260: | Строка 2794: | ||
'''Response topic''' если установлен то ответ публикуется в указанный топик вместо стандартного. | '''Response topic''' если установлен то ответ публикуется в указанный топик вместо стандартного. | ||
<pre>{ | Payload format<pre>{ | ||
module: str | module: str | ||
}</pre> | }</pre> | ||
* '''module''' - название модуля | * '''module''' - название модуля | ||
Example | |||
{'module': 'update_service'} | |||
=== PUB <code>lm/update_service/version/get_module_version/response</code> === | |||
Публикует ответ на запрос из топика <code>lm/update_service/version/get_module_version</code>. | Публикует ответ на запрос из топика <code>lm/update_service/version/get_module_version</code>. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>{ | Payload format<pre>{ | ||
id: int | id: int | ||
version: str | version: str | ||
| Строка 3299: | Строка 2824: | ||
* '''description''' - (Optional) description | * '''description''' - (Optional) description | ||
{ | Example | ||
{ | |||
"id": 1, | "id": 1, | ||
"version": "20", | "version": "20", | ||
| Строка 3308: | Строка 2832: | ||
"module": "frontend", | "module": "frontend", | ||
"description": null | "description": null | ||
} | } | ||
=== SUB <code>lm/update_service/update/get_updates_list</code> === | |||
Запрос на публикацию списка всех обновлений добавленных в базу. | Запрос на публикацию списка всех обновлений добавленных в базу. | ||
| Строка 3328: | Строка 2849: | ||
'''Response topic''' если установлен то ответ публикуется в указанный топик вместо стандартного. | '''Response topic''' если установлен то ответ публикуется в указанный топик вместо стандартного. | ||
=== PUB <code>lm/update_service/update/get_updates_list/response</code> === | |||
Публикует ответ на запрос из топика <code>lm/update_service/update/get_updates_list</code>. | Публикует ответ на запрос из топика <code>lm/update_service/update/get_updates_list</code>. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>[ | Payload format<pre>[ | ||
{ | { | ||
id: int | id: int | ||
| Строка 3367: | Строка 2877: | ||
* '''description''' - (Optional) description. | * '''description''' - (Optional) description. | ||
[ | Example | ||
[ | |||
{ | { | ||
"id": 1, | "id": 1, | ||
| Строка 3381: | Строка 2890: | ||
"description": "A error occurred during installation update. Installation filed. None" | "description": "A error occurred during installation update. Installation filed. None" | ||
} | } | ||
] | ] | ||
=== PUB <code>lm/update_service/error</code> === | |||
Публикует ошибки. | Публикует ошибки. | ||
Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | Выставляет заголовок '''Correlation data''' если он был установлен в запросе. | ||
<pre>{ | Payload format<pre>{ | ||
msg: str | msg: str | ||
data: Any | data: Any | ||
| Строка 3401: | Строка 2905: | ||
* '''msg''' - contain error message | * '''msg''' - contain error message | ||
* '''data''' - contain related error data | * '''data''' - contain related error data | ||
Текущая версия от 04:08, 9 июня 2025
1. Управление проигрыванием и получение статистики
Описывает MQTT API сервиса.
Сервис осуществляет проигрывание анимаций.
SUB lm/player
Принимает команды управления проигрыванием.
Play
Payload command format
{
"cmd": 'play',
"what_playing": Union['playlist', 'cue'],
"entity": Union[int, str],
"count": Optional[int],
"priority": int,
}
Example
{
"cmd": "play",
"what_playing": "playlist",
"entity": 19,
"count": Null,
"priority": 4,
}
- cmd - Название команды.
- what_playing - Тип сущности для воспроизведения. Принимает два значения “playlist” и “cue”.
- entity - ID или наименование проигрываемой сущности.
- count - Опциональный параметр. Количество повторений проигрывания. Если не задан или значение равно Null то проигрывание продолжится до получения следующей команды с равным или боле высоким приоритетом.
- priority - Приоритет команды. Значение от 1 до 100. Чем больше значение - тем выше приоритет. Команда с более низким приоритетом не может отменять команду с более высоким приоритетом. Текущие сопоставления приоритетов: Расписание - 60, Триггер - 50, Ручной запуск - 40.
Stop
Payload stop command format
{
"cmd": 'stop',
"priority": int,
}
Example
{
"cmd": "stop",
"priority": 4,
}
- cmd - Название команды.
- priority - Приоритет команды. Значение от 1 до 100. Чем больше значение - тем выше приоритет. Команда с более низким приоритетом не может отменять команду с более высоким приоритетом. Текущие сопоставления приоритетов: Расписание - 60, Триггер - 50, Ручной запуск - 40.
PUB lm/statistic/playing_progress_info
Публикует статистику проигрывания.
Зная текущее значение fps можно перевести значения во время.
Например при fps равном 40 frame_count равном 1000 и frame_number равном 120 мы получим:
1 / 40 * 1000 = 25 - Общая продолжительность анимации в секундах. 1 / 40 * 120 = 3 - На текущий момент анимация проиграла 3 секунды.
Payload format
Представляет из себя строку в формате "{frame_count}, {frame_number}"
Example
“1000, 35”
- frame_count - Общее количество фреймов.
- frame_number - Сколько фреймов проиграно на текущий момент.
PUB lm/statistic/playing_ent_info
Публикует Наименования того, что сейчас проигрывается.
Payload format
{
"playlist": Optional[str],
'scene': Optional[int],
'cue': Optional[str],
}
Example
{
"playlist": "NewYearPlaylist",
"scene": 1,
"cue": "BLUE.cue",
}
- playlist - Наименование проигрываемого плейлиста. Может быть None.
- scene - Порядковый номер в плейлисте. Может быть None.
- cue - Наименование проигрываемой анимации. Может быть None.
PUB lm/statistic/current_playing_priority
Публикует текущий приоритет проигрывания.
Payload format
int
Example
60
2. Управление настройками проигрывания и сущностей
PUB lm/settings/location/coordinates
Публикует координаты плеера.
Payload command format
{
"latitude": float,
"longitude": float,
}
Example
{
"latitude": "56.821019190097616",
"longitude": "60.59559633825789"
}
PUB lm/settings/location/address
Публикует адрес устройства.
Payload format
{
"address": str
}
Example
{
"address": "Yekaterinburg"
}
PUB lm/settings/datetime/timezone
Публикует часовой пояс плеера.
Payload format
{
"timezone": str
}
Example
{
"timezone": "Asia/Yekaterinburg"
}
- timezone - Часовой пояс плеера.
PUB lm/settings/player/fps
Публикует настройки fps.
Payload format
{
"fps": int,
}
Example
{
"fps": 40
}
PUB lm/settings/player/artsync
Публикует статус отправки artsync.
Payload format
{
"artsync": bool,
}
Example
{"artsync": false}
PUB lm/settings/player/blackout_between_playing_command
Публикует настройку необходимости blackout между событиями проигрывания.
Payload format
{
"blackout_between_playing_command": bool,
}
Example
{
"blackout_between_playing_command": false
}
PUB lm/settings/player/playing_priority
Публикует приоритеты проигрывания плеера.
Payload command format
{
"buttons": int,
"triggers": int,
"scheduler": int,
}
Example
{
"buttons": 4,
"triggers": 5,
"scheduler": 6,
}
Приоритет представляет из себя целое число от 1 до 100. Чем выше число тем меньше приоритет.
PUB lm/settings/player/universes
Публикует настройки вселенных плеера.
Payload format
[
{
"number": int,
"device": {
"name": str,
"description": str,
"network_mode": str,
"ip": str,
"port": int,
} | None
}
]
Example
[
{
"number": 1,
"device": {
"name": "artnet_device_1",
"description": "Main ArtNet converter",
"network_mode": "unicast",
"ip": "192.168.1.100",
"port": 6454
}
},
{
"number": 2,
"device": null
}
]
- number - Номер вселенной (0-32768).
- device - Настройки ArtNet устройства для данной вселенной. Может быть null если устройство не назначено.
- name - Уникальное имя ArtNet устройства (до 32 символов).
- description - Описание устройства (до 255 символов, может быть пустым).
- network_mode - Режим работы сети (“unicast” или “broadcast”).
- ip - IP адрес устройства.
- port - Порт устройства (по умолчанию 6454, диапазон 1-65534).
PUB lm/cues
Публикует список cue файлов загруженных на плеер
Payload format
[
{
"id": int,
"filename": str,
"uni_count": int,
"frame_count": int,
"created": str,
}
]
Example
[
{
"id": 47,
"filename": "00-5.cue",
"uni_count": 1,
"frame_count": 220,
"created": "2024-03-07T08:30:16.926447Z"
}
]
- id - Уникальный идентификатор анимации.
- filename - Имя файла.
- uni_count - Количество вселенных в файле.
- frame_count - Количество фреймов в файле.
- created - Время загрузки анимации в ISO формате.
PUB lm/playlists
Публикует список cue файлов загруженных на плеер
Payload format
[
{
"id": int,
"name": str,
"scenes": [
{
"id": int,
"order": int,
"cue": {
"created": str,
"filename": str,
"frame_count": int,
"id": int,
"uni_count": int
},
"fade_in": float,
"fade_out": float,
"transition_time": float,
"repeat_value": int,
}
]
}
]
Example
[
{
"id": 19,
"name": "Test",
"scenes": [
{
"id": 71,
"order": 0,
"cue": {
"created": "2024-03-07T08:27:23.567083Z",
"filename": "5-8.cue",
"frame_count": 220,
"id": 51,
"uni_count": 1
},
"fade_in": 1.0,
"fade_out": 0.0,
"transition_time": 2.0,
"repeat_value": 3600
}
]
}
]
- id - Уникальный идентификатор плейлиста.
- name - Название плейлиста.
- scenes - Сцены.В сценах содержится вся информация об эффектах примененных к cue и порядковый номер воспроизведения внутри плейлиста.
- id - Уникальный идентификатор сцены.
- order - Порядковый номер воспроизведения внутри плейлиста.
- cue - Параметры анимации. Подробнее
- fade_in - Время fade_in.
- fade_out - Время fade_out.
- transition_time - Время перехода.
- repeat_value - Количество повторений.
3. Управление расписанием
PUB lm/scheduler/error
Публикует ошибки.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
msg: str
data: Any
}
- msg - contain error message
- data - contain related error data
PUB lm/scheduler/events
Публикует список всех событий календаря.
Payload format
[
{
"id": str,
"title": str,
"priority": int,
"actions": {
"player": Optional[{
"cmd": Literal['play'],
"entity_type": Union['playlist', 'cue'],
"entity_id": int,
}],
"do1": Optional[{
"state": Literal[0, 1],
}],
"do2": Optional[{
"state": Literal[0, 1],
}],
"do3": Optional[{
"state": Literal[0, 1],
}],
},
"rrule": {
"freq": Union['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY'],
"interval": int,
"start_date": str,
"start_time_type": Union['sunset', 'sunrise', 'time'],
"start_time": Optional[str],
"start_time_offset": Optional[int],
"until_date": Optional[str],
"until_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"until_time": Optional[str],
"until_time_offset": Optional[int],
"count": Optional[int],
"from_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"from_time": Optional[str],
"from_time_offset": Optional[int],
"to_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"to_time": Optional[str],
"to_time_offset": Optional[int],
"bymonth": Optional[
list[
Union[
'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December',
],
],
],
"bymonthday": Optional[list[int]],
"byweekday": Optional[list[Union['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']]],
"from_min": Optional[int],
"to_min": Optional[int],
}
}
]
Example
[
{
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
"title": "holiday",
"priority": 1,
"actions": {
"player": {
"cmd": "play",
"entity_type": "playlist",
"entity_id": 19
},
"do1": {
"state": 1
},
"do2": null,
"do3": null
},
"rrule": {
"freq": "DAILY",
"interval": 1,
"start_date": "2024-01-20",
"start_time_type": "time",
"start_time": "00:00",
"start_time_offset": null,
"count": 1,
"until_date": null,
"until_time_type": null,
"until_time": null,
"until_time_offset": null,
"from_time_type": "sunset",
"from_time": null,
"from_time_offset": 0,
"to_time_type": "sunset",
"to_time": null,
"to_time_offset": 0,
"bymonth": null,
"bymonthday": null,
"byweekday": null,
"from_min": null,
"to_min": null
}
}
]
- id - Уникальный идентификатор события (UUID).
- title - Название события.
- priority - Приоритет события. Чем выше значение тем выше приоритет.
- actions - Действия которые должны быть выполнены при наступлении события.
- player - Действие для плеера. Содержит команду воспроизведения.
- cmd - Команда для плеера. Всегда равна ‘play’.
- entity_type - Тип сущности для воспроизведения. Может принимать значения ‘playlist’, ‘cue’.
- entity_id - Уникальный идентификатор сущности для воспроизведения.
- do1 - Действие для цифрового выхода DO1.
- do2 - Действие для цифрового выхода DO2.
- do3 - Действие для цифрового выхода DO3.
- state - Состояние цифрового выхода. Может принимать значения 0 (выключен) или 1 (включен).
- rrule - Правила повторения события (recurrence rule).
- freq - Частота повторений события. Может принимать значения: ‘YEARLY’, ‘MONTHLY’, ‘WEEKLY’, ‘DAILY’, ‘HOURLY’.
- interval - Периодичность повторения события.
- start_date - Дата старта события. Формат YYYY-mm-dd.
- start_time_type - Тип времени старта события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’.
- start_time - Время старта события. Формат: %H:%M. Заполнено если start_time_type равен ‘time’.
- start_time_offset - Сдвиг времени старта события. Может принимать отрицательные значения. Заполнено если start_time_type равен ‘sunset’ или ‘sunrise’.
- count - Количество повторений события. Не может быть заполнен одновременно с полем until_date. Если оба поля не заполнены то событие не никогда не завершается.
- until_date - Дата завершения события. Формат YYYY-mm-dd. Не может быть заполнен одновременно с полем count. Если оба поля не заполнены то событие не никогда не завершается.
- until_time_type - Тип времени завершения события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если заполнено поле until_date.
- until_time - Время завершения события. Формат: %H:%M. Заполнено если заполнено поле until_date и until_time_type равен ‘time’.
- until_time_offset - Сдвиг времени завершения события. Заполнено если заполнено поле until_date и until_time_type равен ‘sunset’ или ‘sunrise’.
- from_time_type - Тип времени начала события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если поле freq не равно ‘HOURLY’.
- from_time - Время начала события. Формат: %H:%M. Заполнено если поле freq не равно ‘HOURLY’ и from_time_type равен ‘time’.
- from_time_offset - Сдвиг времени начала события. Может принимать отрицательные значения. Заполнено если поле freq не равно ‘HOURLY’ и from_time_type равен ‘sunset’ или ‘sunrise’.
- to_time_type - Тип времени окончания события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если поле freq не равно ‘HOURLY’.
- to_time - Время окончания события. Формат: %H:%M. Заполнено если заполнено поле freq не равно ‘HOURLY’ и to_time_type равен ‘time’.
- to_time_offset - Сдвиг времени завершения события. Заполнено если заполнено поле freq не равно ‘HOURLY’ и to_time_type равен ‘sunset’ или ‘sunrise’.
- bymonth - Месяцы в которые событие активно. Заполнено если поле freq равно ‘YEARLY’.
- bymonthday - Дни месяца в которые событие активно. Заполнено если поле freq равно ‘MONTHLY’.
- byweekday - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’.
- from_min - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’.
- to_min - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’.
SUB lm/scheduler/events/add
Добавляет новое событие.
Payload format
{
"title": str,
"priority": int,
"actions": {
"player": Optional[{
"cmd": Literal['play'],
"entity_type": Union['playlist', 'cue'],
"entity_id": int,
}],
"do1": Optional[{
"state": Literal[0, 1],
}],
"do2": Optional[{
"state": Literal[0, 1],
}],
"do3": Optional[{
"state": Literal[0, 1],
}],
},
"rrule": {
"freq": Union['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY'],
"interval": int,
"start_date": str,
"start_time_type": Union['sunset', 'sunrise', 'time'],
"start_time": Optional[str],
"start_time_offset": Optional[int],
"until_date": Optional[str],
"until_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"until_time": Optional[str],
"until_time_offset": Optional[int],
"count": Optional[int],
"from_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"from_time": Optional[str],
"from_time_offset": Optional[int],
"to_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"to_time": Optional[str],
"to_time_offset": Optional[int],
"bymonth": Optional[
list[
Union[
'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December',
],
],
],
"bymonthday": Optional[list[int]],
"byweekday": Optional[list[Union['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']]],
"from_min": Optional[int],
"to_min": Optional[int],
}
}
Example
{
"title": "holiday",
"priority": 1,
"actions": {
"player": {
"cmd": "play",
"entity_type": "playlist",
"entity_id": 19
},
"do1": {
"state": 1
},
"do2": null,
"do3": null
},
"rrule": {
"freq": "DAILY",
"interval": 1,
"start_date": "2024-01-20",
"start_time_type": "time",
"start_time": "00:00",
"start_time_offset": null,
"count": 1,
"until_date": null,
"until_time_type": null,
"until_time": null,
"until_time_offset": null,
"from_time_type": "sunset",
"from_time": null,
"from_time_offset": 0,
"to_time_type": "sunset",
"to_time": null,
"to_time_offset": 0,
"bymonth": null,
"bymonthday": null,
"byweekday": null,
"from_min": null,
"to_min": null
}
}
- title - Название события.
- priority - Приоритет события. Чем выше значение тем выше приоритет.
- actions - Действия которые должны быть выполнены при наступлении события.
- player - Действие для плеера. Содержит команду воспроизведения.
- cmd - Команда для плеера. Всегда равна ‘play’.
- entity_type - Тип сущности для воспроизведения. Может принимать значения ‘playlist’, ‘cue’.
- entity_id - Уникальный идентификатор сущности для воспроизведения.
- do1 - Действие для цифрового выхода DO1.
- do2 - Действие для цифрового выхода DO2.
- do3 - Действие для цифрового выхода DO3.
- state - Состояние цифрового выхода. Может принимать значения 0 (выключен) или 1 (включен).
- rrule - Правила повторения события (recurrence rule).
- freq - Частота повторений события. Может принимать значения: ‘YEARLY’, ‘MONTHLY’, ‘WEEKLY’, ‘DAILY’, ‘HOURLY’.
- interval - Периодичность повторения события.
- start_date - Дата старта события. Формат YYYY-mm-dd.
- start_time_type - Тип времени старта события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’.
- start_time - Время старта события. Формат: %H:%M. Заполнено если start_time_type равен ‘time’.
- start_time_offset - Сдвиг времени старта события. Может принимать отрицательные значения. Заполнено если start_time_type равен ‘sunset’ или ‘sunrise’.
- count - Количество повторений события. Не может быть заполнен одновременно с полем until_date. Если оба поля не заполнены то событие не никогда не завершается.
- until_date - Дата завершения события. Формат YYYY-mm-dd. Не может быть заполнен одновременно с полем count. Если оба поля не заполнены то событие не никогда не завершается.
- until_time_type - Тип времени завершения события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если заполнено поле until_date.
- until_time - Время завершения события. Формат: %H:%M. Заполнено если заполнено поле until_date и until_time_type равен ‘time’.
- until_time_offset - Сдвиг времени завершения события. Заполнено если заполнено поле until_date и until_time_type равен ‘sunset’ или ‘sunrise’.
- from_time_type - Тип времени начала события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если поле freq не равно ‘HOURLY’.
- from_time - Время начала события. Формат: %H:%M. Заполнено если поле freq не равно ‘HOURLY’ и from_time_type равен ‘time’.
- from_time_offset - Сдвиг времени начала события. Может принимать отрицательные значения. Заполнено если поле freq не равно ‘HOURLY’ и from_time_type равен ‘sunset’ или ‘sunrise’.
- to_time_type - Тип времени окончания события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если поле freq не равно ‘HOURLY’.
- to_time - Время окончания события. Формат: %H:%M. Заполнено если заполнено поле freq не равно ‘HOURLY’ и to_time_type равен ‘time’.
- to_time_offset - Сдвиг времени завершения события. Заполнено если заполнено поле freq не равно ‘HOURLY’ и to_time_type равен ‘sunset’ или ‘sunrise’.
- bymonth - Месяцы в которые событие активно. Заполнено если поле freq равно ‘YEARLY’.
- bymonthday - Дни месяца в которые событие активно. Заполнено если поле freq равно ‘MONTHLY’.
- byweekday - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’.
- from_min - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’.
- to_min - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’.
SUB lm/scheduler/events/delete
Удаляет событие.
Payload format
{
id: str
}
Example
{
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
}
- id - Уникальный идентификатор события. ___
SUB lm/scheduler/events/update
Обновляет параметры события.
Payload format
{
"id": str,
"title": str,
"priority": int,
"actions": {
"player": Optional[{
"cmd": Literal['play'],
"entity_type": Union['playlist', 'cue'],
"entity_id": int,
}],
"do1": Optional[{
"state": Literal[0, 1],
}],
"do2": Optional[{
"state": Literal[0, 1],
}],
"do3": Optional[{
"state": Literal[0, 1],
}],
},
"rrule": {
"freq": Union['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY'],
"interval": int,
"start_date": str,
"start_time_type": Union['sunset', 'sunrise', 'time'],
"start_time": Optional[str],
"start_time_offset": Optional[int],
"until_date": Optional[str],
"until_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"until_time": Optional[str],
"until_time_offset": Optional[int],
"count": Optional[int],
"from_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"from_time": Optional[str],
"from_time_offset": Optional[int],
"to_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"to_time": Optional[str],
"to_time_offset": Optional[int],
"bymonth": Optional[
list[
Union[
'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December',
],
],
],
"bymonthday": Optional[list[int]],
"byweekday": Optional[list[Union['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']]],
"from_min": Optional[int],
"to_min": Optional[int],
}
}
Example
{
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
"title": "holiday",
"priority": 1,
"actions": {
"player": {
"cmd": "play",
"entity_type": "playlist",
"entity_id": 19
},
"do1": {
"state": 1
},
"do2": null,
"do3": null
},
"rrule": {
"freq": "DAILY",
"interval": 1,
"start_date": "2024-01-20",
"start_time_type": "time",
"start_time": "00:00",
"start_time_offset": null,
"count": 1,
"until_date": null,
"until_time_type": null,
"until_time": null,
"until_time_offset": null,
"from_time_type": "sunset",
"from_time": null,
"from_time_offset": 0,
"to_time_type": "sunset",
"to_time": null,
"to_time_offset": 0,
"bymonth": null,
"bymonthday": null,
"byweekday": null,
"from_min": null,
"to_min": null
}
}
- id - Уникальный идентификатор события (UUID).
- title - Название события.
- priority - Приоритет события. Чем выше значение тем выше приоритет.
- actions - Действия которые должны быть выполнены при наступлении события.
- player - Действие для плеера. Содержит команду воспроизведения.
- cmd - Команда для плеера. Всегда равна ‘play’.
- entity_type - Тип сущности для воспроизведения. Может принимать значения ‘playlist’, ‘cue’.
- entity_id - Уникальный идентификатор сущности для воспроизведения.
- do1 - Действие для цифрового выхода DO1.
- do2 - Действие для цифрового выхода DO2.
- do3 - Действие для цифрового выхода DO3.
- state - Состояние цифрового выхода. Может принимать значения 0 (выключен) или 1 (включен).
- rrule - Правила повторения события (recurrence rule).
- freq - Частота повторений события. Может принимать значения: ‘YEARLY’, ‘MONTHLY’, ‘WEEKLY’, ‘DAILY’, ‘HOURLY’.
- interval - Периодичность повторения события.
- start_date - Дата старта события. Формат YYYY-mm-dd.
- start_time_type - Тип времени старта события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’.
- start_time - Время старта события. Формат: %H:%M. Заполнено если start_time_type равен ‘time’.
- start_time_offset - Сдвиг времени старта события. Может принимать отрицательные значения. Заполнено если start_time_type равен ‘sunset’ или ‘sunrise’.
- count - Количество повторений события. Не может быть заполнен одновременно с полем until_date. Если оба поля не заполнены то событие не никогда не завершается.
- until_date - Дата завершения события. Формат YYYY-mm-dd. Не может быть заполнен одновременно с полем count. Если оба поля не заполнены то событие не никогда не завершается.
- until_time_type - Тип времени завершения события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если заполнено поле until_date.
- until_time - Время завершения события. Формат: %H:%M. Заполнено если заполнено поле until_date и until_time_type равен ‘time’.
- until_time_offset - Сдвиг времени завершения события. Заполнено если заполнено поле until_date и until_time_type равен ‘sunset’ или ‘sunrise’.
- from_time_type - Тип времени начала события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если поле freq не равно ‘HOURLY’.
- from_time - Время начала события. Формат: %H:%M. Заполнено если поле freq не равно ‘HOURLY’ и from_time_type равен ‘time’.
- from_time_offset - Сдвиг времени начала события. Может принимать отрицательные значения. Заполнено если поле freq не равно ‘HOURLY’ и from_time_type равен ‘sunset’ или ‘sunrise’.
- to_time_type - Тип времени окончания события. Может принимать значения: ‘sunset’, ‘sunrise’, ‘time’. Заполнено если поле freq не равно ‘HOURLY’.
- to_time - Время окончания события. Формат: %H:%M. Заполнено если заполнено поле freq не равно ‘HOURLY’ и to_time_type равен ‘time’.
- to_time_offset - Сдвиг времени завершения события. Заполнено если заполнено поле freq не равно ‘HOURLY’ и to_time_type равен ‘sunset’ или ‘sunrise’.
- bymonth - Месяцы в которые событие активно. Заполнено если поле freq равно ‘YEARLY’.
- bymonthday - Дни месяца в которые событие активно. Заполнено если поле freq равно ‘MONTHLY’.
- byweekday - Дни недели в которые событие активно. Заполнено если поле freq равно ‘WEEKLY’.
- from_min - Минута с которой начинается событие. Заполнено если поле freq равно ‘HOURLY’.
- to_min - Минута окончания события. Заполнено если поле freq равно ‘HOURLY’.
PUB lm/scheduler/events/changes
Публикует вновь созданные/измененные/удаленные события.
Payload format
{
status: Literal['created', 'updated', 'deleted'],
event: {
"id": str,
"title": str,
"priority": int,
"actions": {
"player": Optional[{
"cmd": Literal['play'],
"entity_type": Union['playlist', 'cue'],
"entity_id": int,
}],
"do1": Optional[{
"state": Literal[0, 1],
}],
"do2": Optional[{
"state": Literal[0, 1],
}],
"do3": Optional[{
"state": Literal[0, 1],
}],
},
"rrule": {
"freq": Union['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY'],
"interval": int,
"start_date": str,
"start_time_type": Union['sunset', 'sunrise', 'time'],
"start_time": Optional[str],
"start_time_offset": Optional[int],
"until_date": Optional[str],
"until_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"until_time": Optional[str],
"until_time_offset": Optional[int],
"count": Optional[int],
"from_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"from_time": Optional[str],
"from_time_offset": Optional[int],
"to_time_type": Optional[Union['sunset', 'sunrise', 'time']],
"to_time": Optional[str],
"to_time_offset": Optional[int],
"bymonth": Optional[
list[
Union[
'January', 'February', 'March', 'April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December',
],
],
],
"bymonthday": Optional[list[int]],
"byweekday": Optional[list[Union['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']]],
"from_min": Optional[int],
"to_min": Optional[int],
}
}
}
Example
{
"status": "created",
"event": {
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
"title": "holiday",
"priority": 1,
"actions": {
"player": {
"cmd": "play",
"entity_type": "playlist",
"entity_id": 19
},
"do1": {
"state": 1
},
"do2": null,
"do3": null
},
"rrule": {
"freq": "DAILY",
"interval": 1,
"start_date": "2024-01-20",
"start_time_type": "time",
"start_time": "00:00",
"start_time_offset": null,
"count": 1,
"until_date": null,
"until_time_type": null,
"until_time": null,
"until_time_offset": null,
"from_time_type": "sunset",
"from_time": null,
"from_time_offset": 0,
"to_time_type": "sunset",
"to_time": null,
"to_time_offset": 0,
"bymonth": null,
"bymonthday": null,
"byweekday": null,
"from_min": null,
"to_min": null
}
}
}
- status - Тип изменения. Может принимать значения ‘created’, ‘updated’, ‘deleted’.
- event - Событие со всеми параметрами в формате SchedulerEvent. ___
SUB lm/scheduler/events/periods
Принимает запрос на публикацию всех одиночных событий за указанный период.
Запрос должен содержать cor data для последующей идентификации ответа. Запрос может содержать resp_topic. В противном случае ответ будет опубликован в топик lm/scheduler/events/periods/response.
Payload format
{
from_datetime: str,
to_datetime: str,
filters: Optional[{
player: bool,
do1: bool,
do2: bool,
do3: bool,
}]
}
Example
{
"from_datetime": "2024-02-25T05:00:00",
"to_datetime": "2024-04-08T05:00:00",
"filters": {
"player": true,
"do1": false,
"do2": false,
"do3": false
}
}
- from_datetime - Дата и время начала диапазона в iso формате.
- to_datetime - Дата и время окончания диапазона в iso формате.
- filters - Опциональные фильтры для типов действий. Если не указаны, возвращаются события со всеми типами действий.
- player - Включать события с действиями плеера.
- do1 - Включать события с действиями для цифрового выхода DO1.
- do2 - Включать события с действиями для цифрового выхода DO2.
- do3 - Включать события с действиями для цифрового выхода DO3.
PUB lm/scheduler/events/periods/response
Публикует список одиночных событий календаря за указанный период. Период задается в запросе. Запрос принимается на топик lm/scheduler/events/periods
Payload format
[
{
id: str
title: str
start: str
end: str
priority: int
duration: float
}
]
Example
[
{
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
"title": "holiday",
"priority": 1,
"start": "2024-02-29T12:00:00+03:00",
"end": "2024-03-02T12:00:00+03:00",
"duration": 259200.0
}
]
- id - Уникальный идентификатор события.
- title - Название события.
- priority - Приоритет события. Чем выше значение тем выше приоритет.
- start - Дата и время начала события в ISO формате.
- end - Дата и время окончания события в ISO формате.
- duration - Продолжительность события в секундах.
PUB lm/scheduler/player/status
Публикует текущее активное событие плеера если оно есть.
Payload formatСобытие есть:
{
status: Literal['running'],
event: {
id: str,
title: str,
action: {
cmd: Literal['play']
entity_type: Literal['playlist', 'cue']
entity_id: int
}
}
}
Example
{
"status": "running",
"event": {
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
"title": "holiday",
"action": {
"cmd": "play",
"entity_type": "playlist",
"entity_id": 19
}
}
}
События нет:
{
status: Literal['no_event'],
}
Example
{
"status": "no_event"
}
- status - Текущий статус расписания. Может принимать значения ‘running’, ‘no_event’.
- event - Активное событие со всеми параметрами. Присутствует только когда status равен ‘running’.
- id - Уникальный идентификатор события.
- title - Название события.
- action - Действие которое должно быть выполнено для данного события.
- cmd - Команда для выполнения. Всегда равна ‘play’.
- entity_type - Тип сущности для воспроизведения. Может принимать значения ‘playlist’, ‘cue’.
- entity_id - Уникальный идентификатор сущности для воспроизведения.
PUB lm/scheduler/do/*/status
Публикует текущее активное событие управления цифровым выходом DO1 если оно есть.
PUB lm/scheduler/do/1/statusPUB lm/scheduler/do/2/statusPUB lm/scheduler/do/3/status
Payload formatСобытие есть:
{
status: Literal['running'],
event: {
id: str,
title: str,
action: {
state: Literal[0, 1]
}
}
}
Example
{
"status": "running",
"event": {
"id": "abe4c633-8e3f-4938-94e2-efd135d993fc",
"title": "holiday",
"action": {
"state": 1
}
}
}
События нет:
{
status: Literal['no_event'],
}
Example
{
"status": "no_event"
}
- status - Текущий статус расписания для DO1. Может принимать значения ‘running’, ‘no_event’.
- event - Активное событие со всеми параметрами. Присутствует только когда status равен ‘running’.
- id - Уникальный идентификатор события.
- title - Название события.
- action - Действие которое должно быть выполнено для данного события.
- state - Состояние цифрового выхода. Может принимать значения 0 (выключен) или 1 (включен).
SUB lm/settings/datetime/timezone
Получает текущую таймзону.
Payload format
{
timezone: str
}
Example
{
"timezone": "Europe/Moscow",
}
SUB lm/settings/location/coordinates
Получает координаты устройства для расчета солнечного времени.
Payload format
{
latitude: float
longitude: float
}
Example
{
latitude: 56.821019190097616
longitude: 60.59559633825789
}
4 Управление устройствами Art-Net
Сервис осуществляет мониторинг и управления ArtNet и RDM устройствами.
PUB lm/artnet_devices_management_service/error
Публикует ошибки.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
msg: str
data: Any
}
- msg - contain error message
- data - contain related error data
PUB lm/artnet_devices_management_service/artnet/devices/changes
Публикует вновь созданные/измененные/удаленные ArtNet устройства.
Payload format
{
status: Literal['created', 'updated', 'deleted']
device: {
mac_address: str
ip_address: str
subnet_mask: str
default_gateway: str
dhcp_status: bool
name: str
style: str
firmware_version: str
ports: dict[
int,
{
bind_index: int
is_input: bool
is_output: bool
port_type: Literal[
'DALI',
'ArtNet',
'ADB',
'Colortran_CMX',
'Avab',
'MIDI',
'DMX512',
]
name: str
universe: int
is_rdm_on: bool
physical_port: Optional[int]
out_signal: Optional[Literal['DMX', 'SPI']]
is_data_transmitting: bool
}
]
status: str
dev_mode: Optional[str]
spi_settings: Optional[
{
chip: str
mode: str
period: int
time_high_0: int
time_high_1: int
time_reset: int
gamma: int
bit_mode: str
}
]
dmx_settings: Optional[
{
break_time: int
mab_time: int
chan_time: int
pause_time: int
chan_num: int
}
]
rdm_devices_count: int
}
}
PUB lm/artnet_devices_management_service/rdm/devices/changes
Публикует вновь созданные/измененные/удаленные RDM устройства.
Payload format
{
status: Literal['created', 'updated', 'deleted']
device: {
uid: str
art_net_device_mac: str
art_net_device_ip: str
port: int
supported_params: dict[str, Any]
}
}
- uid - Уникальный идентификатор устройства.
- art_net_device_mac - Mac адрес ArtNet устройства к которому подключено данное rdm устройство.
- art_net_device_ip - IP адрес ArtNet устройства к которому подключено данное rdm устройство.
- port - Номер порта ArtNet устройства к которому подключено данное rdm устройство.
- supported_params - Словарь параметров и их значений.
PUB lm/artnet_devices_management_service/cmd_response
Публикует результаты выполнения асинхронных команд.
Используется для уведомления о завершении длительных операций, которые выполняются в фоновом режиме. Клиент получает transaction_uid при инициации команды и может отслеживать её статус через данный топик.
Payload format
{
"transaction_uid": "string",
"status": "string"
}
- transaction_uid - Уникальный идентификатор транзакции, возвращаемый при инициации асинхронной команды
- status - Статус выполнения команды. Возможные значения: “done”, “error”
Example
{
"transaction_uid": "550e8400-e29b-41d4-a716-446655440000",
"status": "done"
}
5 Управление триггерами
PUB 'lm/trigger_service/trigger/trigger_list'
Публикует список всех триггеров. Топик всегда содержит актуальный список.
Payload format
[
{
name: str
tr_type: str
params: dict[str, Any]
}
]
- name - Имя триггера.
- tr_type - Тип триггера.
- params - Словарь с параметрами триггера.
Example
[
{
"name": "TriggerFromMqtt",
"tr_type": "RawUDP",
"params": {
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "5555",
"data": "any"
}
}
]
PUB lm/trigger_service/action/action_list
Публикует список всех action.
Топик всегда содержит актуальный список.
Payload format
[
{
name: str
action_type: str
params: dict[str, Any]
}
]
- name - Имя action.
- action_type - Тип action.
- params - Словарь с параметрами action.
Example
[
{
"name": "default",
"action_type": "send_trigger_to_mqtt",
"params": {
"topic": "lm/trigger_service/trigger/",
"payload": "",
"retain": false
}
}
]
PUB lm/trigger_service/relation_list
Публикует список всех связей между триггером и action.
Payload format
[
{
trigger: {
name: str
tr_type: str
params: dict[str, Any]
}
action: {
name: str
action_type: str
params: dict[str, Any]
}
}
]
- trigger - Словарь с триггером.
- action - Словарь с action.
Example
[
{
"trigger": {
"name": "TriggerFromMqtt",
"tr_type": "RawUDP",
"params": {
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "5555",
"data": "any"
}
},
"action": {
"name": "default",
"action_type": "send_trigger_to_mqtt",
"params": {
"topic": "lm/trigger_service/trigger/",
"payload": "",
"retain": false
}
}
}
]
SUB lm/trigger_service/trigger/add
Добавляет новый триггер.
На данный момент доступны три типа триггера: RawUDP и ArtNet и Mqtt.
- RawUDP - Срабатывает при получении UDP пакета удовлетворяющего заданным параметрам.
- ArtNet - Срабатывает при получении ArtNet пакета удовлетворяющего заданным параметрам.
- Mqtt - Срабатывает при получении Mqtt сообщения удовлетворяющего заданным параметрам.
Payload format
{
name: str
tr_type: str
params: dict[str, Any]
}
- name - Имя триггера.
- tr_type - Тип триггера.
- params - Словарь с параметрами триггера. Параметры отличаются в зависимости от типа триггера.
Example
{
"name": "TriggerFromMqtt",
"tr_type": "RawUDP",
"params": {
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "5555",
"data": "any"
}
}
Ожидаемые Параметры
Параметры для триггера с типом RawUDP
{
network_type: Literal['udp']
listen_ip: str
listen_port: int
data: str
}
- network_type - Тип сети. Должен быть ‘udp’.
- listen_ip - Прослушиваемый ip.
- listen_port - Прослушиваемый порт.
- data - Полезная нагрузка. Принимает строку полностью отражающую полезную нагрузку UDP пакета.
Example RawUDP params
{
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "5555",
"data": "any"
}
Параметры для триггера с типом ArtNet
{
network_type: Literal['tcp', 'udp']
listen_ip: str
listen_port: int
universe: int
channel: int
min_level: int
max_level: int
}
- network_type - Тип сети. Принимает значения ‘tcp’ или ‘udp’.
- listen_ip - Прослушиваемый ip.
- listen_port - Прослушиваемый порт.
- universe - Отражает значение параметра subuni из ArtNet пакета.
- channel - Номер канала в ArtNet пакете.
- min_level - Минимальное значение в канале для срабатывания триггера.
- max_level - Максимальное значение в канале для срабатывания триггера.Example ArtNet params
{
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "6454",
"universe": 3,
"channel": 5,
"min_level": 1,
"max_level": 124
}
Параметры для триггера с типом Mqtt
{
topic: str
payload: str
}
- topic - Mqtt топик для отслеживания.
- payload - Полезная нагрузка mqtt сообщения в виде байт. Должна точно совпадать.Example Mqtt params
{
"topic": "lm/di/port/1",
"payload": "\x01"
}
SUB lm/trigger_service/trigger/delete
Удаляет триггер.
Payload format
{
name: str
}
- name - Имя триггера.Example
{
"name": "TriggerFromMqtt",
}
SUB lm/trigger_service/action/add
Добавляет новый action.
На данный момент доступны два типа action: send_mqtt_msg_raw и send_trigger_to_mqtt.
- send_mqtt_msg_raw - Отправляет по mqtt сообщение записанное в параметрах не внося в него никаких изменений.
- send_trigger_to_mqtt - Отправляет по mqtt сообщение в теле которого находится сработавший триггер.
Payload format
{
name: str
action_type: str
params: dict[str, Any]
}
- name - Имя action.
- action_type - Тип action.
- params - Словарь с параметрами action. Различается в зависимости от типа action.Example
{
"name": "default",
"action_type": "send_trigger_to_mqtt",
"params": {
"topic": "lm/trigger_service/trigger/",
"payload": "",
"retain": false
}
}
Ожидаемые Параметры
Параметры для actions с типом send_trigger_to_mqtt и send_trigger_to_mqtt совпадают.
{
topic: str
payload: str
retain: bool
}
- topic - Mqtt topic в который будет отправлено сообщение.
- payload - Mqtt payload. Полезная нагрузка сообщения.
- retain - Mqtt retain param.
Типа send_trigger_to_mqtt игнорирует поля payload и retain но в сообщении они должны присутствовать.
Example params
{
"topic": "lm/trigger_service/trigger/",
"payload": "",
"retain": false
}
SUB lm/trigger_service/action/delete
Удаляет action.
Payload format
{
name: str
}
- name - Имя action.
Example
{
"name": "default",
}
SUB lm/trigger_service/set_trigger_to_action_relation
Создает связь между триггером и action.
Payload format
trigger: {
name: str
tr_type: str
params: dict[str, Any]
}
action: {
name: str
action_type: str
params: dict[str, Any]
}
- trigger - Словарь с триггером.
- action - Словарь с action.
Example
{
"trigger": {
"name": "TriggerFromMqtt",
"tr_type": "RawUDP",
"params": {
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "5555",
"data": "any"
}
},
"action": {
"name": "default",
"action_type": "send_trigger_to_mqtt",
"params": {
"topic": "lm/trigger_service/trigger/",
"payload": "",
"retain": false
}
}
}
SUB lm/trigger_service/delete_trigger_to_action_relation
Удаляет связь между триггером и action.
Payload format
trigger: {
name: str
tr_type: str
params: dict[str, Any]
}
action: {
name: str
action_type: str
params: dict[str, Any]
}
- trigger - Словарь с триггером.
- action - Словарь с action.
Example
{
"trigger": {
"name": "TriggerFromMqtt",
"tr_type": "RawUDP",
"params": {
"network_type": "udp",
"listen_ip": "0.0.0.0",
"listen_port": "5555",
"data": "any"
}
},
"action": {
"name": "default",
"action_type": "send_trigger_to_mqtt",
"params": {
"topic": "lm/trigger_service/trigger/",
"payload": "",
"retain": false
}
}
}
PUB lm/trigger_service/error
Публикует ошибки.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
msg: str
data: Any
}
- msg - contain error message
- data - contain related error data
Удаляет триггер и все связанные с ним действия.
Payload format
{
name: str
}
- name - Имя триггера.Example
{
"name": "TriggerFromMqtt",
}
6. Настройки системы
Сервис осуществляет конфигурирование системных настроек ОС.
PUB lm/system_configurator/error
Публикует ошибки.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
msg: str
data: Any
}
- msg - contain error message
- data - contain related error data
PUB lm/system_settings/external_access/certificates
Публикует список всех x509 сертификатов.
Топик всегда содержит актуальный список.
Payload format
[
{
name: str
cert_type: str
public_bytes: str
params: dict[str, Any]
}
]
- name - Имя сертификата.
- cert_type - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’
- params - Словарь с параметрами сертификата. Набор параметров отличается в зависимости от типа сертификата.
Example
[
{
"cert_type": "certificate",
"name": "cert_name",
"params": {
"issuer": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"san": "IP=192.168.0.3",
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"valid_from": "1664440221.0",
"valid_to": "1759048221.0"
},
"public_bytes": "-----BEGIN CERTIFICATE-----\n"
"-----END CERTIFICATE-----\n"}]
}
]
PUB lm/system_settings/external_access/web_access_settings
Публикует список настроек web доступа.
Топик всегда содержит актуальный список.
Payload format
{
http_port: int
https_port: int
is_https_enabled: bool
is_http_redirected: bool
cert_name: str
}
- http_port - Http порт. По умолчанию 80.
- https_port - Https порт. По умолчанию 443.
- is_https_enabled - Индикатор включен ли https.
- is_http_redirected - Индикатор включена ли переадресация http to https.
- cert_name - Имя сертификата сервера.
Example
{
"http_port": 80,
"https_port": 443,
"is_https_enabled": false,
"is_http_redirected": true,
"cert_name": ""
}
SUB lm/system_settings/external_access/change_web_access_settings
Меняет настройки web доступа.
Payload format
{
http_port: int
https_port: int
is_https_enabled: bool
is_http_redirected: bool
cert_name: str
}
- http_port - Http порт. По умолчанию 80.
- https_port - Https порт. По умолчанию 443.
- is_https_enabled - Индикатор включен ли https.
- is_http_redirected - Индикатор включена ли переадресация http to https.
- cert_name - Имя сертификата сервера.
Example
{
"http_port": 80,
"https_port": 443,
"is_https_enabled": false,
"is_http_redirected": true,
"cert_name": ""
}
SUB lm/system_settings/certificates/upload_certificate
Загружает сертификат и его ключ для дальнейшего использования в настройках доступа.
Payload format
{
cert_name: str
certificate: bytes
key: bytes
intermediate: bytes
}
- cert_name - Читаемое имя сертификата.
- certificate - x.509 сертификат в pem формате.
- key - Приватный ключ в pem формате.
- intermediate - (Опционально) промежуточный сертификат.
SUB lm/system_settings/certificates/upload_certificate_corresponding_csr
Загружает сертификат относящийся к сформированному ранее csr.
Payload format
{
cert_name: str
certificate: bytes
}
- cert_name - Имя csr сертификата.
- certificate - x.509 сертификат в pem формате.
SUB lm/system_settings/certificates/delete_certificate
Удаляет сертификат и все связанные с ним файлы.
Payload format
{
id: int
name: str
cert_type: str
public_bytes: str
params: dict[str, Any]
}
- id - (Опционально) Идентификатор сертификата.
- name - Имя сертификата.
- cert_type - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’
- public_bytes - Открытый ключ сертификата.
- params - Словарь с параметрами сертификата. Набор параметров отличается в зависимости от типа сертификата.
Example
{
"cert_type": "certificate",
"name": "cert_name",
"params": {
"issuer": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"san": "IP=192.168.0.3",
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"valid_from": "1664440221.0",
"valid_to": "1759048221.0"
},
"public_bytes": "-----BEGIN CERTIFICATE-----\n"
"-----END CERTIFICATE-----\n"}]
SUB lm/system_settings/certificates/generate_csr
Генерирует Certificate Signing Request.
Payload format
{
cert_name: str
cert_type: str
key_size: int
subject: str
san: str
}
- cert_name - Имя сертификата.
- cert_type - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’
- key_size - Размер ключа в байтах. Принимает значения 2048 иои 4096.
- subject - Строка в формате rfc4514.
- san - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами
IP=илиDNS=.
Example
{
"cert_name": "ss_cert23",
"cert_type": "certificate",
"key_size": 2048,
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"san": "IP=192.168.0.3,DNS=domain.com"
}
SUB lm/system_settings/certificates/generate_self_sign_certificate
Генерирует самоподписанный сертификат.
Payload format
{
cert_name: str
cert_type: str
key_size: int
subject: str
san: str
}
- cert_name - Имя сертификата.
- cert_type - Тип сертификата. Может принимать значения ‘csr’ или ‘certificate’.
- key_size - Размер ключа в байтах. Принимает значения 2048 иои 2096.
- subject - Строка в формате rfc4514.
- san - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами
IP=илиDNS=.
Example
{
"cert_name": "ss_cert23",
"cert_type": "certificate",
"key_size": 2048,
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"san": "IP=192.168.0.3,DNS=domain.com"
}
PUB lm/system_settings/network/interfaces/wired/eth*/statistics
PUB lm/system_settings/network/interfaces/wired/eth0/statistics
PUB lm/system_settings/network/interfaces/wired/eth1/statistics
Публикует информацию о проводном интерфейсе ethernet каждые 10 секунд.
Payload format
{
status: str
ip_assign_method: Literal['manual', 'dhcp']
ip: str
netmask: str
gateway: str
dns_assign_method: Literal['manual', 'dhcp']
dns_servers: list[str]
mac_address: str
}
- status - Статус интерфейса. Может быть
upилиdown. - ip_assign_method - Способ назначения ip адреса. Может быть
manualилиdhcp. - ip - IP адрес интерфейса.
- netmask - Маска интерфейса.
- gateway - Шлюз по умолчанию.
- dns_assign_method - Способ назначения dns серверов. Может быть
manualилиdhcp. - dns_servers - Список dns серверов.
- mac_address - MAC адрес интерфейса.
Example
{
"status": "up",
"ip_assign_method": "manual",
"ip": "192.168.0.205",
"netmask": "255.255.255.0",
"gateway": "192.168.0.1",
"dns_assign_method": "manual",
"dns_servers": ["8.8.8.8", "8.8.4.4"],
"mac_address": "e4:5f:01:a8:e0:6c"
}
SUB lm/system_settings/network/interfaces/wired/eth*/set_ip_credential
SUB lm/system_settings/network/interfaces/wired/eth0/set_ip_credentialSUB lm/system_settings/network/interfaces/wired/eth1/set_ip_credential
Устанавливает ip адресацию и шлюз на интерфейс.
Поддерживает статическое назначение ip и назначение через dhcp.
Payload format
Статическая адресация:
{
ip_assign_method: Literal['manual']
static_ip: str
static_netmask: str
static_gateway: str
}
- ip_assign_method - Способ назначения ip адреса. Должно быть
manual. - static_ip - IPv4 адрес интерфейса
- static_netmask - Сетевая маска интерфейса.
- static_gateway - Шлюз по умолчанию.
Example
{
"ip_assign_method": "manual",
"static_ip": "192.168.0.205",
"static_netmask": "255.255.255.0",
"static_gateway": "192.168.0.1"
}
Динамическая адресация
{
ip_assign_method: Literal['dhcp']
}
- ip_assign_method - Способ назначения ip адреса. Должно быть
dhcp.
Example
{
"ip_assign_method": "dhcp"
}
SUB lm/system_settings/network/interfaces/wired/eth*/set_dns_credential
SUB lm/system_settings/network/interfaces/wired/eth0/set_dns_credential
SUB lm/system_settings/network/interfaces/wired/eth1/set_dns_credential
Назначение dns серверов на интерфейс.
Поддерживает статическое и динамическое (dhcp) назначение dns серверов.
Payload format
Статическое назначение:
{
dns_assign_method: Literal['manual']
static_dns_servers: list[str]
}
- dns_assign_method - Способ назначения dns серверов. Должно быть
manual. - static_dns_servers - Список DNS серверов.Example
{
"dns_assign_method": "manual",
"static_dns_servers": ["8.8.8.8", "8.8.4.4"]
}
Динамическое назначение:
{
dns_assign_method: Literal['dhcp']
}
- dns_assign_method - Способ назначения dns серверов. Должно быть
dhcp.
Example
{
"dns_assign_method": "dhcp"
}
PUB lm/system_settings/network/interfaces/modem/statistics
Публикует информацию о модемном интерфейсе каждые 10 секунд.
Payload format
{
ip_assign_method: Literal['manual', 'dhcp']
ip: str
netmask: str
gateway: str
dns_assign_method: Literal['manual', 'dhcp']
dns_servers: list[str]
apn: {
apn: str,
username: str,
password: str,
}
modem_status: {
state: str,
state_failed_reason: str,
power_state: str,
signal_quality: int,
access_technologies: list[str]
}
}
- status - Статус интерфейса. Может быть
upилиdown. - ip_assign_method - Способ назначения ip адреса. Может быть
manualилиdhcp. - netmask - IP адрес интерфейса.
- gateway - Шлюз по умолчанию.
- dns_assign_method - Способ назначения dns серверов. Может быть
manualилиdhcp. - dns_servers - Список dns серверов.
- apn:
- apn: APN сервер.
- username: Имя пользователя для apn сервера.
- password: Пароль для apn сервера.
- modem_status:
- state: Состояние подключения.
- state_failed_reason: Причина ошибки если таковая есть.
- power_state: Состояние питания модема.
- signal_quality: Качество сигнала в процентах.
- access_technologies: Список текущих режимов (LTE, UMTS и т.д.).
Example
{
"status": "up",
"ip_assign_method": "manual",
"ip": "192.168.0.205",
"netmask": "255.255.255.0",
"gateway": "192.168.0.1",
"dns_assign_method": "manual",
"dns_servers": ["8.8.8.8", "8.8.4.4"],
"apn": {
"apn": "internet.mts.ru",
"username": "mts",
"password": "mts"
},
"modem_status": {
"state": "connected",
"state_failed_reason": "--",
"power_state": "on",
"signal_quality": 81,
"access_technologies": ["LTE"]
}
}
SUB lm/system_settings/network/interfaces/modem/set_ip_credential
Устанавливает ip адресацию и шлюз на интерфейс.
Поддерживает статическое назначение ip и назначение через dhcp.
Payload format
Статическая адресация
{
ip_assign_method: Literal['manual']
static_ip: str
static_netmask: str
static_gateway: str
}
- ip_assign_method - Способ назначения ip адреса. Должно быть
manual. - static_ip - IPv4 адрес интерфейса
- static_netmask - Сетевая маска интерфейса.
- static_gateway - Шлюз по умолчанию.Example
{
"ip_assign_method": "manual",
"static_ip": "192.168.0.205",
"static_netmask": "255.255.255.0",
"static_gateway": "192.168.0.1"
}
Динамическая адресация
{
ip_assign_method: Literal['dhcp']
}
- ip_assign_method - Способ назначения ip адреса. Должно быть
dhcp.
Example
{
"ip_assign_method": "dhcp"
}
SUB lm/system_settings/network/interfaces/modem/set_dns_credential
Назначение dns серверов на интерфейс.
Поддерживает статическое и динамическое (dhcp) назначение dns серверов.
Payload format
Статическое назначение:
{
dns_assign_method: Literal['manual']
static_dns_servers: list[str]
}
- dns_assign_method - Способ назначения dns серверов. Должно быть
manual. - static_dns_servers - Список DNS серверов.
Example
{
"dns_assign_method": "manual",
"static_dns_servers": ["8.8.8.8", "8.8.4.4"]
}
Динамическое назначение
{
dns_assign_method: Literal['dhcp']
}
- dns_assign_method - Способ назначения dns серверов. Должно быть
dhcp.
Example
{
"dns_assign_method": "dhcp"
}
SUB lm/system_settings/network/interfaces/modem/set_apn_credential
Назначение настроек apn на интерфейс.
Поддерживается только статическое назначение.
Payload format
Статическое назначение:
{
apn: str
username: str
password: str
}
- apn - APN сервер.
- username - Имя пользователя если есть либо пустая строка.
- password - Пароль если есть либо пустая строка.
Example
{
"apn": "internet.mts.ru",
"username": "mts",
"password": "mts"
}
PUB lm/system_settings/datetime/rtc_status
Публикует статус rtc модуля
Payload format
{
is_active: bool
}
- is_active - Активен ли rtc модуль.
Example
{
"is_active": true,
}
SUB lm/system_settings/datetime
Принимает команды на изменение даты и времени конфигурации системы.
Список принимаемых команд
Set Date
Description: > Set system date.
Values:
command: str > set_date
data: dict > date: str - date in format ‘Y:M:D’
Example:{'command': 'set_date', 'data': {'date': '1970:01:01'}}
Set Time
Description: > Set system time.
Values:
command: str > set_time
data: dict > time: str - time in format ‘HH:mm:ss’
Example:{'command': 'set_time', 'data': {'time': '13:00:00'}}
Set Datetime
Description: > Set system date and time.
Values:
command: str > set_datetime
data: dict > datetime: str - time in format ‘Y:M:D HH:mm:ss’
Example:{'command': 'set_datetime', 'data': {'datetime': '1970:01:01 13:00:00'}}
Change Ntp Status
Description: > Enable or disable ntp synchronization.
Values:
command: str > change_ntp_status
data: dict > ntp: bool - is ntp sync enable
Example:{'command': 'change_ntp_status', 'data': {'ntp': True}}
Set Ntp Servers
Description: > Set ntp servers. > Generate ntp config, replace it then restart systemd-timesyncd.service > Accepts list of ip addresses or domain names
Values:
command: str > set_ntp_servers
data: dict > ntp_servers: list[str] - list of servers ip addresses or dns names
Example:{'command': 'set_ntp_servers', 'data': {'ntp_servers': ['192.168.0.2', 'ntp1.stratum2.com']}}
Set timezone
Description: > Set system timezone.
Values:
command: str > set_timezone
data: dict > timezone: str - timezone name
Example:{'command': 'set_timezone', 'data': {'timezone': 'Europe/London'}}
Base format for command payload
{
'command': str
'data': dict[str, Any]
}
- command - command name
- data - any data for command
Example:
{'command': 'set_ip', 'data': {'ifname': 'eth0', 'ip': '192.168.0.1'}}
SUB lm/system_settings/power_control
Управляет питанием устройства
Payload format
{
command: str
delay: int
}
- command - Команда управления питанием. Может принимать значения “reboot” и “shutdown”.
- delay - Задержка срабатывания команды в минутах.
Example
{
"command": "reboot",
"delay": "0",
}
Certificate params format
Парамеры сертификата отличаются в зависимости от его типа. В данный момент поддерживается два типа сертификата x509: certificate и csr.
x509 certificate params format
{
subject: str
san: str
issuer: str
valid_from: float
valid_to: float
}
- subject - Строка в формате rfc4514.
- san - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами
IP=илиDNS=. - issuer - Строка в формате rfc4514.
- valid_from - Дата с которой сертификат действителен. Формат Posix timestamp.
- valid_to - Дата по которую сертификат действителен. Формат Posix timestamp.
Example
{
"issuer": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"san": "IP=192.168.0.3",
"subject": "OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA",
"valid_from": "1664440221.0",
"valid_to": "1759048221.0"
}
x509 csr params format
{
subject: str
san: str
}
- subject - Строка в формате rfc4514.
- san - Стока представляющее расширение SubjectAltName. Принимаются только ip адреса или dns имена идущие подряд через запятую без пробелов с префиксами
IP=илиDNS=.
Example
{ “subject”: “OU=test ou,CN=domain.com,O=test o,L=123,ST=st,C=UA”, “san”: “IP=192.168.0.3”, }
7. Управление Di Do интерфейсами плеера
PUB lm/di/port/*
PUB lm/di/port/0 (player V1 only)PUB lm/di/port/1PUB lm/di/port/2 (player V2 only)PUB lm/di/port/3 (player V2 only)
Публикует состояние di порта
- di_port_number - Номер di порта.
Payload format
int
Example
1
- int - Статус Di порта. 1 - активен, 0 - неактивен.
PUB lm/do/port/*
PUB lm/do/port/0 (player V1 only)
PUB lm/do/port/1PUB lm/do/port/2 (player V2 only)PUB lm/do/port/3 (player V2 only)
Публикует состояние do порта
- do_port_number - Номер do порта.
Payload format
int
Example
1
- int - Статус DO порта. 1 - активен, 0 - неактивен.
SUB lm/do/change_state
Принимает команды для изменения состояния DO порта.
Payload command format
{
"port": int,
"state": int,
}
Example
{
"port": 1,
"state": 1,
}
- port - Номер do порта.
- state - Статус порта. 1 - активен, 0 - неактивен.
8. Управление RS485 интерфейсами плеера
PUB lm/serialport_controller/error
Публикует ошибки.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
msg: str
data: Any
}
- msg - contain error message
- data - contain related error data
PUB lm/serialport_controller/ports
Публикует список rs485 портов.
Payload format
[
{
name: str
mode: Literal['rs485', 'dmxOut']
}
]
- name - Имя порта.
- mode - Предназначение порта.
Example
[
{
"name": "port1",
"mode": "rs485",
},
{
"name": "port2",
"mode": "rs485",
},
{
"name": "port3",
"mode": "dmxOut",
},
{
"name": "port4",
"mode": "dmxOut",
}
]
SUB lm/serialport_controller/ports/change_mode
Меняет предназначение порта.
Payload format
{
name: str
mode: Literal['rs485', 'dmxOut']
}
- name - Имя порта.
- mode - Предназначение порта.
Example
{
"name": "port1",
"mode": "rs485",
}
9. Управление светодиодами плеера
PUB 'lm/leds/state'
Публикует состояние диодов rs485 портов
Payload format
{
Port1: {
green: bool,
red: bool,
},
Port2: {
green: bool,
red: bool,
},
Port3: {
green: bool,
red: bool,
},
Port4: {
green: bool,
red: bool,
},
}
Example
{
"Port1": {
"green": true,
"red": true,
},
"Port2": {
"green": true,
"red": true,
},
"Port3": {
"green": true,
"red": true,
},
"Port4": {
"green": true,
"red": true,
},
}
- green - Статус зеленого светодиода.
- red - Статус красного светодиода.
SUB lm/leds/change_state
Принимает команды для изменения состояния диодов у rs485 порта.
Payload command format
{
pub port: Literal['Port1', 'Port2', 'Port3', 'Port4'],
green: bool,
red: bool,
}
Example
{
"port": "Port1",
"green": true,
"red": false,
}
- port - Имя rs485 порта.
- green - Статус зеленого светодиода.
- red - Статус красного светодиода.
SUB lm/leds/blink
Принимает команды для мигания всех светодиодов на всех rs485 портах.
Payload format
{
times: int,
interval: int,
}
Example
{
"times": 5,
"interval": 1000
}
- times - Количество миганий (от 1 до 255).
- interval - Интервал между миганиями в миллисекундах.
10. Обновление программного обеспечения плеера
PUB lm/update_service/version/version_list
Публикует список версий всех модулей. Топик всегда содержит актуальный список.
Payload format
[
{
id: int
version: str
subversion: Optional[str]
module: str
description: Optional[str]
}
]
- id - version id
- version - version number
- subversion - (Optional) subversion.
- module - module name
- description - (Optional) description
Example
[
{
"id": 1,
"version": "20",
"subversion": null,
"module": "frontend",
"description": null
}
]
PUB lm/update_service/update/update_list'
Публикует список обновлений. Топик всегда содержит актуальный список.
Payload format
[
{
id: int
version: str
status: str
filename: Optional[str]
update_path: str
extracted_path: Optional[str]
backup_path: Optional[str]
description: Optional[str]
}
]
- id - update id.
- version - update version.
- status - update status.
- filename - (Optional) update filename.
- update_path - path to update file.
- extracted_path - path to extracted files.
- backup_path - (Optional) update version.
- description - (Optional) description.
Example
[
{
"id": 1,
"version": "2022",
"status": "installed",
"filename": "lmp_2022.update",
"update_path": "/home/lightmaster/lightmaster/updater/lmp_2022.update",
"extracted_path": "/home/lightmaster/lightmaster/updates_store/lmp_2022",
"backup_path": "/home/lightmaster/lightmaster/backups_store/20220519181452_lmp_v0_full_backup",
"description": "A error occurred during installation update. Installation filed. None"
}
]
SUB lm/update_service/update/add_update
Добавляет обновление в базу.
Payload format
{
file: str
}
- file: str - путь до файла обновления
Example
{"file": "/home/lightmaster/projects/wess-group/lightmaster/updater/lmp_2022.update"}
SUB lm/update_service/update/check_update
Проверяет совместимость обновления.
Payload format
{
id: int
}
- id - id обновления
Example
{'id': 5}
SUB lm/update_service/update/initial_update
Совмещает добавление обновления в базу и его проверку.
Payload format
{
file: str
}
- file: str - путь до файла обновления
Example
{"file": "/home/lightmaster/projects/wess-group/lightmaster/updater/lmp_2022.update"}
SUB lm/update_service/update/install_update
Устанавливает обновление
Payload format
{
id: int
}
- id - id обновления
Example
{'id': 5}
SUB lm/update_service/update/restore_update
Откатывает обновление на предыдущую версию.
Payload format
{
id: int
}
- id - id обновления
Example
{'id': 5}
SUB lm/update_service/update/delete_update
Удаляет обновление и все связанные с ним файлы.
Payload format
{
id: int
}
- id - id обновления
Example
{'id': 5}
SUB lm/update_service/version/get_versions_list
Запрос на публикацию списка версий всех модулей.
Публикация происходит в топик lm/update_service/version/get_versions_list/response
В заголовок запроса могут быть включены необязательные поля:
- Correlation data
- Response topic
Corelation data любой уникальный идентификатор запроса. Зеркально устанавливается в публикуемый ответ и служит для идентификации ответа со стороны клиента.
Response topic если установлен то ответ публикуется в указанный топик вместо стандартного.
PUB lm/update_service/version/get_versions_list/response
Публикует ответ на запрос из топика lm/update_service/version/get_versions_list.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
[
{
id: int
version: str
subversion: Optional[str]
module: str
description: Optional[str]
}
]
- id - version id
- version - version number
- subversion - (Optional) subversion.
- module - module name
- description - (Optional) description
Example
[
{
"id": 1,
"version": "20",
"subversion": null,
"module": "frontend",
"description": null
}
]
SUB lm/update_service/version/get_module_version
Публикует версию конкретного модуля.
Публикация происходит в топик lm/update_service/version/get_module_version/response
В заголовок запроса могут быть включены необязательные поля:
- Correlation data
- Response topic
Corelation data любой уникальный идентификатор запроса. Зеркально устанавливается в публикуемый ответ и служит для идентификации ответа со стороны клиента.
Response topic если установлен то ответ публикуется в указанный топик вместо стандартного.
Payload format
{
module: str
}
- module - название модуля
Example
{'module': 'update_service'}
PUB lm/update_service/version/get_module_version/response
Публикует ответ на запрос из топика lm/update_service/version/get_module_version.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
id: int
version: str
subversion: Optional[str]
module: str
description: Optional[str]
}
- id - version id
- version - version number
- subversion - (Optional) subversion.
- module - module name
- description - (Optional) description
Example
{
"id": 1,
"version": "20",
"subversion": null,
"module": "frontend",
"description": null
}
SUB lm/update_service/update/get_updates_list
Запрос на публикацию списка всех обновлений добавленных в базу.
Публикация происходит в ветку lm/update_service/update/get_updates_list/response
В заголовок запроса могут быть включены необязательные поля:
- Correlation data
- Response topic
Corelation data любой уникальный идентификатор запроса. Зеркально устанавливается в публикуемый ответ и служит для идентификации ответа со стороны клиента.
Response topic если установлен то ответ публикуется в указанный топик вместо стандартного.
PUB lm/update_service/update/get_updates_list/response
Публикует ответ на запрос из топика lm/update_service/update/get_updates_list.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
[
{
id: int
version: str
status: str
filename: Optional[str]
update_path: str
extracted_path: Optional[str]
backup_path: Optional[str]
description: Optional[str]
}
]
- id - update id.
- version - update version.
- status - update status.
- filename - (Optional) update filename.
- update_path - path to update file.
- extracted_path - path to extracted files.
- backup_path - (Optional) update version.
- description - (Optional) description.
Example
[
{
"id": 1,
"version": "2022",
"status": "installed",
"filename": "lmp_2022.update",
"update_path": "/home/lightmaster/lightmaster/updater/lmp_2022.update",
"extracted_path": "/home/lightmaster/lightmaster/updates_store/lmp_2022",
"backup_path": "/home/lightmaster/lightmaster/backups_store/20220519181452_lmp_v0_full_backup",
"description": "A error occurred during installation update. Installation filed. None"
}
]
PUB lm/update_service/error
Публикует ошибки.
Выставляет заголовок Correlation data если он был установлен в запросе.
Payload format
{
msg: str
data: Any
}
- msg - contain error message
- data - contain related error data