Правила написания сценария XDEV

Сценарий должен состоять как минимум из одной функции. Имя этой функции: SCRIPT, SCRIPT_V2 или SCRIPT_V3. Название функции подбирается в зависимости от входных параметров, которые может получить сценарий на момент выполнения.

Версия № 1 без параметров, внутри сценария нет доступных переменных.
SCRIPT(handle)
Версия № 2 с 8 переменными (см. в таблице ниже). Доступно с версии 3.7.1
SCRIPT_V2(handle, custnum, zonenum, prev_state, prev_state_ex, curr_state, curr_state_ex, prev_hw_value,  curr_hw_value)
Версия № 3 с 12 переменными (см. в таблице ниже). Доступно с версии 3.7.1
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)
Пример вызова: включить реле № 1 навсегда.
set_exec_state(handle, 1001, 1, 255, 0)
Пример вызова: выключить реле № 1
set_exec_state(handle, 1001, 1, 255, 255)
Пример вызова: включить реле № 1 на 7 секунд.
set_exec_state(handle, 1001, 1, 7, 0)
Пример вызова: включить реле № 1 на 2 секунды и после этого выключить на 2 секунды, зациклить повторение (повторять бесконечно).
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) – уже снят.

Пример сценария XDEV
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)

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

Таблица № 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

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