View on GitHub

C02

SDK для работы с контроллером PERCo-C02

Доступ через ИУ разделяется на два типа - персонифицированный (по карте), и не персонифицированный (по команде сервера системы / ПДУ). Логика доступа на стороне контроллера реализована через механизм асинхронных событий доступа и обработку команд управления от сервера системы / ПДУ. Здесь важно не путать два типа асинхронных событий. Первый тип - это события формируемые контроллером по окончанию процесса (доступа), они содержат время, и регистрируются в БД (параллельлно с асинхронной передачей при соответствующих настройках фильтрации сокета (см. раздел События)). Второй тип - это события, формируемые контроллером (в том числе) в процессе (доступа). Такие события безусловно передаются по всем открытым сокетам для обработки их сервером системы, с последующей выдачей команды управления.

Т.о. персонифицированный доступ выглядит следующим образом:

Не персонифицированный доступ выглядит следующим образом:

Управление внутренними реакциями на примере активизации / нормализации выходов:

Установка РКД.

Установка: сервер системы → контроллер

{
	"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` — выход нормализован