Использование сценариев

прочитано 1886 раз
20.08.2018 00:54

Что такое сценарии?

Сценарии - это набор команд для контроллера, призванный расширить функционал контроллера без перезакачивания прошивки, путём добавления специальных файлов, которые могут исполняться контроллером в полуавтоматическом режиме (т.е. по запросу от пользователя).

Как включить сценарии в прошивке?

Надо открыть конфигурационный файл, и раскомментировать настройку USE_SCENE_MODULE. Затем - на SD-карточку закачать папку SCENES (эта папка лежит внутри папки SD на гитхабе). Затем уже - можно смотреть и щупать. Внимание! Тестовые сцены используют пины 7,8,9, на которых на моей отладочной плате повешены сигнальные светодиоды. Если что - я предупредил, и надо понимать, что тестовые сценарии - это тестовые сценарии, и нужны для того, чтобы на их основе, после изучения, создать свои.

Как устроены сценарии?

  1. В папке SCENES есть подпапки с номерами 0, 1 и т. п. - это сценарии;
  2. Внутри папки сценария лежат несколько файлов, а также подпапка STEPS - там шаги сценария;
  3. Все файлы - в кодировке UTF-8, это ВАЖНО!
  4. Файл SCENE.TXT - содержит две строки: первая - имя сценария, вторая - число: если 1 - то сценарий зацикленный, если 0 - то выполняется однократно;
  5. Файл INIT.TXT - этот файл выполняется при запуске сцены на выполнение. Содержит сколько угодно строк, каждая строка - команда к контроллеру. Здесь можно инициализировать пины, например;
  6. Файл STOP.TXT - выполняется по окончании сцены или при выключении её принудительно. Также содержит любое кол-во строк, одна строка - одна команда к контроллеру. Здесь можно возвращать всё на исходную, например, выключить пины, которые задействованы сценарием;

Шаги сценария

  1. Лежат в папке STEPS. Имя файла - номер шага, например, 0.TXT - первый шаг, и т. п.;
  2. Шагов может быть до 65535;
  3. Внутри файла шага - две строки: первая - продолжительность в секундах ДО выполнения СЛЕДУЮЩЕГО шага; вторая - текстовая команда к контроллеру.

Можно просто посмотреть два тестовых сценария - там всё понятно, как гвоздь. Один сценарий - незацикленный, второй - зацикленный.

Новые возможности

Введение сценариев даёт потрясающие возможности по полуавтоматическому управлению чем угодно: возьмём тот же полив  - можно в INIT.TXT сценария попросить полив выключиться (он перейдёт в ручной режим автоматом):

CTSET=WATER|OFF

Потом в шагах сделать, что надо (например, циклически включать каналы полива, каждый по 10 минут), а в STOP.TXT - попросить модуль полива выключиться, а затем перейти в автоматический режим работы:

CTSET=WATER|OFF

CTSET=WATER|MODE|AUTO

И получим - дополнительную свободу управления поливом, когда в полуавтоматическом режиме можно управлять поливом, не затрагивая основные настройки модуля полива. Понятное дело, что возможности сценария не ограничиваются только поливом - в командах сценария можно применять ЛЮБЫЕ команды, понятные контроллеру - включать/выключать пины как напрямую (CTSET=PIN|13|ON), так и через микросхемы MCP* (CTSET=MCP|SPI|WRITE|6|1|ON), включать/выключать досветку (CTSET=LIGHT|ON, CTSET=LIGHT|OFF) и многое-многое другое. К сожалению, на данный момент полный список команд контроллера ещё не готов, но вы всегда можете задать вопрос по интересующему вас функционалу в теме обсуждения прошивки по адресу: https://www.forumhouse.ru/threads/443400, или спросить по электронной почте spywarrior@gmail.com.

Более того: как водится, команды управления сценариями можно подавать из любого места, например, путём публикации топиков MQTT, или прямого запроса через терминальную программу:

MQTT:

  • ClientName/SET/SCN/EXEC/0 - запустить сценарий номер 1;
  • ClientName/SET/SCN/STOP/3 - остановить сценарий номер 4.

Команда к контроллеру:

  • CTSET=SCN|EXEC|0 - запустить первый сценарий;
  • CTSET=SCN|STOP|0 - остановить первый сценарий.

Как видите, всё довольно просто, однако вы не должны беспокоиться о том, что где-то там надо будет вводить какие-то непонятные команды - эти команды приведены здесь в справочных целях, и единственное, что вы должны сделать - это первоначально настроить сценарии, в дальнейшем - их можно удобно запускать/останавливать как с дисплея, так и с конфигуратора, веб-интерфейса, любого MQTT-клиента. Всё проще, чем очень просто, как видите wink