Доступ через ИУ разделяется на два типа - персонифицированный (по карте), и не персонифицированный (по команде сервера системы / ПДУ). Логика доступа на стороне контроллера реализована через механизм асинхронных событий доступа и обработку команд управления от сервера системы / ПДУ. Здесь важно не путать два типа асинхронных событий. Первый тип - это события формируемые контроллером по окончанию процесса (доступа), они содержат время, и регистрируются в БД (параллельлно с асинхронной передачей при соответствующих настройках фильтрации сокета (см. раздел События)). Второй тип - это события, формируемые контроллером (в том числе) в процессе (доступа). Такие события безусловно передаются по всем открытым сокетам для обработки их сервером системы, с последующей выдачей команды управления.
Т.о. персонифицированный доступ выглядит следующим образом:
- пользователь предъявляет карту, контроллер отправляет событие серверу {“event”:”card”,”card”:{“number”:0,”direction”:1,”id”:”686409”}}
- сервер системы обрабатывает принятый id и даёт команду управления {“control”:”exdev”,”exdev”:{“number”:0,”direction”:1,”action”:”open”,”open_type”:”open once”,”open_time”:7000}}
- контроллер отвечает серверу системы {“result”:{“exdev”:”ok”,”control”:”own”},”exdev”:{“number”:0,”direction”:1,”action”:”open”,”open_type”:”open once”,”open_time”:7000}}
- контроллер разблокирует ИУ, и передаёт серверу системы событие разблокировки {“event”:”exdev_unlock”,”exdev_unlock”:{“number”:0,”direction”:1,”unlock”:true}}
- по истечению таймаута (не дождавшись прохода) контроллер блокирует ИУ и передаёт серверу системы события отказа от прохода {“event”:”refusal_personal”,”refusal_personal”:{“number”:0,”direction”:1,”id”:”686409”,”command_source”:”server”,”remove_card”:false}} и разблокировки {“event”:”exdev_unlock”,”exdev_unlock”:{“number”:0,”direction”:1,”unlock”:false}}
- если проход состоялся (получен сигнал PASS), контроллер блокирует ИУ и передаёт серверу системы события персонифицированного прохода {“event”:”pass_personal”,”pass_personal”:{“number”:0,”direction”:1,”id”:”686409”,”command_source”:”server”,”remove_card”:false}}, и после окончания сигнала PASS, разблокировки {“event”:”exdev_unlock”,”exdev_unlock”:{“number”:0,”direction”:1,”unlock”:false}}
Не персонифицированный доступ выглядит следующим образом:
- сервер системы передаёт контроллеру команду управления ИУ {“control”:”exdev”,”exdev”:{“number”:0,”direction”:1,”action”:”open”,”open_type”:”open once”,”open_time”:7000}}
- контроллер отвечает серверу системы {“result”:{“exdev”:”ok”,”control”:”own”},”exdev”:{“number”:0,”direction”:1,”action”:”open”,”open_type”:”open once”,”open_time”:7000}}
- контроллер разблокирует ИУ, и передаёт серверу системы событие разблокировки {“event”:”exdev_unlock”,”exdev_unlock”:{“number”:0,”direction”:1,”unlock”:true}}
- по истечению таймаута (не дождавшись прохода) контроллер блокирует ИУ и передаёт серверу системы события отказа от прохода {“event”:”refusal_impersonal”,”refusal_impersonal”:{“number”:0,”direction”:1,”command_source”:”server”}} и разблокировки {“event”:”exdev_unlock”,”exdev_unlock”:{“number”:0,”direction”:1,”unlock”:false}}
- если проход состоялся (получен сигнал PASS), контроллер блокирует ИУ и передаёт серверу системы события не персонифицированного прохода {“event”:”pass_impersonal”,”pass_impersonal”:{“number”:0,”direction”:1,”command_source”:”server”}}, и после окончания сигнала PASS, разблокировки {“event”:”exdev_unlock”,”exdev_unlock”:{“number”:0,”direction”:1,”unlock”:false}}
Управление внутренними реакциями на примере активизации / нормализации выходов:
- конфигурация {“set”:”cref”,”cref”:{“number”:1,”source”:”command”,”source_number”:0,”source_direction”:0,”destination”:”activated output”,”destination_number”:0,”destination_direction”:0,”time_criteria”:”absolute time”,”time_reaction”:5000}}
- ответ на конфигурацию {“answer”:{“cref”:”ok”,”set”:”own”},”cref”:{“number”:1,”source”:”command”,”source_number”:0,”source_direction”:0,”destination”:”activated output”,”destination_number”:0,”destination_direction”:0,”time_criteria”:”absolute time”,”time_reaction”:5000}}
- команда управления {“control” : “cref”, “cref” : {“activate” : true, “number” : 1}}
- ответ на команду управления {“result”:{“cref”:”ok”,”control”:”own”},”cref”:{“activate”:true,”number”:1}}
- активация выхода, событие {“event”:”output”,”output”:{“function”:”output”,”on”:false,”number”:0}}
- через 5 секунд (см. конфиг.) нормализация выхода, событие {“event”:”output”,”output”:{“function”:”output”,”on”:false,”number”:0}}
Установка РКД.
Установка: сервер системы → контроллер
{
"control" : "acm",
"acm" : {
"number" : 0,
"direction" : 0,
"access_mode" : "open"
}
}
Ответ: контроллер → всем
{
"result" : { "acm": "ok" },
"acm" : {
"number" : 0,
"direction" : 0,
"access_mode" : "open"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Режим контроля доступа РКД access_mode, строка :
`open` — ОТКРЫТО
`control` — КОНТРОЛЬ
Открыть/закрыть ИУ
Установка: сервер системы → контроллер
{
"control" : "exdev",
"exdev" : {
"number" : 0,
"direction" : 0,
"action" : "open",
"open_type" : "open once",
"open_time" : 1000
}
}
Ответ: контроллер → всем
{
"result" : { "exdev": "ok" },
"exdev" : {
"number" : 0,
"direction" : 0,
"action" : "open",
"open_type" : "open once",
"open_time" : 1000
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Действие action, строка :
`open` — разблокировать ИУ
`close` — заблокировать ИУ
Тип разблокировки open_type, строка :
`open once` — открыть для однократного прохода
`open oncealways` — открыть для однократного прохода с бесконечным ожиданием (прохода)
`open once remove card` — открыть для однократного прохода с изъятием карты
`open always` — открыть для многокрытных проходов (постоянно)
Время разблокировки, мс open_time, int : 100 - 1000000
Запрет прохода
Установка: сервер системы → контроллер
{
"control" : "access",
"access" : {
"number" : 0,
"direction" : 0
}
}
Ответ: контроллер → всем
{
"result" : { "access": "ok" },
"access" : {
"number" : 0,
"direction" : 0
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Управление внутренней реакцией
Установка: сервер системы → контроллер
{
"control" : "cref",
"cref" : {
"activate" : true,
"number" : 0
}
}
Ответ: контроллер → всем
{
"result" : { "cref": "ok" },
"cref" : {
"activate" : true,
"number" : 0
}
}
Номер внутренней реакции number, int : 0 — 999
Активизация внутренней реакции activate, bool :
true — активизировать
false — деактивизировать
События
Предъявлена карта
контроллер → сервер системы
{
"event" : "card",
"card" : {
"number" : 0,
"direction" : 0,
"id" : "12345"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Идентификатор id, строка
Персонифицированный проход (по карте)
контроллер → сервер системы
{
"event" : "pass_personal",
"pass_personal" : {
"number" : 0,
"direction" : 0,
"remove_card" : false,
"id" : "12345",
"command_source" : "server"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Идентификатор id, строка
Признак изъятия карты remove_card, bool :
`true` — карта изъята
`false` — карта не изъята
Источник команды разблокировки ИУ command_source, строка :
`server` — сервер
Не персонифицированный проход (по команде ПДУ / софта)
контроллер → сервер системы
{
"event" : "pass_impersonal",
"pass_impersonal" : {
"number" : 0,
"direction" : 0,
"command_source" : "server"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Источник команды разблокировки ИУ command_source, строка :
`server` — сервер
`remote_control` — нажатие одной из кнопок “ПРОХОД” на ПДУ
Персонифицированный отказ от прохода (по карте)
контроллер → сервер системы
{
"event" : "refusal_personal",
"refusal_personal" : {
"number" : 0,
"direction" : 0,
"remove_card" : false,
"id" : "12345",
"command_source" : "server"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Идентификатор id, строка
Признак изъятия карты remove_card, bool :
`true` — карта изъята
`false` — карта не изъята
Источник команды разблокировки ИУ command_source, строка :
`server` — сервер
Не персонифицированный отказ от прохода (по команде ПДУ / софта)
контроллер → сервер системы
{
"event" : "refusal_impersonal",
"refusal_impersonal" : {
"number" : 0,
"direction" : 0,
"command_source" : "server"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Источник команды разблокировки ИУ command_source, строка :
`server` — сервер
`remote_control` — нажатие одной из кнопок “ПРОХОД” на ПДУ
Персонифицированный запрет прохода (по карте)
контроллер → сервер системы
{
"event" : "pass_ban_personal",
"pass_ban_personal" : {
"number" : 0,
"direction" : 0,
"command_source" : "server",
"remove_card" : false,
"id" : "12345"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Идентификатор id, строка
Признак изъятия карты remove_card, bool :
`true` — карта изъята
`false` — карта не изъята
Источник команды разблокировки ИУ command_source, строка :
`server` — сервер
`remote_control` — нажатие одной из кнопок “ПРОХОД” на ПДУ
`sensor_fault` — неисправность датчика прохода контроллера
Не персонифицированный запрет прохода (по команде ПДУ / софта)
контроллер → сервер системы
{
"event" : "pass_ban_impersonal",
"pass_ban_impersonal" : {
"number" : 0,
"direction" : 0,
"command_source" : "server"
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Источник команды разблокировки ИУ command_source, строка :
`server` — сервер
`remote_control` — нажатие одной из кнопок “ПРОХОД” на ПДУ
`sensor_fault` — неисправность датчика прохода контроллера
Взлом ИУ
контроллер → сервер системы
{
"event" : "break",
"break" : {
"number" : 0,
"direction" : 0
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Не закрыта дверь после прохода
контроллер → сервер системы
{
"event" : "exdev_long_open",
"exdev_long_open" : {
"number" : 0,
"direction" : 0,
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
ИУ разблокировано / заблокировано
контроллер → сервер системы
{
"event" : "exdev_unlock",
"exdev_unlock" : {
"number" : 0,
"direction" : 0,
"unlock" : true
}
}
Номер ИУ number, int : 0 — 1
Номер направления ИУ direction, int : 0 — 1
Разблокировка unlock, bool :
`true` — ИУ разблокировано
`false` — ИУ заблокировано
Активизация/Нормализация входа
контроллер → сервер системы
{
"event" : "input",
"input" : {
"function": "input",
"on" : true,
"number" : 0
}
}
Функция входа function, строка:
`input` — вход обычный
`fire alarm input` — сигнал пожарной тревоги
Номер входа number, int : 0 — 4
Активизация входа on, bool :
`true` — вход активизирован
`false` — вход нормализован
Активизация/Нормализация выхода
контроллер → сервер системы
{
"event" : "output",
"output" : {
"function" : "output",
"on" : true,
"number" : 0
}
}
Функция выхода function, строка:
`output` — выход обычный
Номер выхода number, int : 0 — 4
Активизация выхода on, bool :
`true` — выход активизирован
`false` — выход нормализован