Smart Zone — различия между версиями

Материал из Integra-S Wiki
Перейти к: навигация, поиск
 
(не показано 29 промежуточных версий этого же участника)
Строка 3: Строка 3:
 
# Трансляция состояний устройств в состояние зоны.
 
# Трансляция состояний устройств в состояние зоны.
 
# Отсечение ложных срабатываний путем перевода зоны в тревогу по минимум двум тревожным устройствам.
 
# Отсечение ложных срабатываний путем перевода зоны в тревогу по минимум двум тревожным устройствам.
 +
# Трансляция команд от Зоны в устройства(При отправки команды "Снять с охраны/Взять под охрану" у зоны, всем устройствам подключенным к этой зоне будет так же транслироваться данная команда.)
  
== Схема ==
+
== Создание схемы ==
  
 
В редакторе СКАДА необходимо добавить элементы, для этого необходимо:
 
В редакторе СКАДА необходимо добавить элементы, для этого необходимо:
Строка 13: Строка 14:
 
::3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
 
::3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
 
::4. Аналогично пункту 2 добавить элементы: Менеджер устройств (AcuarioManager), EGS Модуль (EGSModule).
 
::4. Аналогично пункту 2 добавить элементы: Менеджер устройств (AcuarioManager), EGS Модуль (EGSModule).
::5. Smart Zone (Скрипт необходимо импортировать отсюда [http://maps.integra-s.com:5434/resources/typedef2017/egs/Smart%20Zone.put Smart Zone]). Для того, чтобы импортировать скрипт необходимо в редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.
+
::5. Smart Zone (Скрипт необходимо сохранить отсюда [http://maps.integra-s.com:5434/resources/typedef2017/egs/Smart%20Zone.put Smart Zone]). Для того, чтобы импортировать скрипт необходимо в редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.
 
Необходимо добавить следующие связи:
 
Необходимо добавить следующие связи:
 
::1. Smart Zone: EGS вход:EGSInput + EGS Модуль: EGS Выход:EGSOutput.
 
::1. Smart Zone: EGS вход:EGSInput + EGS Модуль: EGS Выход:EGSOutput.
Строка 19: Строка 20:
 
::3. Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer.
 
::3. Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer.
 
[[File:базовая_схема_умнойЗоны.jpg|центр]]
 
[[File:базовая_схема_умнойЗоны.jpg|центр]]
 +
 +
==Проверка==
 +
 +
После запуска скрипта в параметре Хеш появится хеш текста скрипта, который должен быть равен тексту по следующей  [http://maps.integra-s.com:5434/resources/typedef2017/jsonpath.php?url=/egs/Smart%20Zone.put&path=0/params/hash/value ссылке], в том случае если скрипт не был изменен.
  
 
== Настройка ==
 
== Настройка ==
Строка 33: Строка 38:
 
:::2. changes_only - информировать только при смене состояния зоны.
 
:::2. changes_only - информировать только при смене состояния зоны.
 
::5. importance - таблица соответствия типа члена зоны маске состояния данного типа и далее числовому значению importance (важности) этого состояния. В данном параметре указываются типы элементов и их состояния с числовым значением.
 
::5. importance - таблица соответствия типа члена зоны маске состояния данного типа и далее числовому значению importance (важности) этого состояния. В данном параметре указываются типы элементов и их состояния с числовым значением.
:3. У зоны должны быть настроены следующие параметры:
+
3. У зоны должны быть настроены следующие параметры:
::1. alarm_factor - суммарный вес датчиков, достаточный для перехода зоны в тревогу, по умолчанию: 2.
 
:4. У линка ZoneLink, соединяющего датчик с зоной, должны быть настроены следующие параметры:
 
::1. weight - вес данного датчика в зоне, по умолчанию: 1.
 
3. Параметры Зоны:
 
 
:1. Суммарный вес датчиков для перехода зону в тревогу (alarm_weight), если:
 
:1. Суммарный вес датчиков для перехода зону в тревогу (alarm_weight), если:
 
::1. У зоны суммарный вес > 0, то означает минимальный необходимый суммарный вес входящих в зону датчиков для перевода зоны в состояние Тревога(alarm.alarm). Вес датчика определяется параметром Вес(weight) у Связь с зоной(ZoneLink) соединяющим датчик с зоной.
 
::1. У зоны суммарный вес > 0, то означает минимальный необходимый суммарный вес входящих в зону датчиков для перевода зоны в состояние Тревога(alarm.alarm). Вес датчика определяется параметром Вес(weight) у Связь с зоной(ZoneLink) соединяющим датчик с зоной.
::2. У зоны суммарный вес = 0, то используется алгоритм с тремя тревожными состояниями Маловероятная тревога(alarm.unlikely), Вероятная тревога(alarm.likely) и Тревога(alarm.alarm), вес которых указывается в настройках Smart Zone. Вес датчика рассчитывается по формуле: вес * приоритет обработки датчика * importance.
+
::2. У зоны суммарный вес = 0, то используется алгоритм с тремя тревожными состояниями Маловероятная тревога(alarm.unlikely), Вероятная тревога(alarm.likely) и Тревога(alarm.alarm), вес которых указывается в настройках Smart Zone(precedence). Вес датчика рассчитывается по формуле: вес * приоритет обработки датчика * importance.
 
:2. Область (area) - заполняется при создании зоны через клиент Интегра планета Земля.
 
:2. Область (area) - заполняется при создании зоны через клиент Интегра планета Земля.
:3. При отправки команды "Снять с охраны/Взять под охрану" у зоны, всем устройствам подключенным к этой зоне будет так же транслироваться данная команда.
+
4. У линка ZoneLink, соединяющего датчик с зоной, должны быть настроены следующие параметры:
 +
::1. weight - вес данного датчика в зоне, по умолчанию: 1.
  
 
== Дополнительно ==
 
== Дополнительно ==
  
Информация о состоянии зоны в параметре alarm_info:
+
{{Скрытый текст|Видимый текст=:1. Информация о состоянии зоны в параметре alarm_info:|Скрытый текст=
# alarm_factor - значение параметра alarm_factor зоны.
+
:# alarm_factor - значение параметра alarm_factor зоны.
# alarm_precedence - суммарный precedence (weight * precedence * importance) тревожных членов зоны.
+
:# alarm_precedence - суммарный precedence (weight * precedence * importance) тревожных устройств зоны.
# state_before - предыдущее состояние зоны.
+
:# state_before - предыдущее состояние зоны.
# state_after - текущее состояние зоны.
+
:# state_after - текущее состояние зоны.
# members - информация о членах зоны со следующими полями:
+
:# members - информация об устройствах зоны со следующими полями:
# type - тип устройства.
+
::# type - тип устройства.
# state - состояние устройства (текущее или последнее тревожное, если не вышел таймаут alarm_timeout).
+
::# state - состояние устройства (текущее или последнее тревожное, если не вышел таймаут alarm_timeout).
# datetime - время перехода устройства в состояние указанное в state.
+
::# datetime - время перехода устройства в состояние указанное в state.
# weight - вес устройства в зоне, т.е. значение параметра weight линка ZoneLink соединяющего устройство с зоной.
+
::# weight - вес устройства в зоне, т.е. значение параметра weight линка ZoneLink соединяющего устройство с зоной.
# precedence - значение параметра precedence устройства.
+
::# precedence - значение параметра precedence устройства.
# importance - важность состояния указанного в state в соответствии с таблицей settings.importance.
+
::# importance - важность состояния указанного в state в соответствии с таблицей settings.importance.
# alarm - флаг указывающий является ли состояние в state тревожным.
+
::# alarm - флаг указывающий является ли состояние в state тревожным.
# value - реальное текущее значение состояния устройства, может отличаться от значения в state в том случае, если state указывает на недавнюю, но уже сброшенную тревогу.
+
::# value - реальное текущее значение состояния устройства, может отличаться от значения в state в том случае, если state указывает на недавнюю, но уже сброшенную тревогу.
 
+
}}
Таблица соответствия порогов тревожных приоритетов тревожным состояниям зоны settings.precedence
+
:2. Таблица соответствия порогов тревожных приоритетов тревожным состояниям зоны settings.precedence:
 
Конфигурация использующая все три тревожных состояния зоны:
 
Конфигурация использующая все три тревожных состояния зоны:
 
   "precedence": {
 
   "precedence": {
Строка 68: Строка 70:
 
     "alarm_alarm": 90
 
     "alarm_alarm": 90
 
   },
 
   },
 +
где 10, 60, 90 - это значения параметра приоритет обработки устройств подключенные к зоне.<br />
 +
Если устройство подключенное к зоне ушло в тревогу со значением приоритета обработки:
 +
::1. От 0-9, то трансляция состояния устройства в состояние зоны не выполнится, значит Зона не изменит свое состояние.
 +
::2. От 10-59, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Маловероятная тревога(alarm_unlikely).
 +
::3. От 60-89, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Вероятная тревога(alarm_likely).
 +
::4. От 90 и выше, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Тревога(alarm_alarm).
 
При необходимости можно убирать или добавлять тревожные состояния зоны:
 
При необходимости можно убирать или добавлять тревожные состояния зоны:
 
   "precedence": {
 
   "precedence": {
 
     "alarm_alarm": 90
 
     "alarm_alarm": 90
 
   },
 
   },
Таблица важности состояний settings.importance
+
Таблица важности состояний settings.importance для типа BOLID_ContactSensor (устройство может быть и другим) отключить тревогу по тревожному состоянию alarm_openCase, а для состояния alarm_longOpen наоборот повысить "тревожность" вдвое:
Для типа BOLID_ContactSensor отключить тревогу по тревожному состоянию alarm_openCase, а для состояния alarm_longOpen наоборот повысить "тревожность" вдвое:
 
 
   "importance": {
 
   "importance": {
 
     "BOLID_ContactSensor": {
 
     "BOLID_ContactSensor": {
Строка 79: Строка 86:
 
       "alarm_longOpen": 2.0
 
       "alarm_longOpen": 2.0
 
     }
 
     }
 +
Если устройству BOLID_ContactSensor подключенного к зоне установилось состояние = alarm_openCase, то Зона не будет учитывать состояние этого устройства.<br />
 +
Если устройству BOLID_ContactSensor подключенного к зоне установилось состояние = alarm_longOpen, то приоритет обработки(например = 30) этого устройства * 2.0 (значение у alarm_longOpen), получая итоговое значение = 60, которое повлияет на состояние Зоны(будет не маловероятная тревога а вероятная тревога(т.к. приоритет обработки от 60-89)).<br />
 +
 
Не учитывать состояние всех датчиков типа StreetLighting:
 
Не учитывать состояние всех датчиков типа StreetLighting:
 
   "importance": {
 
   "importance": {
Строка 84: Строка 94:
 
       "*": 0.0,
 
       "*": 0.0,
 
     }
 
     }
 +
:3. Если в зоне нет ни одного устройства, состояние зоны устанавливается в Неизвестно (none.unknown).
 +
:4. Команды activate и deactivate транслируются в соответствующие команды устройств зоны с ненулевым весом.
 +
:5. Пересчет состояния зон происходит не по изменению параметров самих зон либо их устройств, но по таймеру с частотой не превышающей settings.interval для зон которых что-то поменялось с последнего пересчета, а так же с частотой не превышающей settings.alarm_timeout для всех зон вообще (это нужно для сброса "недавней" тревоги). Таким образом вне зависимости от частоты изменений состояний устройств зоны, управляя этими параметрами, можно добиться какой-то фиксированной нагрузки на сервер АМ. Так же пересчет состояний всех зон происходит при запуске скрипта. Ниже указаны параметры по изменению которых зона помечается как измененная и соответственно требующая пересчета своего состояния:
 +
:# state - состояние самой зоны либо какого-то устройства подключенного к ней.
 +
:# alarm_factor - параметр зоны.
 +
:# precedence - параметр устройства зоны.
 +
:# weight - параметр линка ZoneLink соединяющего зону с устройством.
 +
:# settings - параметр зоны, при изменении настроек скрипт пересобирается и перезапускается.
 +
:6. Важно при использовании отладочной настройки settings.alarm_info.changes_only не оставить ее в значении false, потому что в таком режиме параметр alarm_info зоны обновляется по таймеру в результате изменений указанных выше даже в том случае, если состояние зоны в результате пересчета не поменялось, например только в таком режиме возможно, чтобы alarm_info.state_before содержало такое же значение, что и alarm_info.state_after.
 +
:7. Информация о состоянии зоны в параметре alarm_info обновляется в тех случаях если:
 +
:# settings.changes_only == false.
 +
:# состояние зоны изменилось.
 +
:# alarm_info - пусто.
 +
:# в зоне новая тревога, т.е. тревога устройства зоны произошла позднее смены состояния зоны.
 +
 +
== Пример работы ==
 +
 +
1. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу > 0.
 +
 +
:Для построения схемы необходимо:
 +
 +
::1. Создать схему по выше описанному алгоритму (см. [[Smart Zone#Создание_схемы|Создание схемы]]).
 +
::2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
 +
[[File:Добавлена зона.jpg|центр]]
 +
::3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 2.
 +
[[File:sum_zone.jpg|центр]]
 +
::4. Установить в 2 IP видеокамерах состояние "Тревога", в результате у Зоны устанавливается состояние "Тревога".
 +
[[File:state_zone.jpg|центр]]
 +
 +
2. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу = 0 а так же использование важности какого то определенного состояния.
 +
:Для построения схемы необходимо:
 +
 +
::1. Создать схему по выше описанному алгоритму (см. [[Smart Zone#Создание_схемы|Создание схемы]]).
 +
::2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
 +
[[File:Добавлена зона.jpg|центр]]
 +
::3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 0.
 +
::4. В настройках скрипта smart zone установить желаемые значения для:
 +
"precedence": {
 +
  "alarm_unlikely": 10.0,
 +
  "alarm_likely": 60,
 +
  "alarm_alarm": 90
 +
}
 +
::5. Установить значение параметру приоритет обработки у 3-х видеокамер: 10, 60, 90.
 +
::6. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 10.
 +
:::Результат: у зоны изменится состояние на Маловероятную тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
 +
::7. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 60.
 +
:::Результат: у зоны изменится состояние на Вероятную тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
 +
::8. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 90.
 +
:::Результат: у зоны изменится состояние на Тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
 +
::9. В настройках smart zone установить важность определенному состоянию для увеличения приоритета обработки устройству:
 +
"importance": {
 +
  "VideoCamera": {
 +
      "alarm_dmDisconnected": 0.0,
 +
      "alarm_alarm": 2.0
 +
  }
 +
::10. Изменить состояние на тревогу(alarm_alarm) у видеокамеры с приоритетом обработки = 60.
 +
:::Результат: у зоны изменится состояние на Тревогу, т.к. был указан importance для состояния = "alarm_alarm": 2.0.<br />
 +
 +
Так же если за время указанное в alarm_timeout в тревогу уйдут несколько устройств подключенные к зоне, то учитываться приоритет обработки будет общий от этих нескольких устройств. <br />
 +
Например:
 +
::1. Если видеокамере с приоритетом обработки = 60 установится тревожное состояние, то у зоны состояние будет = Вероятная тревога.
 +
::2. Если за время указанное в alarm_timeout установится тревожное состояние другой видеокамере с приоритетом обработки = 30, то состояние зоны обновится с вероятной тревоги на тревога, т.к. общий приоритет обработки = 90.

Текущая версия на 11:47, 22 сентября 2021

Назначение

  1. Трансляция состояний устройств в состояние зоны.
  2. Отсечение ложных срабатываний путем перевода зоны в тревогу по минимум двум тревожным устройствам.
  3. Трансляция команд от Зоны в устройства(При отправки команды "Снять с охраны/Взять под охрану" у зоны, всем устройствам подключенным к этой зоне будет так же транслироваться данная команда.)

Создание схемы

В редакторе СКАДА необходимо добавить элементы, для этого необходимо:

1. Перейти на вкладку "Типы элементов" и выбрать в списке элемент Компьютер (Computer).
Computer.jpg
2. Дважды нажать на элемент Компьютер, после чего появится окно для добавления элемента.
Add element.jpg
3. Нажать кнопку "Добавить". Элемент появится на рабочей области.
4. Аналогично пункту 2 добавить элементы: Менеджер устройств (AcuarioManager), EGS Модуль (EGSModule).
5. Smart Zone (Скрипт необходимо сохранить отсюда Smart Zone). Для того, чтобы импортировать скрипт необходимо в редакторе СКАДА нажать на меню Действия > Импорт элементов > выбрать сохраненный скрипт.

Необходимо добавить следующие связи:

1. Smart Zone: EGS вход:EGSInput + EGS Модуль: EGS Выход:EGSOutput.
2. Менеджер устройств: Менеджер устройств:ManagingContainer + EGS Модуль: Привязка к менеджеру:ManagingContent.
3. Менеджер устройств: ПО:SoftwareContent + Компьютер или Сервер: Установленное ПО:SoftwareContainer.
Базовая схема умнойЗоны.jpg

Проверка

После запуска скрипта в параметре Хеш появится хеш текста скрипта, который должен быть равен тексту по следующей ссылке, в том случае если скрипт не был изменен.

Настройка

1. У компьютера/сервера должен быть настроен параметр сетевой адрес (ip).
2. Параметры Smart Zone:

1. Включен (enabled) - задействовать триггер.
2. Настройки (settings) - настройки скрипта имеют следующие параметры:
Настройки скрипта.jpg
1. alarm_timeout - интервал в течении которого датчик подключенный к зоне считается тревожным, даже если тревожное состояние уже сброшено.
2. interval - фиксированный интервал пересчета состояния зоны.
3. precedence - типы тревожных состояний зоны, с указанием минимальных значений суммарного precedence(приоритет обработки) для перехода зоны в это состояние.
4. alarm_info - информация о состоянии зоны:
1. alarms_only - информировать только о тревожных датчиках.
2. changes_only - информировать только при смене состояния зоны.
5. importance - таблица соответствия типа члена зоны маске состояния данного типа и далее числовому значению importance (важности) этого состояния. В данном параметре указываются типы элементов и их состояния с числовым значением.

3. У зоны должны быть настроены следующие параметры:

1. Суммарный вес датчиков для перехода зону в тревогу (alarm_weight), если:
1. У зоны суммарный вес > 0, то означает минимальный необходимый суммарный вес входящих в зону датчиков для перевода зоны в состояние Тревога(alarm.alarm). Вес датчика определяется параметром Вес(weight) у Связь с зоной(ZoneLink) соединяющим датчик с зоной.
2. У зоны суммарный вес = 0, то используется алгоритм с тремя тревожными состояниями Маловероятная тревога(alarm.unlikely), Вероятная тревога(alarm.likely) и Тревога(alarm.alarm), вес которых указывается в настройках Smart Zone(precedence). Вес датчика рассчитывается по формуле: вес * приоритет обработки датчика * importance.
2. Область (area) - заполняется при создании зоны через клиент Интегра планета Земля.

4. У линка ZoneLink, соединяющего датчик с зоной, должны быть настроены следующие параметры:

1. weight - вес данного датчика в зоне, по умолчанию: 1.

Дополнительно


1. Информация о состоянии зоны в параметре alarm_info:

  1. alarm_factor - значение параметра alarm_factor зоны.
  2. alarm_precedence - суммарный precedence (weight * precedence * importance) тревожных устройств зоны.
  3. state_before - предыдущее состояние зоны.
  4. state_after - текущее состояние зоны.
  5. members - информация об устройствах зоны со следующими полями:
  1. type - тип устройства.
  2. state - состояние устройства (текущее или последнее тревожное, если не вышел таймаут alarm_timeout).
  3. datetime - время перехода устройства в состояние указанное в state.
  4. weight - вес устройства в зоне, т.е. значение параметра weight линка ZoneLink соединяющего устройство с зоной.
  5. precedence - значение параметра precedence устройства.
  6. importance - важность состояния указанного в state в соответствии с таблицей settings.importance.
  7. alarm - флаг указывающий является ли состояние в state тревожным.
  8. value - реальное текущее значение состояния устройства, может отличаться от значения в state в том случае, если state указывает на недавнюю, но уже сброшенную тревогу.

2. Таблица соответствия порогов тревожных приоритетов тревожным состояниям зоны settings.precedence:

Конфигурация использующая все три тревожных состояния зоны:

 "precedence": {
   "alarm_unlikely": 10.0,
   "alarm_likely": 60,
   "alarm_alarm": 90
 },

где 10, 60, 90 - это значения параметра приоритет обработки устройств подключенные к зоне.
Если устройство подключенное к зоне ушло в тревогу со значением приоритета обработки:

1. От 0-9, то трансляция состояния устройства в состояние зоны не выполнится, значит Зона не изменит свое состояние.
2. От 10-59, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Маловероятная тревога(alarm_unlikely).
3. От 60-89, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Вероятная тревога(alarm_likely).
4. От 90 и выше, то трансляция состояния устройства в состояние зоны выполнится и у зоны состояние будет = Тревога(alarm_alarm).

При необходимости можно убирать или добавлять тревожные состояния зоны:

 "precedence": {
   "alarm_alarm": 90
 },

Таблица важности состояний settings.importance для типа BOLID_ContactSensor (устройство может быть и другим) отключить тревогу по тревожному состоянию alarm_openCase, а для состояния alarm_longOpen наоборот повысить "тревожность" вдвое:

 "importance": {
   "BOLID_ContactSensor": {
     "alarm_openCase": 0.0,
     "alarm_longOpen": 2.0
   }

Если устройству BOLID_ContactSensor подключенного к зоне установилось состояние = alarm_openCase, то Зона не будет учитывать состояние этого устройства.
Если устройству BOLID_ContactSensor подключенного к зоне установилось состояние = alarm_longOpen, то приоритет обработки(например = 30) этого устройства * 2.0 (значение у alarm_longOpen), получая итоговое значение = 60, которое повлияет на состояние Зоны(будет не маловероятная тревога а вероятная тревога(т.к. приоритет обработки от 60-89)).

Не учитывать состояние всех датчиков типа StreetLighting:

 "importance": {
   "StreetLighting": {
     "*": 0.0,
   }
3. Если в зоне нет ни одного устройства, состояние зоны устанавливается в Неизвестно (none.unknown).
4. Команды activate и deactivate транслируются в соответствующие команды устройств зоны с ненулевым весом.
5. Пересчет состояния зон происходит не по изменению параметров самих зон либо их устройств, но по таймеру с частотой не превышающей settings.interval для зон которых что-то поменялось с последнего пересчета, а так же с частотой не превышающей settings.alarm_timeout для всех зон вообще (это нужно для сброса "недавней" тревоги). Таким образом вне зависимости от частоты изменений состояний устройств зоны, управляя этими параметрами, можно добиться какой-то фиксированной нагрузки на сервер АМ. Так же пересчет состояний всех зон происходит при запуске скрипта. Ниже указаны параметры по изменению которых зона помечается как измененная и соответственно требующая пересчета своего состояния:
  1. state - состояние самой зоны либо какого-то устройства подключенного к ней.
  2. alarm_factor - параметр зоны.
  3. precedence - параметр устройства зоны.
  4. weight - параметр линка ZoneLink соединяющего зону с устройством.
  5. settings - параметр зоны, при изменении настроек скрипт пересобирается и перезапускается.
6. Важно при использовании отладочной настройки settings.alarm_info.changes_only не оставить ее в значении false, потому что в таком режиме параметр alarm_info зоны обновляется по таймеру в результате изменений указанных выше даже в том случае, если состояние зоны в результате пересчета не поменялось, например только в таком режиме возможно, чтобы alarm_info.state_before содержало такое же значение, что и alarm_info.state_after.
7. Информация о состоянии зоны в параметре alarm_info обновляется в тех случаях если:
  1. settings.changes_only == false.
  2. состояние зоны изменилось.
  3. alarm_info - пусто.
  4. в зоне новая тревога, т.е. тревога устройства зоны произошла позднее смены состояния зоны.

Пример работы

1. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу > 0.

Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Создание схемы).
2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
Добавлена зона.jpg
3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 2.
Sum zone.jpg
4. Установить в 2 IP видеокамерах состояние "Тревога", в результате у Зоны устанавливается состояние "Тревога".
State zone.jpg

2. Когда суммарный вес(alarm_weight) датчиков для перехода зоны в тревогу = 0 а так же использование важности какого то определенного состояния.

Для построения схемы необходимо:
1. Создать схему по выше описанному алгоритму (см. Создание схемы).
2. Добавить элемент Зона и 3 IP видеокамеры, соединив пины "Зона:ZoneOutputPin" у Зоны и "Привязка к зоне:ZoneInputPin" у IP видеокамер.
Добавлена зона.jpg
3. В свойствах элемента Зона установить суммарный вес датчиков для перехода зоны в тревогу = 0.
4. В настройках скрипта smart zone установить желаемые значения для:
"precedence": {
  "alarm_unlikely": 10.0,
  "alarm_likely": 60,
  "alarm_alarm": 90
}
5. Установить значение параметру приоритет обработки у 3-х видеокамер: 10, 60, 90.
6. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 10.
Результат: у зоны изменится состояние на Маловероятную тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
7. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 60.
Результат: у зоны изменится состояние на Вероятную тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
8. Изменить состояние на тревогу у видеокамеры с приоритетом обработки = 90.
Результат: у зоны изменится состояние на Тревогу. Далее вернуть видеокамере состояние в норму, чтобы зоне установилось состояние В Норме.
9. В настройках smart zone установить важность определенному состоянию для увеличения приоритета обработки устройству:
"importance": {
  "VideoCamera": {
     "alarm_dmDisconnected": 0.0,
     "alarm_alarm": 2.0
  }
10. Изменить состояние на тревогу(alarm_alarm) у видеокамеры с приоритетом обработки = 60.
Результат: у зоны изменится состояние на Тревогу, т.к. был указан importance для состояния = "alarm_alarm": 2.0.

Так же если за время указанное в alarm_timeout в тревогу уйдут несколько устройств подключенные к зоне, то учитываться приоритет обработки будет общий от этих нескольких устройств.
Например:

1. Если видеокамере с приоритетом обработки = 60 установится тревожное состояние, то у зоны состояние будет = Вероятная тревога.
2. Если за время указанное в alarm_timeout установится тревожное состояние другой видеокамере с приоритетом обработки = 30, то состояние зоны обновится с вероятной тревоги на тревога, т.к. общий приоритет обработки = 90.