SmartStation
Программное обеспечение
для систем безопасности

Документация XML-RPC API

Удаленное взаимодействие (отправка команд) осуществляется по протоколу XML-RPC. Сервер XML-RPC доступен на порту номер 12324 (убедитесь, что доступ по этому порту не запрещен встроенным или внешним межсетевым экраном). Протестированные реализации XML-RPC:

xmlrpc-c library

qxmlrpc

Выполнение удаленных команд осуществляется в рамках авторизованного сеанса. Сервер предоставляет методы для открытия и завершения сессии, а все остальные методы получают в качестве первого параметра идентификатор сессии. Все удаленные вызовы выполняются с правами пользователя, указанного при открытии авторизованного сеанса.

Для открытия сессии (авторизованного сеанса) используется метод System.Login, который получает на вход два строковых параметра login и password. В качестве результата возвращается строка с идентификатором сессии. Если авторизация не пройдена (логин или пароль неправильны, или у оператора с таким логином нет прав для удаленного взаимодействия), генерируется исключение с текстом "Authentication failed" и кодом -507. Идентификатор сессии должен использоваться в качестве первого параметра всех других вызовов xmlrpc. Если в рамках одной сессии не происходит взаимодействия в течение 60 секунд, сессия автоматически закрывается.
Для закрытия сессии используется метод System.Logout, который получает на вход идентификатор сессии, полученный в результате успешного выполнения System.Login. Метод ничего не возвращает в случае успеха. Если сессии нет, генерируется исключение (как при неудачном логине).

ВНИМАНИЕ! Далее в описании методов не указано, но это касается всех методов: первым параметром (нулевым) должен передаваться идентификатор сессии, полученный в результате успешного вызова System.Login, а для пользователя с заданным логином обязательно должно быть выставлено право на удаленное взаимодействие (управление)! Если идентификатор сессии некорректен, генерируется исключение.

Для выполнения некоторых вызовов у пользователя, от имени которого осуществляется взаимодействие, должны быть дополнительные права (помимо обязательного для всех права на удаленное взаимодействие). Если у пользователя нет необходимых прав для выполнения запрашиваемого вызова, генерируется исключение с текстом "Access forbidden" и кодом -507.

Методы

Методы для сущности Computer

Методы для сущности Monitor

Методы для сущности Templates

Методы для сущности Camera

Методы для сущности Archive


Методы для сущности Computer


Computer.GetEvents

Возвращает события из архива.
Ответ представляет собой список map'ов. Каждый map состоит из следующих полей:

Timestamp (String) - метка времени события (в миллисекундах с начала эпохи).
Description (String) - описание события.
SourceType (String) - тип сущности источника события ("device" - устройство, "channelav" - аудио/видео канал, "channeldi" - тревожный вход, "channeldo" - реле, "unknown" - неизвестно).
SourceUuid (String) - uuid сущности источника события.
Level (Int) - уровень события (0 - "неизвестно", 1 - "информационное сообщение", 2 - "предупреждение", 4 - "критическое событие", 16 - "нет соединения", 32 - "выключено в ЦУУ", 63 - "максимальное значение").

При некорректном значении времени начала будет возвращён пустой список.

Входные параметры: 
String - время, начиная с которого нужно получать события, в миллисекундах от начала эпохи Unix.
Int - максимальное количество событий в ответе. Отрицательные значения обозначают "все".
Выходные параметры:
List - события.


Computer.VideoChannels

Получить список видеоканалов
Входные параметры: 
нет
Выходные параметры: 
List Список UUID-ов каналов


Computer.VideoChannels.Ext

Получить информацию по всем видеоканалам
Входные параметры: 
нет
Выходные параметры: 
List > - информация по видеоканалам, где внутренний список содержит 2 элемента: первый - Uuid канала, второй - текстовое описание Description канала


Computer.UnitedStorage.AddVolume

Добавить файл в состав объединенного хранилища.
Входные параметры: 
String - имя файла хранилища
Выходные параметры: 
Bool - true в случае успеха операции


Computer.UnitedStorage.RemoveVolume

