Документ описывает "низкоуровневый" API (документация актуальна для версии API 1.4), который позволяет управлять устройством из внешних программ и плагинов через механизм сокетов.
Содержание:
- help
- exit
- Авторизация подключения
- apikey
- GET-команды
- getstatus
- getstatusapi
- getprofiles
- getprofile
- getcountleds
- getmode
- getfps
- getleds
- getcolors
- lock
- unlock
- setcolor
- setgamma
- setsmooth
- setbrightness
- setprofile
- setstatus
- setleds
- setmode
- newprofile
- deleteprofile
Фактически, из любой ОС, вы можете подключиться через терминал и посылать устройству команды в режиме реального времени.
>> telnet 127.0.0.1 3636 << Lightpack API v1.4 (type "help" for more info)
На практике для написания плагинов это не очень удобно из-за того, что постоянно приходится контролировать посылки в порт и ответы сервера. Поэтому мы создали специальный класс-обёртку для языка Python, которая называется pyLightpack. С его помощью вы изолируете себя от работы с сокетами и сможете сосредоточиться непосредственно на плагинах. Писать управляющие Лайтпаком скрипты с её помощью проще, чем настраивать конфиг для Quake.)
Однако, для точного понимания того, как именно функционирует API мы приводим здесь полный список команд с которыми он взаимодействует. Технически это взаимодействие реализуется через сервер, который при старте усправляющего софта Лайтпака открывает и "слушает" порт 3636 (по умолчанию).
<< help
Команда выводит самую актуальную справку по текущей версии API и доступна постоянно.
>> exit << Goodbye!
Команда закрывает подключение к серверу и доступна постоянно.
Начиная с версии 1.1 API поддерживает авторизацию внешних подключений. Это простейший путь защиты от несанкционированных подключений к устройству извне. Он предполагает посылку ключа авторизации, который известен лишь серверу. Вы всегда можете сгенерировать новый ключ авторизации, или вовсе отключить её в настройках программы захвата Лайтпака. Если авторизация включена, то единственный способ пройти её и получить доступ к остальным командам это команда
Возвращаемые значения: ok или fail
Отправляет серверу строку ключа авторизации. Если строка совпадает с заданной в программе, сервер авторизует подключение и у пользователя появляется доступ ко всем командам API.
>> apikey:{209e6248-b0d4-4757-a355-9593ee34f700} << fail >> apikey:IDDQD << ok
Работают при любых настройках подключения, даже в том случае когда управление устройством не передано API
Возвращаемые значения: on, off, device error или unknown
Возвращает состояние устройства, которое, будучи подключенным к ПК может быть выключено (светодиоды не горят), или включено в настройках программы захвата. Команда возвращает device error в случае ошибки доступа к устройству (иконка в трее меняется на запрещающую). Unknown -- маловероятное событие, которое происходит при истечении таймаута запроса к GUI (~1 с.)
>> getstatus << status:on
Возвращаемые зачения: idle или busy
Возвращает текущее состояние API устройства. API занят в том случае, если управление устройством осуществляется извне (вами, вашим скриптом, кем-то по сети и пр.) и свободен если устройством управляет программа захвата. До тех пор пока не будет выполнена команда lock (см. ниже) API не может быть занят.
>> getstatusapi << statusapi:idle
Возвращает полный список профилей настроек управляющей программы через ; . Профили хранятся в папке Profiles.
>> getprofiles << profiles:Lightpack;test07;New profile 1;
Возвращает имя текущего активного профиля.
>> getprofile << profile:test07
Начиная с версии 5.8 управляющей программы у пользователя появилась возможность управлять с её помощью разными устройствами. Для некоторых из них пользователь может самостоятельно выбирать количество зон захвата от 1 до 50 по количеству используемых светодиодов.
Команда возвращает общее количество всех зон захвата (активных и отключенных) в текущем профиле.
>> getcountleds << countleds:10
Возвращаемые значения: ambilight, moodlamp
Команда возвращает текущий режим работы подсветки. ambilight -- режим захвата картинки, moodlamp -- режим простой подсветки.
>> getmode << mode:moodlamp
Возвращает значение счётчика FPS (Frames Per Second) для режима захвата картинки.
>> getfps << fps:33.0
Возвращает настройки зон захвата в формате N-X,Y,W,H; Где N -- номер области захвата. X,Y -- координаты левого верхнего угла области. W,H -- ширина и высота области в пикселях.
>> getleds << leds:0-1157,972,637,117;1-1827,568,93,469;2-977,0,430,95;3-1818,93,102,462;4-1413,0,496,92;5-523,0,461,100;6-0,0,530,94;7-0,95,94,449;8-0,557,89,484;9-143,977,671,103;
Возвращает цвет, выводимый на светодиоды в настоящий момент времени в формате N-R,G,B; Где N -- номер светодиода/области захвата. R,G,B -- соответствующие цветовые компоненты.
>> getcolors << colors:0-102,96,82;1-75,47,18;2-67,55,46;3-104,77,34;4-80,67,40;5-113,90,52;6-110,91,51;7-130,110,67;8-81,71,45;9-100,100,87;
Могут быть выполнены в том случае, когда контроль над устройством передан API посредством команды lock
Возвращаемые значения: success или busy
Передаёт контроль над устройством от программы захвата вашему внешнему скрипту. До тех пор пока не выполнена эта команда, через API могут выполняться лишь GET-команды.
>> lock << lock:success
Возвращаемые значения: success или not locked
По аналогии с предыдущей командой передаёт управление от вашего скрипта обратно программе Лайтпака. Все настройки берутся из текущего профиля. Именно благодаря этому простейшему механизму передачи приоритета становится возможным полноценно использовать все фичи основной программы захвата в ваших скриптах.
>> unlock << unlock:not locked
Синтаксис: setcolor:N-R,G,B
Возвращаемые значения: ok, error, busy или not locked
Здесь и далее в set-командах ответ busy означает, что API уже "залочен" другим скриптом, пользователем через сеть и пр. См. команду lock.
Основная команда для установки цвета. N -- номер светодиода (совпадает с номером его зоны захвата). R,G,B -- значение яркости каждого канала указанного светодиода устанавливается числом от 0 до 255. Так же этой командой можно установить цвета на несколько или все светодиоды одновременно. Для каждого из них конструкцию N-R,G,B нужно указывать через ;
>> setcolor:1-0,255,0;5-255,200,30; << ok
Синтаксис: setgamma:N
Возвращаемые значения: ok, error, busy или not locked
Устанавливает уровень гамма-коррекции для устройства в диапазоне от 0.01 до 10.00 .
>> setgamma:2.15 << ok
Синтаксис: setsmooth:N
Возвращаемые значения: ok, error, busy или not locked
Устанавливает степень плавности смены цветов для устройства в диапазоне от 0 (плавность отключена) до 255 .
>> setsmooth:100 << ok
Синтаксис: setbrightness:N
Возвращаемые значения: ok, error, busy или not locked
Устанавливает степень яркости для всех светодиодов устройства одновременно в диапазоне от 0 (подсветка выключена) до 100 .
>> setbrightness:80 << ok
Синтаксис: setprofile:<name>
Возвращаемые значения: ok, error, busy или not locked
Включает заданный профиль настроек. Список профилей доступен по команде getprofiles (см. выше).
>> setprofile:My HD video << ok
Возможные параметры: on или off
Возвращаемые значения: ok, error, busy или not locked
Включает и выключает устройство. Аналог кнопки "вкл/выкл подсветку" в настройках программы.
>> setstatus:off << ok
Возвращаемые значения: ok, error, busy или not locked
Устанавливает положение и размер зон захвата в формате N-X,Y,W,H; Где N -- номер области захвата. X,Y -- координаты левого верхнего угла области. W,H -- ширина и высота области в пикселях.
>> setleds:-1157,972,637,117;1-1827,568,93,469;2-977,0,430,95;3-1818,93,102,462;4-1413,0,496,92;5-523,0,461,100;6-0,0,530,94;7-0,95,94,449;8-0,557,89,484;9-143,977,671,103; << ok
Синтаксис: setmode:<mode-name>
Возвращаемые значения: ok, error, busy или not locked
Устанавливает режим работы подсветки. ambilight -- режим захвата картинки, moodlamp -- режим простой подсветки.
>> setmode:moodlamp << ok
Синтаксис: newprofile:<profile-name>
Возвращаемые значения: ok, error, busy или not locked
Сохраняет текущую конфигурацию устройства и настройки Призматика в профиль.
>> newprofile:my-new-profile << ok
Синтаксис: deleteprofile:<profile-name>
Возвращаемые значения: ok, error, busy или not locked
Удаляет любой (указанный) профиль настроек Призматика, кроме текущего.
>> deleteprofile:my-old-profile << ok