Инструкция

Если хотите просто вручную мигать светодиодами и узнавать состояние герконов двери - ничего этого читать не нужно - приступайте сразу к загрузке. 

Но если вам нужно фиксировать момент открытия двери, слать предупреждающие сообщения на Email или на Telegram, управлять освещеним в зависимости от времени суток, измерять температуру и включать обогреватели, то рекомендуется к прочтению. Поверьте ничего сложного здесь нет.

 

Панель управление имеет два режима  Пульт и График - переключение кнопками

 и 

.

 

Инструкция посвящена работе в режиме графика.   

Руководство состоит из двух частей:

1. Язык управления bs88;

2. Понимание и настройка  панели управления

3. Примечания

Для редактирования скрипта или конфига нажмите кнопку

на панели управления.

 

 1. Язык управления (язык рецептов) 

Введение в язык управления.

Язык управления BS-88 основан на стандарте ISA S-88. Пример графического аналога - SFC. Язык управления позволяет ESP принимать решения о стратегиях управления на основе текущих условий и позволяет упорядочивать управление ESP в соответствии с потребностями некоторых действий. 
Этот язык отличается от традиционных языков программирования. Причина в том, что язык описывает действия по управлению производственным процессом. В соответствии с S-88, производственный процесс состоит из операций, которые могут происходить одновременно, например, нагрева воды и приготовления компонентов раствора. В свою очередь операции состоят из фаз, которые выполняются последовательно. Существует только два типа операторов языка управления

1. Активные операторы

2. Операторы перехода (с условием или без условия) (transition).

Например, операция нагрева воды:

Фаза 1: открываем водяной клапан;

когда срабатывает датчик уровня, переходим на фазу 2

Фаза 2: закрыть  водяной клапан;

включить нагреватель; ;

когда температура достигает 60 градусов, переход к фазе 3

Фаза 3:  выключить  нагреватель;

стоп;

Предположим, что водяной клапан подключен к DO,  датчик уровня воды подключен к D5, нагреватель подключен к D1, а A0 - это датчик температуры.

Сценарий выглядит следующим образом:

1: $ D0 = 1; // phase1
if($D1 = 1) trans {2}; // wait_for_D5_become_ "on"

2: $ D0 = 0; // phase2
$D2 = 1;
if($А0 >= 60) trans {3}; // wait_for_tempeature

3: $D2 = 0;
stop; // end_of_script

 

Переменные

Следующие переменные используются в BS-88 $A0, $D0, $D1 ...... $D8, которые соответствуют esp8266 пинам nodemcu mini - A0,D0,D1 ...... D8

Есть переменные для информации, уставок, вычислений $S0 - $S4, Эти переменные видны на панели управления.

Язык использует написание переменных, таких как принято для ардуино, но на панели  переменные могут иметь другое имя, например: Uakk, Set_Ux, Set_temp. Замена имен возможна в редакторе конфигурации. Чтобы получить доступ к редактору, нажмите на значок шестеренки на панели. Есть также переменные для внутренних вычислений или $X0- $X9 памяти. У них нет своих полей для отображения, но их можно увидеть, когда мы установим их значения для переменной

$X9 = $X9 + 1; // автоматическое приращение

$S3 = $X9; // отображаем $X9 в поле S3 приборной панели.

Структура фазы:

Метка :;

Акт 1

Акт 2

.......

Акт N

Условие 1, переходная метка 1

Условие 2, переходная метка 2

.........

Условие M, переходная метка M 

Операторы Aкт (активные операторы, операторы действия) могут включать / выключать устройства, выполнять промежуточные вычисления, отправлять электронные письма, отображать переменные на панели и т. д. Каждый оператор действия выполняется один раз в фазе, затем ожидается переходное состояние: if (условие) trans {метка}; или просто без условий trans {метка}; Когда активные команды выполняются и ожидается условие, переменная $timer увеличивает свое значение раз в секунду. Таким образом, вы можете сделать реле времени. Давайте включим $D3 на 45 секунд

. . . . . . . . .

 7: $D3 = 1;

if ($timer> = 45) trans {8}; //На этой строке алгоритм как бы 'застревает' до выполнения условия

8: $D3 = 0;

