Правила написания сценария Contact ID
Сценарий должен состоять как минимум из одной функции. Имя этой функции: SCRIPT, SCRIPT_V2 или SCRIPT_V3. Название функции подбирается в зависимости от входных параметров, которые может получить сценарий на момент выполнения.
SCRIPT_V3(handle, CCCC, MT, Q, EEE, GG, ZZZ, curr_state, curr_state_ex, custnum_ex, сandisarm, chn)
Список входных параметров сценария Contact ID
Имя параметра |
Описание |
SCRIPT |
SCRIPT_V2 |
SCRIPT_V3 |
---|---|---|---|---|
handle |
Служебная переменная (должна быть всегда) |
|||
CCCC |
4-хзначный идентификатор прибора (Account Number) |
|||
MT |
Если 18, то сообщение в формате Ademco Contact ID |
|||
Q |
Квалифицирующий признак события: 1 -новое событие (E); 3- восстановление (R) |
|||
EEE |
Код события - 3-х значный (шестнадцатеричный) |
|||
GG |
Номер раздела - 2-хзначный (для системных сообщений «00») |
|||
ZZZ |
Номер зоны/кода при сообщении о тревоге, или номер пользователя для отчетов о взятии/снятии. 3-х значный. События «сбой питания 220В», «тест» и т.д. содержат нули в данных позициях. |
|||
curr_state |
Текущее основное состояние карточки |
|||
curr_state_ex |
Текущее расширенное состояние карточки |
|||
custnum_ex |
Номер карточки контроля линии (используется при «расширенном» режиме охраны) |
|||
сandisarm |
Признак разрешено ли снятие с охраны (согласно временной зоне). Возможные значения: 0/1. |
|||
chn |
Номер канала принимающего устройства |
Список доступных функций для сценария Contact ID
add_to_log – запротоколировать событие в ленту событий системы и историю по объекту.
Параметры вызова: add_to_log(handle, tec_code, evclass, add_info, xonum).
add_to_log(handle, 502, 3, 'test', '001')
где:
502 – код события из таблицы № 4;
3 – цвет строки в ленте события;
test – строка дополнительной информации;
001 – номер ХО из карточки.
add_to_log_by_num – запротоколировать событие в ленту системы и в историю по объекту по номеру зоны.
add_to_log_by_num(handle, 1, 502, 3, 'test', '001')
где:
1 - номер зоны.
update_cust_state – изменить основное и расширенное состояние карточки.
Параметры вызова: update_cust_state(handle, newstate, newextstate).
update_cust_state(handle, 7, 0)
где:
7 – основное состояние из таблицы № 1;
0 – расширенное состояние из таблицы № 1.
update_cust_state_by_num – изменить основное и расширенное состояние карточки по номеру зоны.
update_cust_state_by_num(handle, 1, 7, 0)
где:
1 - номер зоны.
update_hw_state – изменить основное и расширенное состояние устройства.
update_hw_state(handle, 7, 49, 2)
где:
7 – основное состояние;
49 – расширенное состояния;
2 – основное состояние устройства из таблицы № 1.
update_hw_state_by_num – изменить основное и расширенное состояние устройства по номеру зоны.
update_hw_state_by_num(handle, 1, 7, 49, 2)
где:
1 - номер зоны.
update_alarm – добавить/обновить тревогу в определенный стакан тревог.
update_alarm(handle, 2, 620, 'test')
где:
2 – номер стакана тревог из таблицы № 5;
620 – код события из таблицы № 4;
test – дополнительная информация (строка).
update_alarm_by_num – добавить/обновить тревогу в определенный стакан тревог по номеру зоны.
update_alarm_by_num(handle, 1, 2, 620, 'test')
где:
1 - номер зоны;
2 – номер стакана тревог из таблицы № 5;
620 – код события из таблицы № 4;
test – дополнительная информация (строка).
remove_alarm – удалить тревогу из списка («стакана») тревог.
remove_alarm(handle, 2)
где:
2 - номер списка («стакана») тревог.
remove_alarm_by_num – удалить тревогу из списка («стакана») тревог по номеру зоны.
remove_alarm_by_num(handle, 1, 2)где:
1 - номер зоны;
2 - номер списка («стакана») тревог - «оп. тревоги».
send_command – отправить команду по № карточки.
send_command(handle, 1001, 200)где:
1000 - № карточки;
200 – команда «Взять». Коды команд указаны в таблице 2.
remove_alarm_by_childs – удалить тревогу из стакана тревог по всем зонам прибора.
remove_alarm_by_childs(handle, 2)где:
2 - номер списка («стакана») тревог.
update_alarm_by_childs – добавить/обновить тревогу в определенный стакан тревог по всем зонам прибора/по номеру раздела.
update_alarm_by_childs(handle, 2, 620, 'test', 0)где:
2 – номер стакана тревог из таблицы № 5;
620 – код события из таблицы № 4;
test – дополнительная информация (строка);
0 - номер раздела (из входного параметра сообщения GG).
add_to_log_by_childs – запротоколировать событие в ленту системы по всем зонам прибора. При протоколировании события «Снят», событие добавляется ленту системы для всех зон прибора, кроме ТС и ПС.
add_to_log_by_childs(handle, 502, 3, 'test', '001', 2)где:
502 – код события из таблицы № 4;
3 – цвет строки в ленте события;
test – строка дополнительной информации;
001 – номер ХО из карточки;
2 - номер раздела (из входного параметра сообщения GG).
update_cust_state_by_childs – изменить основное и расширенное состояние карточек всех зон прибора/по номеру раздела. При установке состояния кариточки «Снят», состояние изменяется у всех зон прибора, кроме ТС и ПС.
update_cust_state_by_child(handle, 7, 0, 1)где:
7 – основное состояние из таблицы № 1;
0 – расширенное состояние из таблицы № 1;
1 - номер раздела (из входного параметра сообщения GG).
update_hw_state_by_childs – изменить основное и расширенное состояние устройств у всех зон прибора/по номеру раздела. При установке состояния устройства «Снят», состояние изменяется у всех зон прибора, кроме ТС и ПС.
update_hw_state_by_child(handle, 7, 49, 2, 1)где:
7 – основное состояние;
49 – расширенное;
2 – основное состояние устройства из таблицы № 1;
1 - номер раздела (из входного параметра сообщения GG).
Пример № 1:
Пусть существует и описан в конфигурации оборудования охранный прибор «Панель 1», работающий по протоколу Contact ID. Сообщения от прибора принимаются через «Приемник Contact ID». Напишем сценарий для следующей ситуации: при получении от прибора сообщения с кодом 110 – зафиксировать пожарную тревогу.
Текст сценария в данном случае будет выглядеть следующим образом:
1from PritokModule import *
2
3def SCRIPT(handle, CCCC, MT, Q, EEE, GG, ZZZ, curr_state, curr_state_ex, custnum_ex):
4
5 if EEE == "110": # обработка кода 110
6 update_cust_state(handle, 7, 0) # изменить состояние карточки на «Тревога»
7 update_hw_state(handle, 7, 7, 7) # изменить состояние устройства на «Тревога»
8 update_alarm(handle, 2, 601, '') # добавить/обновить тревогу в стакан «Оп. Тревог» с кодом 601 «Пожарная тревога»)
Константы для функций сценариев
Значение |
Комментарий |
---|---|
0 |
Неизвестное состояние |
2 |
Охраняется (Взят) |
3 |
Не охраняется (Снят) |
6 |
Сработал |
7 |
Тревога |
Значение |
Комментарий |
---|---|
200 |
Взять объект под охрану |
202 |
Снять объект с охраны |
230 |
Взять объект под охрану с контролем взятия |
111 |
Разрешить проход |
117 |
Запретить проход |
45 |
Включить реле |
46 |
Выключить реле |
66 |
Включить ключ на время. Требуется указание времени включения ключа в миллисекундах в параметре intparam1. Доступно с версии 3.7.1. |
Значение |
Комментарий |
---|---|
1 |
Серый |
2 |
Зеленый (Успешно) |
3 |
Синий |
4 |
Красный (Тревожно) |
Таблица кодов событий системы приведена в текстовом файле tec_codes.txt |
Значение |
Комментарий |
---|---|
1 |
Стакан сработок |
2 |
Стакан оперативных тревог |
3 |
Стакан аварий |
4 |
Стакан долговременных тревог |
5 |
Стакан проверок ТС |
6 |
Стакан потерянных запросов на взятие |
7 |
Стакан аварий 220 |
8 |
Стакан проверенных |
9 |
Стакан сн/вз без команды |
10 |
Стакан аварий оборудования |
Значение |
Комментарий |
---|---|
115 |
Разрешить многократный проход влево |
113 |
Открыть влево |
108 |
Открыть |
117 |
Закрыть |
109 |
Открыть (многократно) |
114 |
Открыть вправо |
116 |
Открыть вправо (многократно) |
128 |
Блокировать точку прохода |
129 |
Разблокировать точку прохода |