Удалить файл из состава объединенного хранилища.
Входные параметры: 
String - имя файла хранилища
Выходные параметры: 
Bool - true в случае успеха операции


Computer.UnitedStorage.ClearVolume

Очистить файл хранилища.
Входные параметры: 
String - имя файла хранилища
Выходные параметры: 
Bool - true в случае успеха операции


Computer.UnitedStorage.SetVolumeToReadOnly

Установить режим read-only для файла хранилища.
Входные параметры: 
String - имя файла хранилища
Bool - true: read-only, false: read-write
Выходные параметры: 
Bool - true в случае успеха операции


Computer.UnitedStorage.SetTimeDepth

Установить максимальную глубину хранения данных по времени.
Входные параметры: 
Int - максимальная глубина (в минутах)
Выходные параметры: 
Bool - true в случае успеха операции


Computer.UnitedStorage.Boundaries

Получить временнЫе границы файла хранилища.
Входные параметры: 
String - имя файла хранилища
Выходные параметры:
StringList - Начало и конец файла в юниксовом формате времени, преобразованном из longlong в строки


Computer.MonitorsCount

Получить количество мониторов.
Входные параметры: 
нет
Выходные параметры: 
Int - количество мониторов


Computer.PTZ.AddPreset

Отправка команды на создание предустановки ptz-устройства.

Входные параметры: 
String - UUID PTZ-канала
Int - индекс предустановки
String - имя (описание) предустановки

Выходные параметры: 
Bool - true в случае успешной отправки команды ptz-устройству от сервера


Computer.PTZDevices

Получить список PTZ устройств
Входные параметры: 
нет
Выходные параметры: 
List - список UUID-ов PTZ устройств


Computer.PTZDevices.Ext

Получить информацию по всем PTZ-каналам
Входные параметры: 
нет
Выходные параметры: 
List> - информация по PTZ-каналам, где внутренний список содержит 2 элемента: первый - Uuid PTZ-канала, второй - текстовое описание Description PTZ-канала


Computer.PTZCruiseList

Получить список маршрутов PTZ.
Входные параметры: 
String - UUID PTZ канала
Выходные параметры: 
Map - массив UUID-ов и описаний маршрутов


Computer.PTZPresetList

Получить список предустановок PTZ.
Входные параметры: 
String - UUID PTZ канала
Выходные параметры: 
Map - массив ID и описаний предустановок


Computer.PTZ.RemovePreset

Отправка команды на удаление предустановки ptz-устройства.

Входные параметры: 
String - UUID PTZ-канала
Int - индекс предустановки

Выходные параметры: 
Bool - true в случае успешной отправки команды ptz-устройству от сервера


Computer.PTZStartCruise

Запустить маршрут PTZ.
Входные параметры: 
String - UUID PTZ канала
String - UUID маршрута (если передать пустой UUID, произойдет остановка текущего запущенного маршрута)
Выходные параметры: 
Bool - true в случае успеха операции


Computer.PTZGoToPreset

Перейти к preset-у (вызвать соответствующий метод для IPtzChannel-a).
Входные параметры: 
String - UUID PTZ устройства
Int - номер preset-a
Выходные параметры: 
Bool - true в случае успеха операции


Computer.PTZ.GoToPreset

Отправка команды на перемещение к предустановленной позиции для ptz-устройства.

Входные параметры: 
String - UUID PTZ-канала
Int - индекс предустановки

Выходные параметры: 
Bool - true в случае успешной отправки команды ptz-устройству от сервера


Computer.PTZ.IsCapable

Получить набор доступных операций для ptz-устройства.
Входные параметры: 
String - UUID PTZ канала
Выходные параметры: 
List - список кодов доступных ptz-операций
Список кодов основных ptz-операций
1 - переключатель для дворников
6 - команда приближения
7 - команда отдаления
8 - команда ближней фокусировки
9 - команда дальней фокусировки
10 - команда на увеличение апертуры
11 - команда на уменьшение апертуры
12 - наклон. команда движения вверх
13 - наклон. команда движения вниз
14 - панорамирование. команда движения влево
15 - панорамирование. команда движения вправо
16 - панорамирование/наклон. команда движения вверх и влево
17 - панорамирование/наклон. команда движения вверх и вправо
18 - панорамирование/наклон. команда движения вниз и влево
19 - панорамирование/наклон. команда движения вниз и вправо


