Главная  /  Программа «Smacont-ESP»  /  Сценарии (задачи/триггеры/обработчики)

Сценарии (задачи/триггеры/обработчики)


SMACONT. Сценарии

Содержание

Общее описание
Сценарии (задачи/триггеры/обработчики)
Примеры записи сценариев





Общее описание

Документ в стадии разработки

В "Программе Настройки" будут выполнены доработки, для удобства написания сценариев:
оптимизация расположения и отображения блока окон-подсказок "Действия (ActX)", "Переменные (VarX)", "Константы (ConstX)" и "События (Events)";
дополнительная возможность редактирования сценариев в окне "Результат".


Сценарии, это совокупность событий и действий.

С помощью сценариев, выполнение рутинных действий перекладывается на устройство.

За счет того, что сценарии хранятся и выполняются на самом устройстве, достигается высокая надежность работы устройства, так как, нет зависити от центрального пульта управления.

Сценарии составляются в «Программе Настройки», на вкладке «Сценарии».


Smacont. Вкладка сценарии

Вкладка сценарии



Сценарии (задачи/триггеры/обработчики)

Сценарии опрашиваются (выполняются) в цикле «loop» каждые 10мс.

Сценарии опрашиваются (выполняются) друг за другом, в том порядке, как они прописаны в редакторе сценариев.

После выполнения последнего сценария, производится ожидание следующего цикла (10мс).

Сценарий записывается в одну строку. Один сценарий - одна строка.


Формат записи сценариев

Описание каждого сценария имеет строго определенную форму записи:
if (условие/событие) {верно, выполнить действия} else {ложно, выполнить действия}

Инструкция «if (условие/событие)» вычисляет условие в скобках и:
• если результат true (верно), то выполняется блок действий {верно, выполнить действия};
• если результат false (ложно), то выполняется следующий после else (иначе) блок действий {ложно, выполнить действия};

Допускается наличие только одного из блоков действий {верно, выполнить действия} или {ложно, выполнить действия}.
Например:
• if (условие/событие) {верно, выполнить действия}
• if (условие/событие) {} else {ложно, выполнить действия}
• if (условие/событие) else {ложно, выполнить действия}


«Условия»

Поддерживается три вида «условий».

1. Сравнение одной переменной «VarX» c другой переменной «VarX».
• Пример записи: if (Var16 == var159).
• Регистр написания обязательного префикса «Var» не имеет значения.

2. Сравнение переменной «VarX» c константой «ConstX».
• Пример записи: if (Var22 != Const37).
• Значение константы «ConstX», должно быть прописано во вкладке «EE/RTCm/CONST».
• Регистр написания обязательных префиксов «Var» и «Const» не имеет значения.

3. Сравнение переменной «VarX» c константой «0...254».
• Данная запись используется для сравнения переменной «VarX» с положительными числами от 0 до 254 включительно.
• Пример записи: if (Var16 < 10) (число записывается без префикса).
• Регистр написания обязательного префикса «Var» не имеет значения.


Условие может содержать несколько сравнений (не более 15-ти), перечисляемые через оператор «&&» (И) или оператор «||» (ИЛИ).
Пример записи:
if (Var125 != Const7 && Var0 > 10 && Var7 == var9 && Var54 != var19) (выполнится ТОЛЬКО при совпадении всех условий проверки).
if (Var125 != Const7 || Var0 > 10 || Var7 == var9 || Var54 != var19) (выполнится при совпадении ХОТЯ БЫ ОДНОГО условия проверки).


Дополнительные «условия»

Поддерживается следующие «дополнительные условий».

1. «Start» - выполнить при подаче напряжения питания или при сбросе (RST).
• Пример записи: if (Start == 1) {верно, выполнить действия} или if (start) {верно, выполнить действия}.
• Условие выполняется ТОЛЬКО ОДИН РАЗ при подаче напряжения питания или при сбросе (RST).
• Условие может быть расположено в любом месте списка условий.
• Допускается использование нескольких условий «Start» в списке условий.
• Использование else (иначе) не предусмотрено.
• Регистр написания «Start» не имеет значения.

2. «Exe» - выполнить блок действий.
• Пример записи: if (EXE == 1) {выполнить действия} или if (exe) {выполнить действия}.
• Действия будут выполняться в каждом цикле, без проверки каких либо условий.
• Условие может быть расположено в любом месте списка условий.
• Допускается использование нескольких условий «exe» в списке условий.
• Использование else (иначе) не предусмотрено.
• Регистр написания «Exe» не имеет значения.


Операторы сравнения

При сравнении используются следующие операторы:
• «<» меньше;
• «<=» меньше или равно (пробелы между знаками не допускаются);
• «==» равно (пробелы между знаками не допускаются);
• «!=» не равно (пробелы между знаками не допускаются);
• «>=» больше или равно (пробелы между знаками не допускаются);
• «>» больше.


«События»

Поддерживаются следующие типы «событий».

1. «Falling» - уменьшение значения (). Пример записи: if (Var19 == Falling)
• Событие формируется в случае, когда текущее значение переменной «VarX» МЕНЬШЕ предыдущего значения.