, , , , , , , ,

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

Примечание: есть еще один единственный оператор - оператор "stop", который прекращает выполнение скрипта. Однако в этом случае поле AUTO на панели останется включенным.

Специальные переменные (функции) 

Мы рассмотрели одну такую переменную - $timer, но есть и другие

$ntime - [n] ow [time] - текущее время; используется как число с плавающей запятой 13,4 означает 13 часов и 40 минут

$random - случайное число [0: 1] (используется для имитации жизни в пустом доме) 

$morning - начало дня для средних широт (используется для выключения освещения) 

$evening - время заката (используется для включения освещения) 

$retro - значение таймера, которого таймер достиг в предыдущей фазе 

$temp - текущее значение температуры от датчика температуры ds18b20, подключенного к D5 

$ptime - время в секундах от начала периода сканирования, равного T_scan.

Функции: 

М(); - отправить почту; в  скобках любой текст с именами перменных, вместо которых будут подставлены их зачения (Email вводится на странице конфигурации)

T(); - отправить на Telegram; в  скобках любой текст с именами перменных, вместо которых будут подставлены их зачения (Token и Id чата вводится на странице коефигурации)

E($Sx), где x - 0,1,2,3,4 - запомнить переменную $Sx в EPROM. Подробнее описано в примечании. 

Условие в оператора перехода

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

=,>, <,> =, <=, <> 

Разрешается только одна пара () . 

Допускается только одно условие в одном операторе. 

Выражения состоят из чисел, функций и арифметики поет +, ~, *, /. 

Примечание: символ «~» используется как минус. Символ «-» означает  отрицательное значение.

-2 * -3 означает (-2) * (- 3) = 6; 

10 ~ 5 означает 10-5 = 5; 

Например, выключите свет (пин D1) за час до восхода солнца, включите 22:00 час, 

отправить письмо в соответствии с изменениями. 

1: $ D1 = 1;
М (Light_on_at_ $ntime); // Отправить почту
if ($ntime> = $morning ~ 1) trans {2}; 

2: $ D1 = 0;
М (Light_off_at_ $ Ntime); // Отправить почту
if ($ ntime = 22.00) trans {1}; 

Примечание по использованию времени и знака минус: $morning~1 за час до восхода;

22.00 - т.е. часы минуты разделяются точкой. Хотя обычно 22:00.

Если возникает какая-либо ошибка, транслятор сообщает нам в строке «last_error» на странице конфигурации. 

Проверка скрипта начинается до его запуска. Сценарий начинается с нажатия клавиши AUTO на панели управления. 

Счетчик событий.

Иногда нам нужно сосчитать некоторые события, например. Импульсы от счетчика Гейгера. Для этого скетч всегда следит за выводом D0 и увеличивает переменную $X0 на 1 при изменении статуса D0. В реальном скетче, используем счетчик следующим образом

1 :;
if ($ptime = 30) trans {2};

2: $S0 = $X0; отображаем счечик за 30 сек
$ X0 = 0;// обнуляем счетчик
trans{1};

 

Мой первый сценарий

Синхронизировать S0 с D0 

1: $S0 = $D0;
trans {1};

Мой 2-й сценарий

$S0 как сумма D0, D1, D2 
1: $S0 = $D0 + $D1 + $D2;
trans {1};

Мой 3-й сценарий

S0 как счетчик от 0 до 5 и обратно

1: $S0 = 0;
trans {2};

2: $S0 = $S0 + 1;
if ($ S0 <5) trans {2};
trans{3};

3: $S0 = $S0 ~ 1; // примечание:  '~' как минус 
if ($S0> 0) trans {3};
trans{2};

Прием от других источников по Serial. 

Подключите ваш esp8266 к другому источнику. Возможен только симплексный сериал. Подключите провод между контактом RX esp8266 и TX источника сигнала. Скорость 115200 бод/сек. Протокол данных XML. Функция $input запрашивает последовательный буфер, ищет данные для примера <2> 3.14 </ 2> и отправляет эти 3.14 в переменную $X2. Один буфер может содержать несколько данных. <0> 2001.99 </ 0> <7> 1939 </ 7> <4> 2.87 </ 4>. Мы должны сами конвертировать данные с датчиков в XML. '