Computer.PTZ.Control

Отправка заданной команды на выполнение ptz-устройству.
Входные параметры: 
String - UUID PTZ канала
Int - код команды (список представлен в Computer.PTZ.IsCapable)
Bool - флаг запуска/останова (true/false соответственно)
Int - скорость по оси X. Должно принимать значения из интервала [-7; 7]
Int - скорость по оси Y (используется только для команды pan+tilt). Должно принимать значения из интервала [-7; 7]
Выходные параметры: 
Bool - true в случае успешной отправки команды ptz-устройству от сервера


Computer.Templates

Получить список раскладок.
Входные параметры: 
нет
Выходные параметры: 
List - список UUID-ов раскладок


Computer.Templates.Ext

Получить информацию по созданным раскладкам
Входные параметры: 
нет
Выходные параметры: 
List> - информация по созданным раскладкам, где внутренний список содержит 2 элемента: первый - Uuid раскладки, второй - текстовое описание Description раскладки


Computer.ServerTime

Возвращает текущее время сервера в миллисекундах от начала эпохи Unix.
Метод является технологическим и может быть вызван в технологическом сеансе.

Входные параметры: 
нет
Выходные параметры:
String - время сервера.


Computer.SiblingGroupList

Получить список видео- и аудиоканалов с данными о родстве и ролях
Метод устарел и оставлен для совместимости. Рекомендуется использовать Computer.SiblingGroupList.Ext

Входные параметры:
нет

Выходные параметры:
List channelInfo> Список данных об источниках
ChannelInfo состоит из:
String description - Описание канала
String uuid - Uuid канала
String groupUuid - Uuid группы (совпадает с uuid-ом PrimaryChannel)
Int roles - битовая маска ролей

Назначение битов в маске ролей
0x01 - выполнение роли основного потока. Для канала, обеспечивающего видеоданные, идентично роли видеопотока с высоким разрешением (0x02). Если присутствуют только аудиоданные, то соответствует роли аудиопотока (0x08).
0x02 - канал видеопотока с высоким разрешением
0x04 - канал видеопотока с низким разрешением
0x08 - канал аудиопотока


Computer.SiblingGroupList.Ext

Получить список каналов (видео, аудио, цифровые входы) с данными о родстве, ролях и параметрах

Входные параметры:
нет

Выходные параметры:
List channelInfo> Список данных об источниках
ChannelInfo состоит из:
String description - Описание канала
String uuid - Uuid канала
String groupUuid - Uuid группы (совпадает с uuid-ом PrimaryChannel)
Int roles - битовая маска ролей
Map Parameters - параметры (состояние) канала, каждый из которых представлен парой "имя параметра - значение параметра"

Назначение битов в маске ролей roles:
0x01 - выполнение роли основного потока. Для канала, обеспечивающего видеоданные, идентично роли видеопотока с высоким разрешением (0x02). Если присутствуют только аудиоданные, то соответствует роли аудиопотока (0x08).
0x02 - канал видеопотока с высоким разрешением
0x04 - канал видеопотока с низким разрешением
0x08 - канал аудиопотока
0x10 - канал DI
0x20 - канал управления DO
0x40 - канал управления PTZ

Если канал имеет только один видеопоток, в маске ролей roles будут установлены оба бита 0x02 ("видеопоток высокого разрешения") и 0x04 ("видеопоток низкого разрешения").

Состав Parameters:
Специфический для каждого типа канала
Для видео и аудио-каналов <_Int StreamingPort_>, где StreamingPort - порт, по которому производится стриминг медиаданных по протоколу rtmp
Для DO <_Int channelNo_, Bool state>, где channelNo - порядковый номер DO канала, а state - состояние канала (true - замкнутый, false - разомкнутый)
Для остальных типов каналов на данный момент приходят пустые параметры


Computer.Subscribe