2. «Rising» - увеличение значения (). Пример записи: if (Var19 == Rising)
• Событие формируется в случае, когда текущее значение переменной «VarX» БОЛЬШЕ предыдущего значения.

3. «Change» - изменение значения (↓↑). Пример записи: if (Var19 == Change)
• Событие формируется в случае, когда текущее значение переменной «VarX» ОТЛИЧАЕТСЯ от предыдущего значения.
• Например, событие «Change» формируется если текущее значение «Var55=23.7», а предыдущее значение «Var55=23.78» или «Var55=23.69».

4. «UpDate» - обновление значения (). Пример записи: if (Var19 == UpDate)
• Событие формируется в случае, когда значение переменной «VarX» ОБНОВИЛОСЬ.
• Например, событие «UpDate» формируется если, при опросе какого либо датчика, в переменную «VarX» было записано значение температуры (давления, влажности). При этом, если текущее значение переменной «VarX» ОТЛИЧАЕТСЯ от предыдущего значения, то дополнительно будет сформировано событие «Change».

5. «Malfunction» - неисправность (). Пример записи: if (Var19 == Malfunction)
• Событие формируется при неисправности датчика или при ошибке выполнения действия (запроса и т.п.).
• Например, событие «Malfunction» формируется при опросе неисправного (отключенного) датчика.

6. «Click» - одиночное нажатие (). Пример записи: if (Var19 == Click)
• Событие формируется при одиночном нажатии кнопки.

7. «DubleClick» - двойное нажатие (↵↵). Пример записи: if (Var19 == DubleClick)
• Событие формируется при двойном нажатии кнопки.

8. «Hold» - удержание. Пример записи: if (Var19 == Hold)
• Событие формируется при длительном удержании кнопки в нажатом состоянии.

9. «AutoRepeat» - автоповтор. Пример записи: if (Var19 == AutoRepeat)
• Событие формируется каждые Xмс (100мс по умолчанию), пока кнопка находится в нажатом состоянии.
• Данное событие удобно применять, например, для циклического увеличения (уменьшения) яркости освещения. При этом длительность цикла равна времени автоповтора.

ПРИМЕЧАНИЯ.
1. События формируются как для целых положительных (отрицательных) так и дробных положительных (отрицательных) чисел.
2. Регистр написания названия событий не имеет значения.
3. В условии используется ТОЛЬКО оператор «==»!.
4. Все события, кроме события «Malfunction», сбрасываются в конце цикла. Событие «Malfunction» сбрасывается ТОЛЬКО после устранения неисправности.


Блоки действий «{верно, выполнить действия}» и «{ложно, выполнить действия}».

1. Блоки действий содержат номера действий, которые необходимо выполнить при проверке «условий».

2. Пример записи: { Act3; ACT8;act100; }

3. Количество «действий» в одном блоке действий НЕ ДОЛЖНО превышать 14-ти.

4. Номер действия ОБЯЗАТЕЛЬНО ДОЛЖЕН заканчиваться символом «;» (точка с запятой).

5. Регистр написания обязательного префикса «Act» не имеет значения.

6. Допускается не использовать префикс «Act». В этом случае формат записи блока действий может иметь вид: { 3;8;100;} или {3; 8;act100;}

7. Допускается не использовать символ пробела при перечислении номеров действий.



Примеры записи сценариев

if (start) { Act0; Act1; Act2; Act3; Act4; Act5; Act6; Act7; }
if (Var22 > Var48) { Act38; Act138; Act0; }
if (Var32 > Const33) { Act38; Act138; Act0; } else { Act10; Act36; Act37; }
if (exe) { Act0; Act1; Act2; }
if (Var7 != 0) { } else { Act10; Act36; Act37; }
if (Var148 == Change && Var148 == 3 && Var155 == Var99) { Act38; Act138; Act0; } else { Act10; Act36; Act37; }
if (Var148 == Change || Var148 == 3 || Var155 == Var99) { Act38; Act138; Act0; } else { Act10; Act36; Act37; }



Программы

Прошивка «Smacont-ESP»:
скачать

«Программа Настройки»:
запусить (только браузер Firefox)
скачать zip-архив

Телеграм канал

Новости

Действие «wifi_CheckConn()». После подключения к WiFi-сети, выполнить действие с задержкой

Обмен данными. Open Monitoring

Датчики температуры и влажности AHT10/AHT15/AHT20/AHT21/AHT25

Датчик температуры и влажности SHT30 (SHT31/SHT35)

Действие «valueToVx()», «valueToArrVx()». Отслеживание заданного уровня в диапазоне значений

Действие «termostat()». Термостат

ESP-NOW. Датчик температуры и влажности с питанием от батареек

Последовательные интерфейсы (UART, I2C, SPI)

Управление одноканальным модулем реле

Протокол MQTT

Обмен данными. NarodMon

Обмен данными. ioControl

Обмен данными. WhatsApp

Обмен данными. Telegram

Текстовые шаблоны



Программы для модулей ESP     Программы     Применения     Справочник         Контакты     SMACONT. Напишите нам smacont@ya.ru