Это просто проверить эту опцию. Загрузите bortx.ino, вызовите страницу конфигурации , введите скрипт 

1: $S0 = $input;
trans {1};

Сохраните конфигурацию, вернитесь на панель, нажмите кнопку AUTO. Запустите терминал. Введите <0>123.56</0> [Enter], Вы увидите это число в поле S0.

Запросы от STA клиентов.

STA клиенты это esp8266 (или другие WiFi хосты), работающие в режиме STA (станция). Еsp8266 прошитая BortX является сервером и может принимать сообщения от клиентов. отправляющих ему информацию в формате XML аналогично отправке по серийному порту на RX. Аргумент GET запроса ?mes=<5>12.34</5><7 ..и т.д.  В ответ шлется широковещательное сообщение тоже в формате XML с тегами 0-9. Широковещательное сообщение подготавливается заранее функцией B(строка). Отличие от приема по Serial - нет функции инициирующий прием ($input). Переменные $X0-$X9 меняют значения по мере поступления информации от клиентов.  

 

 

2. Понимание и конфигурация панели управления

 

Четыре последних поля нужны всегда

Auto - запуск / остановка скрипта

T_scan - период сбора данных 1сек-300сек. 10000 последних точек могут быть заархивированы. Таким образом, у нас есть история от 3 часов до 50 дней.

Marker - показывает качество связи между esp и приборной панелью. Фактически, маркер - это время в секундах с момента последнего пинга, обычно 60 секунд. Если в течение 150 секунд не происходит пинг, происходит перезапуск esp, и маркер становится  значением 1000 - высокий импульс, красная линия на приборной панели. Поэтому, когда вы смотрите на приборную панель, вы можете увидеть моменты перезапуска ESP.

Time - без комментариев.

Чтобы изменить T_scan, нажмите кнопку, где написано "T_scan", эта переменная станет активной (оранжевый цвет), затем введите число в зеленое поле ввода и нажмите кнопку Enter.

 

Переименование полей из стандартных имен в имена пользователей и установка режима

На панели приборов нажмите кнопку

 

На странице конфигурации посмотрите таблицу «Имена пинов и полей». Введите новое имя поля и установите режим поля. Посмотрите на последние две строки. Здесь вы можете установить линейные коэффициенты, чтобы преобразовать данные вывода A0 в соответствии с выражением Y = k * A0 + b;

Измените  режим поля "hide","only read","read/write". 

Примечание:

D0-D4 используются для управления,  D5-D8 используются как датчики.

 

Наблюдение и редактирование дополнительной информации

На панели управления нажмите кнопку 

 

Наидите заголовок  Additional information
 

bortx_id - обычно число 7-8 знаков - номер чипа

bortx_pass - если установлен пароль, то вы и только вы можете вызвать страницу конфигурации и изменять значения переменных

email - если вы используете в скрипте функцию mail M (), то вам необходимо заполнить это поле

mission - содержание этого поля вы можете увидеть на панели инструментов

TimeZone - чтобы использовать правильные значения $ntime [NowTime], отредактируйте это поле

LastError - освещает причину перезапуска ESP. И еще: Если вы запускаете скрипт - нажатием AUTO, но AUTO не переходит в «ON», в вашем скрипте обнаружена ошибка, и эта ошибка описана в этом поле.


3. Примечания

1.Отправка писем

Если указан адрес электронной почты, то при каждом запуске esp вы будете получать стартовое сообщение.

Вы также можете использовать функцию отправки email M () в скрипте.

2.Политика запоминания состояния

Состояния запоминаются в eprom раз в 20 секунд и восстанавливаются при рестарте. Более частые запоминания привели бы к выходу EPROM из строя как памяти, имеющей ограниченное число перезаписей. Однако, принудительно можно записывать и раз в секунду, но это касается переменных $S0-$S4.  Для запоминания в любой момент используйте операторы E($S0) ... E($S4).. Восстановление после рестарта произойдет автоматически.

 

 

 

Контакты:

Telegram - @citorubot

Email - admin@bortx.ru

Блог - https://bort-x.blogspot.com/2019/03/bortx.html#comment-form

Copyright © 2024 BortX.ru
GS RU