Подписаться на XmlRpc-уведомления. XmlRpc-уведомления используются для оповещения клиента об изменении информации на стороне сервера. Подписывающийся клиент должен:

  • Реализовать у себя XmlRpc-функцию updateEvent, которая будет вызываться при возникновении событий (влекущих за собой обновление интересующей клиента информации) на сервере. В качестве параметра будет передаваться id подписчика, идентификатор подсистемы (соответствующей произошедшему событию), а также список строк List, содержимое которого зависит от конкретной подсистемы. Функция должна возвращать флаг статуса подписки (если клиент желает сохранить подписку, то - true, иначе - false).
  • Реализовать у себя функцию poll. Она вызывается сервером для опроса подписанных клиентов на наличие доступа к ним, чтобы в случае его отсутствия удалить клиент из списка зарегистрированных подписчиков. С помощью данной функции клиент определяет активность сервера. Если сервер перезапустит программу, то очередной poll-запрос не придет, а значит необходимо заново переподписаться. Входной параметр должен содержать id подписчика. Функция должна возвращать флаг статуса подписки (если клиент желает сохранить подписку, то - true, иначе - false).

Поддерживаемые оповещения:

Идентификатор подсистемы Описание Функция для получения информации
templates Добавлена новая или удалена существующая раскладка Computer.Templates.Ext
videochannels Изменился состав видеоканалов Computer.VideoChannels.Ext
ptzchannels Изменился состав PTZ-каналов Computer.PTZDevices.Ext
template Изменилась выбранная раскладка хотя бы на одном мониторе Monitor.Template.Ext
recordstatus Включилась или выключилась запись хотя бы по одной камере Camera.RecordStatus.Ext
signalstatus Появился или пропал сигнал хотя бы по одной камере Camera.SignalStatus.Ext
zoomed Развернут на весь экран или свернут хотя бы один фрейм хотя бы на одном мониторе Monitor.Zoomed.Ext
event Информация о событиях, происходящих в режиме реального времени. При возникновении события, сервер вызывает функцию клиента updateEvent, в параметрList которой передает информацию о данном событии. 
В List данные о событии представлены в следующей форме:
String - Timestamp (в миллисекундах с начала эпохи)
String - Описание события
String - Тип сущности источника события ("device" - устройство, "channelav" - аудио/видео канал, "channeldi" - тревожный вход, "channeldo" - реле, "unknown" - неизвестно)
String - uuid сущности источника события
String - Уровень события (0 - "неизвестно", 1 - "информационное сообщение", 2 - "предупреждение", 4 - "критическое событие", 16 - "нет соединения", 32 - "выключено в ЦУУ", 63 - "максимальное значение")
не требуется

Входные параметры: 
Int - Интервал опроса клиента в минутах (polling)
Int - Порт, который прослушивает клиентский XmlRpc-сервер
List - Список интересующих оповещений. Если список пуст, то клиент будет получать все типы оповещений
Выходные параметры: 
Int - id клиента


Computer.Unsubscribe

Отписаться от XmlRpc-уведомлений, на которые клиент подписался с использованием Computer.Subscribe
Входные параметры:
Int - id клиента
Выходные параметры: 
Bool - признак наличия клиента с данным id на сервере


Методы для сущности Monitor

 

Monitor.DisplayCamera

Показать камеру во весь экран.
Входные параметры: 
Int - порядковый номер монитора
String - UUID камеры
Выходные параметры: 
Bool - true в случае успеха операции


Monitor.FramesCount

Получить количество фреймов на мониторе.
Входные параметры: 
Int - порядковый номер монитора
Выходные параметры: 
Int - количество фреймов


Monitor.AssignCamera

Отобразить камеру во фрейме на мониторе.
Входные параметры: 
Int - порядковый номер монитора
Int - порядковый номер фрейма 
String - UUID камеры (Null - ничего не показывать в этом фрейме)

Выходные параметры: 
Bool - true в случае успеха операции

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


Monitor.AssignedCamera

Получить UUID камеры в указанном мониторе и фрейме.
Входные параметры: 
Int - порядковый номер монитора
Int - порядковый номер фрейма

Выходные параметры: 
String - UUID камеры во фрейме или Null, если такого фрейма нет или камера не выбрана


Monitor.DisplayTemplate

