HikVision
Общая постановка задачи
Компания HikVision выпускает теле-коммунникационные панели для переговорных комнат. Для управления ими предоставляется ПО HIKVISIOM Mng.
Эта среда управления позволяет удаленно зарегистрировать и изменять рабочие характеристики панели.
Кроме того, в составе среды управления есть интеграционный сервер, который позволяет удаленно по REST API,
обратится к серверу и также изменить состояние теле-панели.
Интеграционный модуль Inspark реализовывает следующие функции:
- вычитать все панели из сервера HikVision, заполнить данные о панелях в Устройства Inspark.
- периодически перезапрашивать сервер HikVision, обновлять данные о панелях.
- Отправить команду Включить Панель
- Отправить команду Выключить Панель
Модель Устройства
Тип устройства: HIKVision
Топик устройства: hikvision
Модель Устройства:
Параметр | Тип | Топик | Комментарий |
---|---|---|---|
DeviceName | string | devicename | имя устройства |
DeviceIP | string | deviceip | IP адрес |
Device Port | int | deviceport | порт |
onoff | signal | onoff | 1- online, 0- offline |
Volume | int | volume | громкость |
Brightness | int brightness | яркость | |
OS Device | string | os | ОС устройства |
Настройка устройств HIKVision в Inspark
В типовой конфигурации создаются схемы подключения с устройствами типа HIKVision.
Инфо
Важно! в Адресс схемы подключения внести идентификационный номер (любое уникальное число).
При привязке ТК к объекту будут созданы Unit (реальные устройства). В Серийные номера Unit необходимо
прописать DevID устройства в системе HikVision.
Алгоритм работы модуля
В настройках модуля задаются: - http url сервера HikVision, - AP, SK идентификаторы
Для приема команд создается очередь в ArtemisMQ : CommandHIKVision
При старте модуль выполняет следующее:
- вычитывает из Inspark все Unit Типа HIKVision (пользователь Inspark должен быть только от одной Компании).
формирует список SN всех устройств. - Вычитывает все устройства с сервера HIKVision:
- вычитывает из Inspark все Unit Типа HIKVision (пользователь Inspark должен быть только от одной Компании).
API Name: Get Interactive Tablet DeviceList
Request: /api/focsign/v1/DeviceConfig/GetInteractiveTabletDeviceDeviceList
HTTP Method: POST
Returned Result Example:
{
"code": "0",
"msg": "success",
"data": {
"total": 1,
"pageNo": 1,
"pageSize": 100,
"list": [
{
"DevId": 2,
"DevName": "Экран07",
"DevIp": "10.25.224.95",
"DevPort": "8000",
"status": 1
}
]
}
}
- Для всех SN= data.list[].DevId отправляет данные в очередь Measure.
Важно!
Сервис HIKVision возвращает status:
- 0: "Unknown",
- 1: "Online",
- 2:"Offline",
модуль преобразовывает их: 0 -> null (нет контроля), 1-> 1, 2 -> 0. и отправляет значение в
параметр onoff
- Периодически (раз в 10 мин) сервис подчитывает данные:
API Name: Get Single Device Brightness
API Name: Get single device volume
API Name: Get Single Device Operating System
Формат этих запросов практически одинаков.
Request Body
Body Example:
{
"RequestParam": {
"deviceId": 1
}
}
Returned Result Example:
{
"code": "0",
"msg": "success",
"Data": {
"volume": 0
}
}
полученные значения отправляем для каждого SN(DevId) в очередь Measure.
- Модуль подписывается на очередь CommandHIKVISION.
При получении команды на включение onoff=1 или выключения onoff=0, модуль вызывает рест
API Name: Batch device control
Request: /api/focsign/v1/DeviceControl
HTTP Method:POST
Body Example:
{
"RequestParam": {
"orderType": "powerOn", //Operation type: "powerOn", "powerOff", "reboot".
"DeviceList": [
{
"deviceId": 2
}
]
}
}
Returned Result Example:
{
"code": "0",
"msg": "success",
"Data": {
"taskId": 4
}
}
Особенности реализации
Канал onoff отображает состояние подключения устройства к сети питания (1 - подключено, 0 - отключено). Расшифровка статуса устройства HikVision не требуется, оно соответствует.
Список поддерживаемых команд
команда | данные | описание |
---|---|---|
powerOn | Включить устройство | |
powerOff | Выключить устройство | |
reboot | Перезагрузить устройство (по наблюдениям занимает 30 сек) | |
adjustBrightness | число, от 0 до 100 | Установить уровень яркости |
adjustVolume | число, от 0 до 100 | Установить уровень громкости |
Проверка результата выполнения команд
Команды powerOn, powerOff, reboot считаются успешными если без ошибок вызван сервис API HikVision и устройство в момент вызова находилось подключенным к сети электропитания (state = 1). Надежной возможности проверить их нет.
Для команд adjustBrightness, adjustVolume после успешного вызова сервиса сервис API HikVision выполняется проверка с задержкой в 10 секунд и опроса текущих значений яркости/громкости. Если значения соответствуют устанавливаемым (отличаются не более чем на 2 единицы) - выполнение команды считается успешным. Погрешность 2 единицы введена из-за градаций шага установки яркости (устанавливая 35 может быть фактически установлено 34, по наблюдениям, т.е. предположительно есть какая-то шкала с шагом более единицы).
Для успешных команд отправляется системное событие E3010, для неудачных событие E3011.
Эмулятор
В модуле реализована возможность эмуляции сервисов HiVision. Эмулятор эмулирует устройство с идентификатором 100500.
Настраивается в конфиге, свойством hikvision.emulator (true/false).
Отключение проверки достоверности сертификатов
Реализован механизм отключения проверки достоверности сертификатов. Настраивается в конфиге свойством hikvision.disableSertCheck (true/false).
ВАЖНО!
В продуктовой среде при наличии действительного сертификата проверка должна быть включена (disableSertCheck = false).