Правила написания сценария 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

  1. 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 – номер ХО из карточки.


  1. add_to_log_by_num – запротоколировать событие в ленту системы и в историю по объекту по номеру зоны.

    Пример вызова
    add_to_log_by_num(handle, 1, 502, 3, 'test', '001')
    

    где:

    • 1 - номер зоны.


  1. update_cust_state – изменить основное и расширенное состояние карточки.

    Параметры вызова: update_cust_state(handle, newstate, newextstate).

    Пример вызова
    update_cust_state(handle, 7, 0)
    

    где:

    • 7 – основное состояние из таблицы № 1;

    • 0 – расширенное состояние из таблицы № 1.


  1. update_cust_state_by_num – изменить основное и расширенное состояние карточки по номеру зоны.

    Пример вызова
    update_cust_state_by_num(handle, 1, 7, 0)
    

    где:

    • 1 - номер зоны.


  1. update_hw_state – изменить основное и расширенное состояние устройства.

    Пример вызова
    update_hw_state(handle, 7, 49, 2)
    

    где:

    • 7 – основное состояние;

    • 49 – расширенное состояния;

    • 2 – основное состояние устройства из таблицы № 1.


  1. update_hw_state_by_num – изменить основное и расширенное состояние устройства по номеру зоны.

    Пример вызова
    update_hw_state_by_num(handle, 1, 7, 49, 2)
    

    где:

    • 1 - номер зоны.


  1. update_alarm – добавить/обновить тревогу в определенный стакан тревог.

    Пример вызова
    update_alarm(handle, 2, 620, 'test')
    

    где:

    • 2 – номер стакана тревог из таблицы № 5;

    • 620 – код события из таблицы № 4;

    • test – дополнительная информация (строка).


  1. update_alarm_by_num – добавить/обновить тревогу в определенный стакан тревог по номеру зоны.

    Пример вызова
    update_alarm_by_num(handle, 1, 2, 620, 'test')
    

    где:

    • 1 - номер зоны;

    • 2 – номер стакана тревог из таблицы № 5;

    • 620 – код события из таблицы № 4;

    • test – дополнительная информация (строка).


  1. remove_alarm – удалить тревогу из списка («стакана») тревог.

    Пример вызова
    remove_alarm(handle, 2)
    

    где:

    • 2 - номер списка («стакана») тревог.


  1. remove_alarm_by_num – удалить тревогу из списка («стакана») тревог по номеру зоны.

Пример вызова
remove_alarm_by_num(handle, 1, 2)

где:

  • 1 - номер зоны;

  • 2 - номер списка («стакана») тревог - «оп. тревоги».


  1. send_command – отправить команду по № карточки.

Пример вызова
send_command(handle, 1001, 200)

где:

  • 1000 - № карточки;

  • 200 – команда «Взять». Коды команд указаны в таблице 2.


  1. remove_alarm_by_childs – удалить тревогу из стакана тревог по всем зонам прибора.

Пример вызова
remove_alarm_by_childs(handle, 2)

где:

  • 2 - номер списка («стакана») тревог.


  1. update_alarm_by_childs – добавить/обновить тревогу в определенный стакан тревог по всем зонам прибора/по номеру раздела.

Пример вызова
update_alarm_by_childs(handle, 2, 620, 'test', 0)

где:

  • 2 – номер стакана тревог из таблицы № 5;

  • 620 – код события из таблицы № 4;

  • test – дополнительная информация (строка);

  • 0 - номер раздела (из входного параметра сообщения GG).


  1. add_to_log_by_childs – запротоколировать событие в ленту системы по всем зонам прибора. При протоколировании события «Снят», событие добавляется ленту системы для всех зон прибора, кроме ТС и ПС.

Пример вызова
add_to_log_by_childs(handle, 502, 3, 'test', '001', 2)

где:

  • 502 – код события из таблицы № 4;

  • 3 – цвет строки в ленте события;

  • test – строка дополнительной информации;

  • 001 – номер ХО из карточки;

  • 2 - номер раздела (из входного параметра сообщения GG).


  1. update_cust_state_by_childs – изменить основное и расширенное состояние карточек всех зон прибора/по номеру раздела. При установке состояния кариточки «Снят», состояние изменяется у всех зон прибора, кроме ТС и ПС.

Пример вызова
update_cust_state_by_child(handle, 7, 0, 1)

где:

  • 7 – основное состояние из таблицы № 1;

  • 0 – расширенное состояние из таблицы № 1;

  • 1 - номер раздела (из входного параметра сообщения GG).


  1. 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 – зафиксировать пожарную тревогу.

Текст сценария в данном случае будет выглядеть следующим образом:

Пример сценария Contact ID
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 «Пожарная тревога»)

Константы для функций сценариев

Таблица № 1: Коды основного и расширенного состояния карточки

Значение

Комментарий

0

Неизвестное состояние

2

Охраняется (Взят)

3

Не охраняется (Снят)

6

Сработал

7

Тревога

Таблица № 2: Коды команд на выполнение

Значение

Комментарий

200

Взять объект под охрану

202

Снять объект с охраны

230

Взять объект под охрану с контролем взятия

111

Разрешить проход

117

Запретить проход

45

Включить реле

46

Выключить реле

66

Включить ключ на время.

Требуется указание времени включения ключа в миллисекундах в параметре intparam1. Доступно с версии 3.7.1.

Таблица № 3: Коды раскраски записей в ленте событий

Значение

Комментарий

1

Серый

2

Зеленый (Успешно)

3

Синий

4

Красный (Тревожно)

Таблица № 4: Коды событий системы Приток-А 3.8

Таблица кодов событий системы приведена в текстовом файле tec_codes.txt

Таблица № 5: Коды стаканов тревог

Значение

Комментарий

1

Стакан сработок

2

Стакан оперативных тревог

3

Стакан аварий

4

Стакан долговременных тревог

5

Стакан проверок ТС

6

Стакан потерянных запросов на взятие

7

Стакан аварий 220

8

Стакан проверенных

9

Стакан сн/вз без команды

10

Стакан аварий оборудования

Таблица № 6: Коды СКД команд на выполнение

Значение

Комментарий

115

Разрешить многократный проход влево

113

Открыть влево

108

Открыть

117

Закрыть

109

Открыть (многократно)

114

Открыть вправо

116

Открыть вправо (многократно)

128

Блокировать точку прохода

129

Разблокировать точку прохода