Включить раскладку на мониторе.
Входные параметры: 
Int - порядковый номер монитора
String - UUID раскладки
Выходные параметры: 
Bool - true в случае успеха операции


Monitor.Template

Получить UUID раскладки.
Входные параметры: 
Int - порядковый номер монитора
Выходные параметры: 
String - UUID раскладки


Monitor.Template.Ext

Получить список раскладок, включенных на всех мониторах
Входные параметры: 
нет
Выходные параметры: 
List> - информация по раскладкам, включенным на мониторах, где внутренний список содержит 3 элемента: первый - номер монитора, начиная с "0", второй - Uuid раскладки, третий - текстовое описание Description раскладки. Количество элементов внешнего списка равно количеству мониторов


Monitor.SetZoom

Развернуть/свернуть фрейм.
Входные параметры: 
Int - порядковый номер монитора
Int - порядковый номер фрейма
Bool - True: разворачивает фрейм, False: сворачивает развернутый фрейм, если указан именно он
Выходные параметры: 
Bool - True в случае успеха операции


Monitor.Zoomed

Получить номер развернутого фрейма.
Входные параметры: 
Int - порядковый номер монитора
Выходные параметры: 
Int - порядковый номер развернутого фрейма или -1, если никакой фрейм не развернут


Monitor.Zoomed.Ext

Получить список развернутых на каждом мониторе фреймов
Входные параметры: 
нет
Выходные параметры: 
List> - информация по развернутым на каждом мониторе фреймам, где внутренний список содержит 2 элемента: первый - порядковый номер развернутого на весь экран фрейма или -1, если развернутого фрейма нет, второй - номер монитора. Количество элементов внешнего списка равно количеству мониторов


Методы для сущности Templates

 

Template.Description

Получить название раскладки.
Входные параметры: 
String - UUID раскладки
Входные параметры: 
String - название раскладки


Template.AssignCamera

Назначить камеру в фрейме на указанной раскладке 
Входные параметры:
 
String - UUID раскладки
Int - порядковый номер фрейма
String - UUID камеры (Null - ничего не показывать в этом фрейме)
Выходные параметры: 
Bool - true в случае успеха операции

Примечание: камера будет назначена в том случае, если указанный фрейм является видеофреймом


Template.AssignedCamera

Получить UUID камеры в указанном фрейме раскладки 
Входные параметры:
 
String - UUID раскладки
Int - порядковый номер фрейма
Выходные параметры: 
String - UUID камеры во фрейме или Null, если такого фрейма нет или камера не выбрана


Template.FramesCount

Получить количество фреймов в раскладке
Входные параметры: 
String - UUID раскладки
Выходные параметры: 
Int - количество фреймов в раскладке


Методы для сущности Camera

 

Camera.RecordStatus

Получить состояние записи.
Входные параметры: 
String - UUID канала
Входные параметры: 
Bool - состояние записи


Camera.RecordStart

Включить запись для камеры.
Входные параметры: 
String - UUID канала
Bool - true: пишем поток высокого разрешения. false: пишем поток низкого разрешения
Выходные параметры: 
Bool - true в случае успеха операции


Camera.RecordStartWithDuration

Включить запись для камеры на определенное время, и по прошествии данного времени автоматически завершить запись (автоматически учитываются множественные запросы, реализуется подсчет запросов).
Входные параметры: 
String - UUID камеры
Bool - true: пишется поток высокого разрешения, false: низкого, 
Int - длительность записи в секундах
Выходные параметры: 
Bool - true в случае успеха операции


Camera.RecordStop

Выключить запись для камеры.
Входные параметры: 
String - UUID канала
Выходные параметры: 
Bool - true в случае успеха операции


Camera.RecordStatus.Ext

Получить состояние записи по всем видеоканалам
Входные параметры: 
нет
Выходные параметры: 
List> - информация по состоянию записи по всем видеоканалам, где внутренний список содержит 2 элемента: первый - Uuid канала, второй - "2", если включена запись высокого разрешения, "1" - включена запись низкого разрешения, "0" - запись выключена.


Camera.SignalStatus

