Правила написания сценария XDEV
Сценарий должен состоять как минимум из одной функции. Имя этой функции: SCRIPT, SCRIPT_V2 или SCRIPT_V3. Название функции подбирается в зависимости от входных параметров, которые может получить сценарий на момент выполнения.
SCRIPT(handle)
SCRIPT_V2(handle, custnum, zonenum, prev_state, prev_state_ex, curr_state, curr_state_ex, prev_hw_value, curr_hw_value)
SCRIPT_V3(handle, custnum, zonenum, prev_state, prev_state_ex, curr_state, curr_state_ex, prev_hw_state, prev_hw_state_ex, prev_hw_value, curr_hw_state, curr_hw_state_ex, curr_hw_value)
Список входных параметров сценария XDEV
Имя параметра |
Описание |
SCRIPT |
SCRIPT_V2 |
SCRIPT_V3 |
---|---|---|---|---|
handle |
Служебная переменная (должна быть всегда) |
|||
custnum |
Номер карточки прибора (направления), для которого вызван сцкенарий |
|||
zonenum |
Номер зоны, для которой вызван сценарий |
|||
prev_state |
Основное состояние карточки до запуска сценария |
|||
prev_state_ex |
Расширенное состояние карточки до запуска сценария |
|||
curr_state |
Основное состояние карточки после вызова сценария (текущее) |
|||
curr_state_ex |
Расширенное состояние карточки после вызова сценария (текущее) |
|||
prev_hw_state |
Основное состояние устройства до запуска сценария |
|||
prev_hw_state_ex |
Расширенное состояние устройства до запуска сценария |
|||
prev_hw_value |
Значение датчика (устройства) до запуска сценария |
|||
curr_hw_state |
Основное состояние устройства после вызова сценария (текущее) |
|||
curr_hw_state_ex |
Расширенное состояние устройства после вызова сценария (текущее) |
|||
curr_hw_value |
Значение датчика (устройства) после вызова сценария (текущее) |
Список доступных функций для сценария XDEV
get_state - получить основное состояние карточки по номеру.
Параметры вызова: get_state(handle, custnum)
Возвращаемое значение: текущее основное состояние карточки (cм. Таблица состояний).
get_state(handle, '1000.1')где:
1000.1 — номер карточки.
get_ext_state - получить расширенное состояние карточки по номеру.
Параметры вызова: get_ext_state(handle, custnum)
Возвращаемое значение: текущее расширенное состояние карточки (cм. Таблица состояний)
get_ext_state(handle,1000)где: 1000 - номер карточки.
extstate = get_ext_state(handle,1000)в переменную extstate запомнить расширенное состояние карточки 1000.
if get_ext_state(handle,1000)==6:если расширенное состояние карточки 1000 равно 6, то выполнить …
get_hw_state - получить основное состояние устройства по номеру карточки. Доступно с версии 3.7.1.
Параметры вызова: get_hw_state(handle, custnum).
get_hw_state(handle,1000)где: 1000 - номер карточки.
get_hw_ext_state - получить расширенное состояние устройства по номеру карточки. Доступно с версии 3.7.1.
Параметры вызова: get_hw_ext_state(handle, custnum).
get_hw_ext_state(handle,1000)где: 1000 - номер карточки.
get_hw_value - получить значение датчика по номеру карточки (для технологических устройств типа влажность, температура, технологический ВС-03 и т.д.). Доступно с версии 3.7.1.
Параметры вызова: get_hw_value(handle, custnum).
get_hw_value(handle, '1011.1')где: 1011.1 - номер карточки. В том случае, если 1011.1 — это карточка датчика температуры, в возвращаемом значении будет значение датчика температуры (показание температуры в градусах).
send_command - отправить команду на устройство с нужным номером карточки.
Параметры вызова: send_command(handle, custnum, cmd, [intparam1]).
Intparam1 - опциональный параметр, его не обязательно указывать при вызове функции. Обязательно нужно указывать для команд, которые не могут быть выполнены без дополнительного параметра, например, «Включить ключ на время». Доступен с версии 3.7.1.
send_command(handle, 1001, 200)где:
1001 — номер карточки;
200 – команда «Взять». Коды команд указаны в таблице 2.
send_command(handle, '2002.2', 66, 1200)где:
2002.2 - номер карточки;
66 – команда «Включить ключ на время»;
1200 – время в миллисекундах на которое нужно включить ключ.
send_skd_command – отправить команду на СКД-устройство по номеру карточки.
Параметры вызова: send_skd_command (handle, custnum, cmd).
send_skd_command(handle, 1001, 114)где:
1000 - номер карточки;
114 – команда «Разрешить проход вправо». Коды команд указаны в таблице 6.
set_exec_state - отправить команду на изменение состояния реле релейного расширителя.
Параметры вызова: set_exec_state(handle, custnum, relenum, ontime, offtime).
set_exec_state(handle, 1001, 13, 12, 7)где:
1001 – это номер карточки, назначенной устройству Релейный расширитель в дереве конфигурации;
13 – номер реле;
12 – длительность состояния включено (сек);
7 – длительность состояния выключено (сек).
Если есть необходимость одной командой установить состояние сразу всех исполняемых устройств (реле) релейного расширителя, вместо номера исполняемого устройства нужно передать -1.
set_exec_state(handle, 1001, -1, 12, 7)set_exec_state(handle, 1001, 1, 255, 0)set_exec_state(handle, 1001, 1, 255, 255)set_exec_state(handle, 1001, 1, 7, 0)set_exec_state(handle, 1001, 1, 2, 2)
show_cameras – вывести на экран привязанные видеокамеры.
Параметры вызова: show_cameras(handle, custnum).
show_cameras(handle, 1001)где: 1001 — номер карточки шлейфа, к которому привязаны видеокамеры в дереве конфигурации.
show_camera_by_ip – вывести на экран видеокамеру по IP-адресу и номеру.
Параметры вызова: show_camera_by_ip (handle, ip, camnum).
show_camera_by_ip (handle, '192.168.0.1', 3)где:
«192.168.0.1» – ip-адрес видеокамеры;
3 – порядковый номер камеры.
show_camera_by_name – вывести на экран видеокамеру по имени.
Параметры вызова: show_camera_by_name(handle, camname).
show_camera_by_name(handle, 'Проходная')где: «Проходная»» – наименование камеры из дерева конфигурации.
Рассмотрим правила написания текста сценария XDEV на примерах.
Пример № 1:
Пусть существуют и описаны в конфигурации оборудования два охранных прибора Прибор1 и Прибор2 с типом ППКОП 011-8-1-03 (квартирный прибор). Номер карточки направления Прибора1 – 1000. Номер карточки направления Прибора2 – 1010.
Напишем сценарий для следующей ситуации: При сработке по первому шлейфу Прибора2 (карточка 1011) снять все шлейфы с охраны, в том случае, если первый шлейф Прибора1 (карточка 1001) – уже снят.
1from PritokModule import * # подключить все доступные функции сценария
2
3def SCRIPT(handle):
4
5 if get_state(handle, 1011)==2 and get_ext_state(handle, 1011)==6 : # если 1011-взят и в сработке, то
6 if get_state(handle, 1001)==3: # если 1001-снят, то
7 send_command(handle, 1011, 202) # выполнить команду «Снять» по карточке 1011
При использовании карточки с точкой в функциях сценария необходимо номер карточки заключать в кавычки. Это правило распространяется на все функции, доступные из сценария.
send_command(handle, '1011.3', 202)
Константы для функций сценариев
Значение |
Комментарий |
---|---|
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 |
Разблокировать точку прохода |