Страница сервиса для управления трекером |-----| Страница на GitLab
На сервере постоянно запущен код, позволяющий включать и выключать трекер
При переходе на вышеупомянутый сайт сервиса открывается страница Swagger -- веб-утилита для отправки HTTP запросов (выделены на рисунке)
При нажатии на любой из запросов, он раскроется полностью и появится описание, информация о формате входных и выходных данных и возможных результатах запроса. Для того, чтобы отправить запрос необходимо нажать на кнопку Try it out
После этого появится большая кнопка Execute
, нажатие на которую и отправит запрос.
Наконец, после отправки запроса ниже появится информация об ответе на запрос, содержащая код ответа и его тело (основные данные).
200
, если все успешно200
, если все успешно500
, если в настройках трекера присутствует какая-либо ошибка (необходимо изменить настройки при помощи одного из следующих запросов)200
, если все успешно404
, если файл с настройками отсутствует на сервере (проблема настройки сервера, см. раздел Администрирование сервера
)200
, если все успешно400
, если отсутствовали какие-либо обязательные поля или присутствовали лишние/неправильные поля или переданы неверные данные404
, если файл с настройками отсутствует на сервере (проблема настройки сервера, см. раздел Администрирование сервера
)200
, если все успешно400
, если присутствовали лишние/неправильные поля или переданы неверные данные404
, если файл с настройками отсутствует на сервере (проблема настройки сервера, см. раздел Администрирование сервера
)При любом изменении настроек (ручном, через запросы, через GUI приложение о котором ниже)
необходимо сначала остановить трекер через запрос, изменить настройки и включить трекер обратно
Если Вы знакомы с протоколами DMX и ArtNet, можете пропустить эту часть. Здесь собраны основные термины, необходимые для работы с трекером
Каждому устройству, работающему по протоколу DMX назначается несколько каналов (channel), и каждый канал отвечает за изменение одной из характеристик устройства (например, в трекере используются каналы для "большого" и "маленького" шагов вращения по горизонтальной и вертикальной осям, а также канал, отвечающий за интенсивность освещения). На каждый канал передаются значения в диапазоне от 0 до 255. Номера каналов не являются произвольными, а автоматически назначаются контроллером.
Также, протокол DMX ограничен по количеству каналов (всего 512, а одно устройство часто требует более чем один канал), поэтому различные приборы можно объединять в так называемые вселенные (universe), каждая из которых поддерживает 512 каналов. Стандартный номер для universe - 0.
Существует несколько способов узнать, какие каналы были присвоены Вашему устройству.
Первый, самый простой, на некоторых фонарях номер первого назначенного канала будет отображен на светящемся экране самого фонаря, каналы занимаются по порядку, без скачков
Пример: фонарю требуется 5 каналов, а он отображает на дисплее 11й канал, значит им заняты 11, 12, 13, 14 и 15 каналы.
Количество каналов, занимаемых каждым устройством, а также назначение каждого из них -- характеристика данного устройства и не является универсальной. В случае с фонарями на -1 этаже МИЭМ 1й назначенный канал отвечает за "большой" шаг по горизонатали, 2й - "маленький" шаг, 3й - "большой" шаг по вертикали, 4й - "маленький" шаг по вертикали, 8й (1й+7) - интенсивность света.
Пример: На фонаре отображается, что он занимает каналы, начиная с 11го --> 11й канал - большой шаг по горизонтали, 12й - маленький шаг, 13й - большой шаг по вертикали, 14й - маленький шаг, 18й - интенсивность света
Также для определения каналов устройства, можно воспользолваться перебором следующего вида:
У контроллера может быть Web-интерфейс, с возможностью изменять значения на различных каналах. Попробовав изменить значения на каждом из каналов, можно найти нужные
Если же Web-интерфейса нет можно воспользоваться специализированными программами, например, QLight
Чаще всего назначенные каналы на одном и том же устройстве не меняются после перезапуска всей системы освещения (возможны исключения в случае изменения топологии схемы подключения), поэтому в большинстве случаев, достаточно один раз найти нужные каналы и записать их отдельно.
Все настройки трекера хранятся на сервере в файле с расширением .json
(в запросах данные настройки также имеют формат json
)
Список возможных настроек:
{
//Обязательные поля
"rtsp": "rtsp://0.0.0.0",
"controller_ip": "0.0.0.0",
"lights": [
{
"x_channel": 0,
"x_subchannel": 0,
"y_channel": 0,
"y_subchannel": 0,
"light_channel": 0,
"x_left_value": [0,0],
"x_right_value": [0,0],
"y_value": [0,0]
},
...
]
//Далее идут необязательные поля
"margins":[0,0,0,0],
"sections":0,
"analyzer_framerate":0
"blackout_delay":0.0,
"detection_threshold":0.0,
"artnet_framerate":0,
"universe":0, // Меняйте значение, только если Вы уверены, что делаете
"packet_size":0, // Меняйте значение, только если Вы уверены, что делаете
}
Расшифровка полей:
x_channel
и x_subchannel
разделенные запятой, когда фонарь повернут на крайнюю левую точку сцены (сначала указано значение для "крупного шага, потом для малого")x_channel
и x_subchannel
разделенные запятой, когда фонарь повернут на крайнюю правую точку сцены (сначала указано значение для "крупного шага, потом для малого")y_channel
и x_subchannel
разделенные запятой (сначала указано значение для "крупного шага, потом для малого")Настройки для фонарей в массиве lights должны быть указаны в порядке слева-направо относительно зала (то есть сначала настройки для крайнего левого фонаря, потом для второго слева, потом для 3-го слева и так далее)
[left, right, top, bottom]
int(blackout_delay * analyzer_framerate)
detection_threshold
, то он не будет учитыватьсяТекущие настройки трекера вы можете получить по ссылке (А точнее отправив GET запрос на получение настроек).
Если необходимо включить фонари, то в комнате, слева от сцены, открыть на левой стене верхнюю защитную дверцу, найти внутри кнопки с надписями "Reset", "К1", "К2", нажать на них последовательно.
Для подключения можно использовать локальную сеть Ethernet с помощью кабеля, либо через сеть Wi-Fi с подключенным VPN. Ссылка на конфигурацию VPN.
¶ Важно
Устройство, на котором запущен трекер должно иметь доступ к ip-адресу DMX-контроллера
Аналогично, должен быть доступ к rtsp потоку (Если поток защищен логином и паролем, то адрес указывается в формате
rtsp://login:password@address
)
Также для более удобного создания файла настроек был создан модуль Configurator.py
Помимо прочего он был выделен в отдельный .exe
файл, без привязки к остальному коду проекта
Данный файл можно найти на GitLab проекта в разделе Deployment/Releases. При нажатии на ссылку начнется скачивание настройщика
Данное приложение позволяет установить только обязательные настройки
Также, стоит учитывать, что настройка возможна только если у вас есть доступ и к камере и к контроллеру DMX/ArtNet (то есть вы должны быть в той же сети, локально или через vpn).
При подключении требуются RTSP url -- адрес потока с камеры и Controller IP -- IP адрес ArtNet контроллера
При настройке фонарей вводите параметры для каждого фонаря слева-направо, как показано на иллюстрации:
Самая главная проблема с фонарями на -1 этаже на момент написания текста в том, что их основание переодически поворачивают физически, из-за чего все настройки становятся неверными (сдвинутыми)
Симптомы:
Решение:
Перенастроить фонари заново, указав новые значения для границ сцены (поля x_left_value
, x_right_value
и, возможно, y_value
)
Какой-либо запрос возвращает ошибку 502, такое может произойти если отправить один и тот же запрос дважды с небольшим интервалом
Решение:
Отправить запрос повторно
При настройке фонаря, не получается повернуть его в левый/правый край сцены (тк как упирается он упиравется в границу)
Решение:
Фонари крутятся больше чем на 360 градусов, стоит направить фонарь повернув его больше чем на полный круг
Приложение конфигуратора не показывает картинку со сцены при настройке фонарей и/или фонари не реагриуют на изменение каких-либо значений
Симптомы:
Приложение выглядит так:
Причины:
Данный раздел подразумевает, что у вас есть доступ к серверу по ssh
Проект на сервере хранится в директории /home/misha/dmx-lights-auto-control
Помимо самих файлов проекта там присутствует папка виртуального окружения python с именем venv
, а также файл wsgi.py
, необходимый для запуска проекта при помощи uwsgi
Для корректной работы трекера в рабочей директории обязательно должны присутсвовать файлы settings.json
(хранящий настройки трекера) и config.json
(хранящий настройки сервера)
Структура файла config.json:
{
"enabled": true/false //Должен ли трекер быть активен в текущий момент, используется при запуске сервера для автоматического перезапуска трекера при неожиданном отключении
"settings_file": "Путь до settings.json",
"api_filename": "Путь до yml файла с описанием api для swagger"
}
На сервере настроен service для утилиты systemd (systemctl) -- dmx-lights.service
Следовательно код трекера должен быть запущен/остановлен следующими командами:
Запуск: sudo systemctl start dmx-lights.service
Остановка: sudo systemctl stop dmx-lights.service
Повесить камеру напротив сцены (того места, которое будет сниматься). Аналогично повесить DMX-фонар(ь/и). Фонари подключить к контролеру с помощью xlr-проводов. Контролер, камеру, компьютер подключить к Switch-у с помощью Ethernet-кабелей.
Для установки будем использовать командную строку на Windows
Во-первых, необходимо перейти в папку, в которой будет располагаться проект (cd <path-to-dir>
)
Для установки необходимо склонировать репозиторий командой:
git clone https://git.miem.hse.ru/mvmoiseev/dmx-lights-auto-control.git
Далее нужно перейти в папку с проектом (cd dmx-lights-auto-control
) и создать виртуальное окружение командой:
py -m venv venv
или python -m venv venv
После этого активируем виртуальное окружение:
venv\Scripts\activate
После этого в начале строки, перед текущим путем должно быть написано (venv-win) или (venv)
Далее устанавливаем все необходимые зависимости при помощи команды:
pip install -r requirements.txt
Далее необходимо изменить файл config.json, указав полный путь к web_api.yml и settings.json (settings.json лежит в корне проекта, web_api.yml в папке web_api)
Наконец, необходимо создать файл с расширением .json, в котором будут содержаться все настройки (список настроек см. выше в разделе Настройки трекера)
(Можно создать настройки при помощи POST запроса, описанного выше)
Для активации автоматического управления фонарями необходимо запустить следующую команду:
py main.py
или python main.py
python main.py
или python3 main.py
После этого на странице localhost появится интерфейс swagger для управления трекером (инструкцию см. выше)
Важно, при запуске с собственной машины, в самом верху swagger-страницы стоит выбрать в поле
Schemes
схему HTTP