Получить признак наличия видеосигнала по камере (IDataSource::flags(0)&IDataSource::FL_NOSIGNAL==0).
Входные параметры: 
String - UUID канала
Выходные параметры: 
Bool - признак наличия видеосигнала


Camera.SignalStatus.Ext

Получить признак наличия видеосигнала по всем каналам
Входные параметры: 
нет
Выходные параметры: 
List> - список признаков наличия видеосигнала по всем видеоканалам, где внутренний список содержит 2 элемента: первый - Uuid канала, второй - "true", если сигнал есть (IDataSource::flags(0)&IDataSource::FL_NOSIGNAL==0), "false" - иначе


Camera.SetLaterBufferDepth

Изменить глубину предзаписи для камеры.
Входные параметры: 
String - UUID канала
Int - глубина предзаписи в секундах
Выходные параметры: 
Bool - true в случае успеха операции


Camera.GetLaterBufferDepth

Получить глубину предзаписи для данной камеры.
Входные параметры: 
String - UUID канала
Выходные параметры: 
Int - глубина предзаписи в секундах


Camera.ImageShot

Получить стоп-кадр для данной камеры требуемой геометрии. Если требуемая ширина и высота равны нулю, то возвращается изображение оригинального разрешения. Если только ширина или только высота равна нулю, то заданная нулем размерность рассчитывается по заданной ненулевой путем пересчета с сохранением пропорций. 
Входные параметры:
String - UUID канала
Int - требуемая ширина
Int - требуемая высота
Выходные параметры:
ByteArray - стоп-кадр в формате JPEG


Методы для сущности Archive

 

Archive.Boundaries

Получить границы архива для источника.
Входные параметры: 
String - UUID канала
Выходные параметры: 
List - List(0) - время начала первой записи в архиве в миллисекундах, List(1) - время конца последней записи в архиве в миллисекундах


Archive.GetFragments

Получить один фрагмент для источника, начиная с момента времени.
Входные параметры: 
String - UUID канала
DateTime - время отсчета в миллисекундах
Выходные параметры: 
List - List(0) - начало фрагмента в миллисекундах, List(1) - конец фрагмента в миллисекундах


Archive.GetFragments2

Получить список фрагментов (не более заданного количества) для источника, начиная с момента времени.
Входные параметры: 
String - UUID канала
String - время отсчета в миллисекундах
Int - максимальное количество фрагментов
Выходные параметры: 
List - List(i) - начало фрагмента в миллисекундах, List(i+1) - конец фрагмента в миллисекундах

Archive.GetFragments2.Ext

Получить список фрагментов (не более заданного количества) для источника, начиная с момента времени.
Входные параметры: 
String - UUID канала
String - время отсчета в миллисекундах
Int - максимальное количество фрагментов
Выходные параметры: 
List<String> - List(i) - начало фрагмента в миллисекундах, List(i+1) - конец фрагмента в миллисекундах, List(i+3) - тип фрагмента

ПОДДЕРЖИВАЕМОЕ ОБОРУДОВАНИЕ Весь список
  • Arecont Vision
  • AXIS
  • CBC
  • JVC
  • Smartec
  • Samsung
  • Panasonic
  • Alteron
  • Beward
  • AirLive
  • Bspsecurity
  • Brickcom
  • BiKal IP CCTV
  • Clairvoyant MVR
  • Sony
  • Siqura
  • Bosch
  • CNB Technology inc.
  • ACTi Corporation
  • Etrovision
  • 3S Vision Surveillance System Service
  • Zavio
  • BASLER
  • Alinking
  • CohuHD
  • Canon
  • Edimax Technology
  • Intellinet Network Solutions
  • Airlink101
  • AVTECH Corporation
  • Cisco Systems, Inc
  • Compro Technology
  • D-Link
  • LevelOne
  • GVI Security
  • IndigoVision
  • Merit Lilin
  • Messoa
  • Prime
  • Planet
  • Siemens
  • Sitecom
  • SuperCircuits
  • Topica
  • TRENDNet
  • Verint
  • Vista
  • Vitek
  • Weldex
  • Always Better Service
  • Absolutron
  • Acumen
  • A-MTK technology
  • Asoni
  • AVIOSYS
  • AVS Uriel