Версия документа 1.0 · основано на анализе ветки ver4stable github.com/IoTManagerProject/IoTManager
1. Что такое сценарии
Сценарии — это пользовательская логика работы контроллера: набор правил «при каком событии и при каких условиях что сделать». Они позволяют реализовать индивидуальный алгоритм, не меняя прошивку. В основе языка лежит выражение вида: «Если условие истинно — выполнить одно действие, иначе — другое».
Сценарий пишется в текстовом редакторе прямо в веб-интерфейсе устройства (вкладка «Сценарий») и сохраняется в файл /scenario.txt. При сохранении ядро заново загружает и разбирает его.
Где это выполняется: движок сценариев встроен в прошивку (файл IoTScenario.cpp). Это полноценный интерпретатор небольшого языка выражений: он читает текст, строит дерево и исполняет его прямо на ESP.
2. Главный принцип: событийность
Это самое важное для понимания. Сценарий не выполняется постоянно в цикле. Отдельное выражение проверяется только тогда, когда произошло событие с элементом, который в этом выражении упомянут.
Событие возникает каждый раз, когда какой-либо элемент регистрирует новое значение: датчик считал температуру, пользователь нажал кнопку в приложении, сработал таймер. Ядро берёт имя этого элемента и прогоняет через сценарий только те выражения, где оно встречается.
# это выражение проверится ТОЛЬКО когда обновится temp1
if (temp1 > 25) then relay1 = 0 else relay1 = 1
Почему это удобно: не нужно заботиться о частоте проверок — логика срабатывает ровно в момент изменения данных. Это экономит память и процессор: сценарий из сотен строк не нагружает ESP, потому что при каждом событии работают лишь релевантные строки.
Следствие, о котором забывают: если в условии не упомянут ни один «живой» элемент (например, только время getHours()), выражение может никогда не сработать само по себе — его нечему запустить. Такие проверки привязывают к регулярно обновляющемуся элементу (например, к таймеру или датчику), чьё событие и будет триггером.
3. Основы синтаксиса
Выражение может состоять из перечисленных ниже элементов. Любое выражение при вычислении возвращает значение (число или строку).
Элемент
Пример
Пояснение
Идентификатор элемента
temp1
Подставляется текущее значение элемента с этим ID
Число
25, 3.14, -7
Целые, дробные и отрицательные
Строка
"перегрев"
Текст в двойных кавычках
Присваивание
relay1 = 1
Записать значение в элемент (с генерацией события)
Блок
{ a=1 b=2 }
Группа выражений в фигурных скобках
Комментарий
# текст
Всё после # до конца строки игнорируется
Функция
reboot()
Системная или функция модуля (см. справочник)
Строки, кавычки и переносы
Строки заключаются в двойные кавычки. Если внутри строки нужна кавычка или перенос строки — их экранируют. В параметрах функций можно передавать любые допустимые выражения, включая другие функции и идентификаторы элементов.
4. Операторы и приоритеты
Ниже — полный список операторов, поддерживаемых движком, в порядке возрастания приоритета (чем выше приоритет, тем раньше выполняется). Значения приоритетов взяты напрямую из кода интерпретатора.
Оператор
Назначение
Приоритет
:=
«Тихое» присваивание — записать значение без генерации события
1 (низший)
=
Присваивание значения элементу (с событием)
2
|
Логическое ИЛИ
5
&
Логическое И
6
==
Равно
10
!=
Не равно
11
<=
Меньше или равно
15
>=
Больше или равно
16
<
Меньше
20
>
Больше
21
+
Сложение (и склейка со строкой)
25
-
Вычитание
26
/
Деление
27
*
Умножение
28 (высший)
Про := (тихое присваивание): обычное = меняет значение и порождает событие, которое дальше пойдёт по сценариям (может вызвать цепную реакцию). Оператор := меняет значение молча — полезно, когда нужно обновить служебную переменную и не запускать связанные с ней правила.
Приоритет — не замена скобок: в сложных условиях всегда группируйте части круглыми скобками (...). Это надёжнее, чем полагаться на порядок операций, и делает сценарий читаемым.
5. Ветвление if / then / else
Конструкция ветвления — основа сценариев. Формат:
if (условие) then действие_если_истина else действие_если_ложь
Ветка else необязательна. Действием может быть как одно выражение, так и блок в фигурных скобках:
Условие — это любое выражение. Ноль считается ложью, ненулевое значение — истиной. Логические условия можно комбинировать через & and |:
if (temp > 30 & humidity < 40) then fan = 1
Ветвления можно вкладывать друг в друга внутри блоков для более сложной логики.
6. Обращение к элементам и вызов функций
Значение элемента
Просто напишите ID элемента — подставится его текущее значение. Присваивание ID = значение отправляет элементу команду изменить значение (например, включить реле).
Два вида функций
В языке есть функции двух типов, и они вызываются по-разному:
Тип
Синтаксис
Пример
Системная (глобальная)
функция(аргументы)
reboot(), digitalWrite(2, 1)
Функция элемента (модуля)
ID.функция(аргументы)
lcd.prefix("T="), t1.setInterval(5)
Важно: функции модуля вызываются от имени конкретного элемента через точку. Слева от точки — ID вашего элемента (например, реле, дисплея, Telegram-бота), а не название модуля. Какие функции доступны у элемента — зависит от его типа (см. раздел 9).
Аргументы
В качестве аргументов можно передавать числа, строки, идентификаторы других элементов и даже вложенные функции. Многие функции, принимающие «сообщение» (например, Telegram), понимают как строку, так и ID элемента — тогда подставится его значение.
7. Рецепты: типовые примеры
Термостат с гистерезисом
# реле включается ниже 22, выключается выше 24
if (temp < 22) then heater = 1
if (temp > 24) then heater = 0
Уведомление в Telegram по событию
if (door == 1) then tlg.sendMsg("Открыта дверь!")
Работа по расписанию (привязка к таймеру)
# timer1 — элемент-таймер, генерирует событие ежеминутно и запускает проверку
if (timer1) then {
if (getHours() == 22) then light = 0 # выключить свет в 22:00
if (getHours() == 7) then light = 1 # включить в 7:00
}
Вывод значения на дисплей
if (temp) then {
lcd.prefix("T=")
lcd.postfix(" C")
lcd.id2show("temp")
lcd.display()
}
Тихое обновление служебной переменной
# обновляем счётчик, но НЕ запускаем правила, где он используется
if (motion == 1) then counter := counter + 1
Реакция на диапазон времени
if (motion == 1) then {
if (nowInTimePeriod("23:00", "06:00")) then light = 1
}
8. Справочник: системные функции
Системные функции вызываются глобально: функция(...). Функции даты/времени работают, только если время получено из интернета (NTP) или внешних часов RTC; иначе условие с ними пропускается.
Управление элементами и устройством
Функция
Parameters
Description
getIntFromNet
—
Получаем количество секунд доверия к значениям элемента. При -2 доверие полное, при -1 время доверия истекло. При >0 время обратного отсчета. Используется только совместно с ИД элемента: ID.getIntFromNet()
setInterval
Секунды
Меняем интервал выполнения периодиеских операций элемента в секундах. Используется только совместно с ИД элемента: ID.setInterval(5)
doByInterval
—
Выполняем интервальное действие модуля вне плана. Используется только совместно с ИД элемента: ID.doByInterval()
exit
Причина
Прерываем работу сценария и выводим в консоль причину. Причина не обязательна.
reboot
—
Перезагружаем ESP
deepSleep
ЧислоСекунд
Погрузить ESP в глубокий сон. Вывод из сна с перезагрузкой. Для ESP8266 необходимо соединить gpio 16 и RST
Работа с пинами (GPIO)
Функция
Parameters
Description
digitalRead
НомерПина
Читаем состояние пина, результат возвращается
analogRead
НомерПина
Читаем состояние аналогового пина, результат возвращается
digitalWrite
НомерПина, Значение
Устанавливаем статус пина
digitalInvert
НомерПина
Инвертируем значение пина
Сеть и MQTT
Функция
Parameters
Description
getRSSI
—
Получить величину уровня принимаемого сигнала WI-FI.
getIP
—
Получить строку IP ESP
getUptime
—
Получить строку со временем работы устройства hh:mm:ss
mqttPub
Топик, Значение
Отправить значение в топик MQTT
mqttIsConnect
—
Получить состояние подключения к MQTT
Дата и время
Функция
Parameters
Description
getHours
—
Получить текущее число часов. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
getMinutes
—
Получить текущее число минут. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
getSeconds
—
Получить текущее число секунд. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
getMonth
—
Получить номер текущего месяца. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
getDay
—
Получить номер текущего дня месяца. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
gethhmm
—
Получить строку вида hh:mm. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
gethhmmss
—
Получить строку вида hh:mm:ss. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
getTime
—
Получить строку вида dd.mm.yy hh:mm:ss. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается
Функции с префиксом элемента:getIntFromNet, setInterval and doByInterval вызываются от имени элемента: ID.setInterval(5). Остальные из таблиц выше — глобальные.
9. Справочник: функции модулей
Эти функции доступны, только если в конфигурации есть соответствующий элемент. Вызываются от его имени через точку: ID_элемента.функция(...). Разделы соответствуют категориям модулей. Нажмите на название модуля, чтобы раскрыть список его функций.
Как читать: «Функция» — имя метода; «Параметры» — что передавать по порядку; «—» означает, что параметров нет. Точные значения и единицы уточняйте во всплывающих подсказках самого веб-интерфейса при редактировании элемента.
Исполнительные устройства
ButtonOut(2)
Функция
Parameters
Description
change
—
Инвертирует значение переключателя
pulse
Длительность (ms)
Генерирует одиночный импульс
Buzzer(5)
Функция
Parameters
Description
tone
Частота, Длительность (ms)
Проигрывание одиночного сигнала (без индикации)
tones
Частота 1-го сигнала, Длительность 1-го сигнала (ms), Частота 2-го сигала, Длительность 2-го сигнала, ….итд
Проигрывание серии сигналов, до 128
melody
Код 1-ой ноты, Код 2-й ноты, и тд
Проигрывание мелодии, до 256 нот. Кодировка 'YYX.ZZZ'. Научная нотация: YY — обозначение ноты (C,CS,D,DS,E,F,FS,G,GS,A,AS,B), X — номер октавы (0-9), ZZZ — д…
notone
—
Остановка звучания сигнала/ноты/мелодии
melodySetting
Долей в такте, Оригинальный темп, Коррекция темпа, Пауза между нот, Коррекция тональности, Повтор мелодии/серии сигналов
Перенастройка параметров мелодии: Долей в такте — (обычно 4), Оригинальный темп -(40-208 bpm), Коррекция темпа — в k раз быстрее/медленнее, Пауза между нот (с…
EctoControlAdapter(30)
Функция
Parameters
Description
getModelVersion
—
Запрос модели и версии адаптера и бойлера
getBoilerInfo
—
Запрос состояния связи с котлом, типа адаптера и код перезагрузки адаптера
getBoilerStatus
—
Запрос состояния контуров котла и горелки
getCodeError
—
Код ошибки котла (основной). Зависит от марки и модели котла.
getCodeErrorExt
—
Код ошибки котла (дополнительный). Зависит от марки и модели котла.
getFlagErrorOT
—
Стандартные флаги ошибок котла (только для котлов с интерфейсом OpenTherm)
getFlowRate
—
Текущий расхода ГВС
getMaxSetCH
—
Верхний предел уставки теплоносителя
getMaxSetDHW
—
Верхний предел уставки ГВС
getMinSetCH
—
Нижний предел уставки теплоносителя
getMinSetDHW
—
Нижний предел уставки ГВС
getModLevel
—
Текущая модуляция горелки
getPressure
—
Текущее Давление в контуре
getTempCH
—
Текущая температура теплоносителя
getTempDHW
—
Текущая температура ГВС
getTempOutside
—
Температура уличного датчика котла
setTypeConnect
Тип подключения
Установить тип внешних подключений (сохраняется в EPROM Адаптера): 0 — адаптер подключен к котлу, 1 — котел подключен к внешнему устройству (панель или перемы…
setTCH
температура передаётся до десятых градуса
Уставка температуры теплоносителя (сохраняется в EPROM Адаптера)
setTDHW
температура передаётся до десятых градуса
Уставка температуры ГВС (сохраняется в EPROM Адаптера)
setTCHFaultConn
температура передаётся до десятых градуса
Уставка теплоносителя в аварийном режиме (сохраняется в EPROM Адаптера). Будет передана котлу в случае отсутствия связи адаптера с управляющим устройством
setMinCH
температура от 0 до 100
Задать нижний предел уставки теплоносителя
setMaxCH
температура от 0 до 100
Задать верхний предел уставки теплоносителя
setMinDHW
температура от 0 до 100
Задать нижний предел уставки ГВС
setMaxDHW
температура от 0 до 100
Задать верхний предел уставки ГВС
setMaxModLevel
уровень модуляции 0-100%
Уставка максимальной модуляции горелки (сохраняется в EPROM Адаптера)
setStatusCH
вкл/откл отопления
Установить режим (Включить) контура отопления; 0 — отключен, 1 — включен
setStatusDHW
вкл/откл ГВС
Установить режим (Включить) ГВС; 0 — отключен, 1 — включен
setStatusCH2
вкл/откл второго контура отопления
Установить режим (Включить) второго контура отопления; 0 — отключен, 1 — включен. используется только некоторыми котлами с интерфейсом OpenTherm и может отвеч…
lockOutReset
—
Сброс ошибок котла
rebootAdapter
—
Перезагрузка адаптера
EspCam(5)
Функция
Parameters
Description
save
—
Сохранить снимок на SD
sendFoto
Отправить фото с esp-CAM в телеграмм
editFoto
Отредактировать последнее отправленное фото в телеграмм
flashOn
—
Включить вспышку
flashOff
—
Отключить вспышку
HttpGet(2)
Функция
Parameters
Description
get
URL
Отправить http запрос методом GET.
post
URL, message
Отправить http запрос методом POST.
IRremote(12)
Функция
Parameters
Description
on
—
Включить конциционер
off
—
Выключить конциционер
cool
—
Режим охлаждения
heat
—
Режим нагрева
dry
—
Режим осушения
speedmin
—
Минимальная скорость вентилятора
speedmed
—
Средняя скорость вентилятора
speedmh
—
Средне — высокая скорость вентилятора
speedhigh
—
Высокая скорость вентилятора
speedmax
—
Максимальная скорость вентилятора
setTemp
—
Установленная температура
swing
—
Управление шторкой вентилятора
IoTServo(1)
Функция
Parameters
Description
rotate
Числовое значение
Повернуть привод на значение
Mp3(9)
Функция
Parameters
Description
enableLoop
—
Включить бесконечное повторение
disableLoop
—
Выключить бесконечное повторение
randomAll
—
Запустить случайны трек
stop
—
Остановить проигрывание трека
volume
Значение громкости
Установить громкость
playFolder
Номер папки, Номер файла
Проиграть файл из папки
play
—
Запустить проигрывание первого файла
next
—
Запустить проигрывание следующего файла
previous
—
Запустить проигрывание предыдущего файла
SIM800(4)
Функция
Parameters
Description
sms
Строка текста, Номер телефона, если не указывать будет отправлено на номер number из конфигурации
Отправить sms сообщение. Например sim.sms("сообщение") или sim.sms("сообщение", "+7999999")
print
Строка текста, ID Виджета или любое значение, не обязательно, 1 — обернуть строку в кавычки, 0 — отправить без кавычек (При наличии второго параметра оборачивает только его)
Отправить в UART строку текста (AT-команду). Например sim.print("AT",0)
println
Строка текста, ID Виджета или любое значение, не обязательно, 1 — обернуть строку в кавычки, 0 — отправить без кавычек (Пр наличии второго параметра оборачивает только его)
Отправить в UART строку текста (AT-команду) и признак завершения строки (перевод строки). Например sim.println("AT+CMGS=", "+799999", 1);
printHex
HEX-строка.
Отправить в UART HEX-строку.
SmartBoiler(7)
Функция
Parameters
Description
CHSet
тепмература СО (подачи) — bolier.CHSet(60)
Установить целевую температуру СО
CHEnable
bolier.CHEnable(1) — вкл, bolier.CHEnable(0) — выкл,
включить / выключить отопление
SetDHW
тепмература ГВС — dhw.SetDHW(40)
Установить целевую температуру ГВС
DHWEnable
dhw.DHWEnable(1) — вкл, dhw.DHWEnable(0) — выкл
включить / выключить ГВС
addStepPower
bolier.addStepPower(1, 3, rele1) — шаг №1 в 3kW на первом реле, bolier.addStepPower(4, 24, rele1, rele3, rele4) — шаг 4 в 24Квт на 1+3+4 реле
Добавить Шаг Нагрева: мощность Шага кВт, ID реле на данном шаге
onStepPower
bolier.onStepPower(2)
включить определенный шаг нагрева, указывается номер шага, Включит Ручной Режим!
autoPower
bolier.autoPower()
включить автоматический режим работы котла (по умолчанию включен)
Telegram(2)
Функция
Parameters
Description
sendMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить сообщение без повторений.
sendOftenMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить сообщение в любом случае, даж если отправляли такое ранее.
TelegramLT(2)
Функция
Parameters
Description
sendMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить сообщение без повторений.
sendOftenMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить сообщение в любом случае, даж если отправляли такое ранее.
Telegram_v2(16)
Функция
Parameters
Description
sendMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить сообщение без повторений.
sendOftenMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить сообщение в любом случае, даже если отправляли такое ранее.
sendPinMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отправить закрепленное сообщение в любом случае, даже если отправляли такое ранее.
unpinAllMsg
—
Открепить все сообщения в чате.
editMsg
Сообщение, может быть строкой, числом или ИД другого элемента для получения значения
Отредактировать последнее отправленное ботом сообщение.
sendFile
Путь к файлу (/test.png), Тип файла/информации (число)
Отправить файл в телеграмм, с указанием типа файла: 0-фото, 1-аудио, 2-документ, 3-видео, 4-анимация, 5-голос
editFile
Путь к файлу (/test.png), Тип файла/информации (число)
Отредактировать последний отправленный файл, с указанием типа файла: 0-фото, 1-аудио, 2-документ, 3-видео, 4-анимация, 5-голос
btnMenu
Name — название кнопки отображается ботом, message — Произвольное сообщения присылается в ответ на кнопку, Id — Вернет значение элемента
Описание кнопки меню. По нажатию запросит значение ID и отправит сообщение. ID УКАЗЫВАТЬ В КАВЫЧКАХ! Пример: btnMenu(Темп.Дома, Текущая температура, IDbme280)
btnMenu
Name — название кнопки отображается ботом, message — Произвольное сообщения присылается в ответ на кнопку, getId — Вернет значение элемента, setId — Установит значение элементу, value — Устанавливаемое значение
Описание кнопки меню. Установит значение value в setID. При необходимости запросит значение getID и отправит сообщение. ID УКАЗЫВАТЬ В КАВЫЧКАХ! Пример: btn…
showMenu
—
Отобразить меню, созданное в сценарии
closeMenu
—
Закрыть мменю
btnInline
Name — название кнопки отображается ботом, message — Произвольное сообщения присылается в ответ на кнопку, Id — Вернет значение элемента
Описание кнопки встроенного (inline) меню. Запросит значение ID и отправит сообщение. ID УКАЗЫВАТЬ В КАВЫЧКАХ! Пример: btnInline(Темп.Дома, Текущая температур…
btnInline
Name — название кнопки отображается ботом, message — Произвольное сообщения присылается в ответ на кнопку, getId — Вернет значение элемента, setId — Установит значение элементу, value — Устанавливаемое значение
Описание кнопки встроенного (inline) меню выводит. Установит значение value в setID. Запросит значение getID (если указан) и отправит сообщение. ID УКАЗЫВАТЬ …
showInline
—
Отобразить встроенное (inline) меню, созданное в сценарии
clearInline
—
Очистить встроенное (inline) меню, вызвать для изменения, перед созданием новых кнопок
clearMenu
—
Очистить меню, вызвать для изменения, перед созданием новых кнопок
Thermostat(6)
Функция
Parameters
Description
enable
thermostat.enable(1) — вкл, thermostat.enable(0) — выкл,
включить / выключить термостатирование (режим AUTO) применим к PID и Гистере́зис
KP
thermostat.KP(1) — задает значение коэффициента
Пропорциональный коэффициент PID .
KI
thermostat.KI(1) — задает значение коэффициента
Интегральный коэффициент PID .
KD
thermostat.KD(1) — задает значение коэффициента
Дифференциальный коэффициент PID .
setLimitsMIN / setLimitsMAX
thermostat.setLimitsMIN(1) — задает минимальное значение PID
лимит выходной величины (например для ШИМ ставим 0-255).
направление регулирования: NORMAL (0) или REVERSE (1).
Экраны и индикация
Lcd2004(10)
Функция
Parameters
Description
noBacklight
—
Выключить подсветку
backlight
—
Включить подсветку
noDisplay
—
Спрятать все данные
display
—
Показать данные на экране
toggle
—
Переключает видимость значений на экране
x
Номер строки первого символа
Устанавливает первую координату
y
Номер столбца первого символа
Устанавливает вторую координату
prefix
Строка
Задает приставку слева от значения
postfix
Строка
Задает приставку справа от значения
id2show
Имя элемента конфигурации
Задает ИД элемента, значение которого хотим отображать на экране
LedFX(14)
Функция
Parameters
Description
noShowOne
номер пикселя
Выключить один светодиод на ленте
showLed
номер пикселя, цвет в формате 0xRRGGBB
Зажечь один диод
setBrightness
яркость от 0 до 255
Устанавливает общую яркость ленты от 0 до 255
vuMeter
Количество каналов для отображения на ленте, Список ID датчиков через запятую (если указать пустую строку, то каналы будут заполняться случайными числами от 0 до 255)
Включает режим VU Meter. Важно что бы элемент ленты был ниже в списке чем элемент с датчиком, ИД которого нужно будет мониторить.
setColor
цвет в формате 0xRRGGBB
Устанавливает цвет ленты в формате 0xRRGGBB, например, 0xFF0000 — красный, 0x00FF00 — зеленый, 0x0000FF — синий.
setEffect
номер эффекта от 0 до 79
Устанавливает эффект ленты. 0-79. 0 — Статичный цвет.
setSpeed
скорость от 0 до 255
Устанавливает скорость эффекта от 0 до 255
fadeOut
Целевое значение яркости, до которого будет затухать, Шаг затухания
Плавное затухание яркости
fadeIn
Целевое значение яркости, до которого будет нарастать, Шаг нарастания
Плавное нарастание яркости
stop
—
Останавливает эффект
start
—
Запускает эффект
pause
—
Пауза эффекта
resume
—
Возобновляет эффект
setSegment
номер сегмента от 0 до 7, глобальный номер первого пикселя в сегменте, глобальный номер последнего пикселя в сегменте, номер эффекта от 0 до 79, цвет в формате 0xRRGGBB, например, 0xFF0000 — красный, 0x00FF00 — зеленый, 0x0000FF — синий., скорость
Устанавливает сегмент ленты
Nextion(5)
Функция
Parameters
Description
Update
—
Функция сценария для загрузки прошивки с сервера LiveServer или другого по ip
printFFF
Строка текста, 1 — обернуть строку в кавычки, 0 — отправить без кавычек
Отправить в UART текстовую строку и hex метку 3 байта 0xFF0xFF0xFF. Напимер nex.printFFF("auto.val=1",0)
printFFF
Строка текста, ID Виджета или любое значение, 1 — обернуть строку в кавычки, 0 — отправить без кавычек
Отправить в UART текстовую строку и hex метку 3 байта 0xFF0xFF0xFF. Напимер nex.printFFF("t1.txt=", ID_vidget + " °", 1);
printRusFFF
Строка текста, 1 — обернуть строку в кавычки, 0 — отправить без кавычек
Отправить в UART текстовую строку и hex метку 3 байта 0xFF0xFF0xFF. С предварительной конвертацией русских букв (преобразуем в кодировку ISO-8859-5)
printRusFFF
Строка текста, ID Виджета или любое значение, 1 — обернуть строку в кавычки, 0 — отправить без кавычек
Отправить в UART текстовую строку и hex метку 3 байта 0xFF0xFF0xFF. С предварительной конвертацией русских букв (преобразуем в кодировку ISO-8859-5)
Oled128(5)
Функция
Parameters
Description
x
Номер строки первого символа
Устанавливает первую координату
y
Номер столбца первого символа
Устанавливает вторую координату
descr
Строка
Задает приставку слева от значения, если none значит пусто
descr1
Строка
Задает приставку справа от значения. Если descr none , то не выводится
id2show
Имя элемента конфигурации
Задает ИД элемента, значение которого хотим отображать на экране
Oled64(5)
Функция
Parameters
Description
x
Номер строки первого символа
Устанавливает первую координату
y
Номер столбца первого символа
Устанавливает вторую координату
descr
Строка
Задает приставку слева от значения
descr1
Строка
id2show
Имя элемента конфигурации
Задает ИД элемента, значение которого хотим отображать на экране
Smi2_m(2)
Функция
Parameters
Description
descr
Строка
Задает приставку слева от значения
id2show
Имя элемента конфигурации
Задает ИД элемента, значение которого хотим отображать на экране
TM16XX(5)
Функция
Parameters
Description
setLEDs
Значение байта
Зажигает верхние светодиоды через установку байта, где каждый разряд соответствует диоду. От 0 до 255
onLED
Номер диода
Включить один диод
offLED
Номер диода
Выключить один диод
setParamLED
Вкл/Выкл, Яркость
Включить/выключить (1/0) и установить яркость от 0 до 7 дисплея
id2show
Имя элемента конфигурации
Задает ИД элемента, значение которого хотим отображать на экране
U8g2lib(5)
Функция
Parameters
Description
nextPage
—
Переключиться на следующую страницу
prevPage
—
Переключиться на предыдущую страницу
rotPage
—
Переключиться на следующую страницу с ротацией
gotoPage
Номер страницы
Переключиться на указанную страницу. Если номер не указать, то переключится на страницу закрепленную за элементом конфигурации.
setAutoPage
1 — включить, 0 — выключить
Установить автоматическую смену страниц.
Ws2812b(8)
Функция
Parameters
Description
noShow
номер пикселя
Выключить ленту
noShowOne
—
Выключить один светодиод на ленте
test
—
для проверки всех светодиодов ленты
showLed
номер пикселя, цвет 255,255,255 или red,green
Зажечь один диод
showLedAll
Цвет красного светодиода от 0 до 255, Цвет зеленого светодиода от 0 до 255, Цвет синего светодиода от 0 до 255
Зажечь все диоды
Brightness
яркость от 0 до 255
Устанавливает общую яркость ленты от 0 до 255
enableIndication
—
Включает работу индикации по idshow по дэфолту включено всегда
disableIndication
—
Выключает работу индикации по idshow
Сенсоры
BL0937(1)
Функция
Parameters
Description
calibration
Напряжение, Ток, Мощность
Расчет коэффициентов калибровки. Вызывать от имени BL0937 настройка. bl_set.calibration(220, 16, 3.5). Полученный коэффициенты искать в логе и ввести в конфиг…
BL0942(1)
Функция
Parameters
Description
calibration
Напряжение, Ток, Мощность
Расчет коэффициентов калибровки. Вызывать от имени BL0942 настройка. bl_set.calibration(220, 16, 3.5). Полученный коэффициенты искать в логе и ввести в конфиг…
ExampleModule(3)
Функция
Parameters
Description
expampleFunc
ID стороннего модуля
Пример функции вызываемой из сценария. Принимает Id другого модуля и смотрит его значение
expample2
Описание педедаваемого параметра, параметр 2
Второй Пример функции вызываемой из сценария.
expampleAny
Описание педедаваемых параметров
Третий Пример функции вызываемой из сценария. С неограниченным числом параметров
Hx710(1)
Функция
Parameters
Description
read
—
Прочитать текущее значение. Полезно использовать при Int=0 и считывать RAW-data по событию.
Hx711(3)
Функция
Parameters
Description
tare
—
Авто установка нуля
sleepMode
=1 режим сна, =0 проснуться
Перевести в режим сна
read
—
Прочитать текущее значение. Полезно использовать при Int=0 и считывать вес по событию.
Ina219(1)
Функция
Parameters
Description
sleep
1- вкл сна/ 0-выкл сна
INA219 Настройки. Установка / снятие режима сна датчика INA219
Ina226(1)
Функция
Parameters
Description
sleep
1- вкл сна/ 0-выкл сна
INA226 Настройки. Установка / снятие режима сна датчика INA226
MQgas(8)
Функция
Parameters
Description
calibrate
—
Калибровка с параметрами по умолчанию
calibrateR0
Ro in clean air
Калибровка с установкой номинального сопротивления сенсора на чистом воздухе
calibrateRlRo
Rl/Ro in clean air
Калибровка с установкой соотношения сопротивления делителя напряжения к номинальному на чистом воздухе.
calibratePPM
PPM in clean air
Калибровка с установкой значения концентрации газа в чистом воздухе
setAutoCalibration
0 — Выкл. 1 — Вкл.
Включение/Выключение автокалибровки
runAutoCalibration
—
Принудительная автоматическая калибровка (с обнулением максимального сопротивления сенсора и перезапуском счетчика автокалибровки)
lastCalibration
—
Возврат время последней калибровки
TempHumCorrection
Temperature, Humidity
Передача значений темературы и влажности для расчета поправки
ModbusRTU(8)
Функция
Parameters
Description
readCoils
Адрес, Регистр, Кличество бит
Чтение койла (битового поля). Функция 0х01 протокола. Читает не более 16 бит за раз. Пример: mb.readCoils(1, "0х0000", 1)
readDiscreteInputs
Адрес, Регистр, Кличество бит
Чтение дискретного выхода (битового поля). Функция 0х02 протокола. Читает не более 16 бит за раз. Пример: mb.readDiscreteInputs(1, "0х0000", 8)
Запрос данных регистра. Функция 0х04 протокола. Читает не более двух регистров за раз. Пример: mb.readInputRegisters(1, "0х0000", 1, 0)
writeSingleCoils
Адрес, Регистр, Данные
Запись в койл (битовое поле) одного бита. Функция 0х05 протокола. Пример: mb.writeSingleCoils(1, "0х0000", 1)
writeSingleRegister
Адрес, Регистр, Данные
Запись данных в один регистр. Функция 0х06 протокола. Пример: mb.writeSingleRegister(1, "0х0000", 128)
writeMultipleCoils
Адрес, Регистр, Кличество койлов (бит), Данные
Запись данных в несколько койлов до 16 (число от 0 до 65535). Функция 0x0F протокола. Пример: mb.writeMultipleCoils(1, "0х0000", 4, 3) — будут записаны в четы…
writeMultipleRegisters
Адрес, Регистр, Данные
Запись данных в несколько регистров. На данный момент записывает 2(два) регистра!!!!! Подходит для записи float?? Функция 0х10 протокола. Пример: mb.writeMult…
ModbusRTUasync(5)
Функция
Parameters
Description
writeSingleCoils
Адрес, Регистр, Данные
Запись в койл (битовое поле) одного бита, вызывать из ModbusAsunc. Функция 0х05 протокола. Пример: mb.writeSingleCoils(1, "0х0000", 1)
writeSingleRegister
Адрес, Регистр, Данные
Запись данных в один регистр, вызывать из ModbusAsunc. Функция 0х06 протокола. Пример: mb.writeSingleRegister(1, "0х0000", 128)
writeMultipleCoils
Адрес, Регистр, Кличество койлов (бит), Данные
В разработке! Запись данных в несколько койлов до 16 (число от 0 до 65535), вызывать из ModbusAsunc. Функция 0x0F протокола. Пример: mb.writeMultipleCoils(1, …
writeMultipleRegisters
Адрес, Регистр, Данные
В разработке! Запись данных в несколько регистров, вызывать из ModbusAsunc. Записывает 2(два) регистра!!!!! Подходит для записи float?? Функция 0х10 протокола…
getBits
индекс бита
Получить из ModbusNode бит по его номеру, если ранее считали из слейва F0x01 или F0x02 более одного бита. Вернёт -1 если данных нет. Пример: mbNode.getCoil(0)…
RCswitch(3)
Функция
Parameters
Description
sendBitStr
Строка 000000000001010100010001
Отправляем строку вида 000000000001010100010001
sendTriState
Строка 00000FFF0F0F
отправляем строку вида 00000FFF0F0F
sendDecimal
Код в виде числа, Количество бит чтоб заполнить нулями
отправляем строку вида 5393
RTC(4)
Функция
Parameters
Description
getTime
Формат как у функции date() в PHP
Получить строковое значение времени по указанному формату.
setTime
сек, мин, час, день, мес, год
Установить время через сценарии в формате сек, мин, час, день, мес, год.
setUnixTime
rtc.setUnixTime('46489234') — параметр в виде строки
Установить время через сценарий в формате юникстайм
getTimeFloat
s — Вернуть секунды, i — Вернуть минуты, H — Вернуть часы в 24-часовом формате, d — Вернуть день месяца, w — Вернуть день недели, m — Вернуть месяц, Y — Вернуть год(4 знака)
Получить числовое значение времени по указанному формату
UART(4)
Функция
Parameters
Description
println
Строка текста
Отправить в UART строку текста и признак завершения строки (перевод строки).
print
Строка текста
Отправить в UART строку текста.
printHex
HEX-строка.
Отправить в UART HEX-строку.
printFFF
Строка текста, 1 — обернуть строку в кавычки, 0 — отправить без кавычек
Отправить в UART текстовую строку и hex метку 3 байта 0xFF0xFF0xFF.
Виртуальные элементы
Cron(2)
Функция
Parameters
Description
stop
—
Поставить процесс на паузу, при этом не будет событий.
continue
—
Продолжить выполнение с момента остановки.
GoogleSheet(2)
Функция
Parameters
Description
logGoogle
id Идентификатор 1-го элеменета, id Идентификатор N-го элеменета
Использовать не чаще раз в минуту! Логирование элементов в GoogleSheet, ID элементов указывать через запятую, от одного до N (проверено на 16шт). В данной фун…
logGoogleAny
Наименование данных, Значение для записи
Использовать не чаще раз в минуту! Запись произвольных данных в GoogleSheet
IoTMath(3)
Функция
Parameters
Description
map
Значение1, Значение2, Значение3, Значение4
Аналог функции map
convertTime
tm.convertTime(13, 08, 2023, 16, 24); — передаем пять целых чисел. секунды подставятся в ноль
Перевести время из формата d-m-Y H:i:s например, 13-08-2023 16:24:00 в юникс-время
nowInTimePeriod
Начало периода в формате HH:MM, Конец периода в формате HH:MM
Проверяет входит ли текущее время в указанный период. Возвращает 1 если входит, 0 если нет.
Ping(1)
Функция
Parameters
Description
ping
IP адрес или имя хоста
Проверить пинг. после вызова данной функции из сценария результат будет в значении самого модуля. if ping21==1 then ЕСТЬ_пинг else НЕТ_пинга
Timer(5)
Функция
Parameters
Description
stop
—
Поставить процесс на паузу, при этом не будет событий и не будет уменьшаться счетчик.
reset
—
Вернуть таймер к началу, установленному в countDown.
continue
—
Продолжить выполнение с момента остановки.
int
Число в секундах
Можно изменить шаг тиков.
setInitCountDown
Число в секундах
Меняем начальное значение счетчика, устанавливаемое после сброса.
owmWeather(3)
Функция
Parameters
Description
sunrise
количество минут до(-)/после(+) рассвета
Функция астрологического таймера, можно задать время до/после рассвета, вернётся количество минут до сработки или после (-). После заката будет возвращать +99…
sunset
количество минут до(-)/после(+) заката
Функция астрологического таймера, можно задать время до/после заката, вернётся количество минут до сработки или после (-), когда 0 — значит время подошло
night
—
Вернет 1 если ночь (уже закат) и 0 если день (рассвет)
10. Частые ошибки
Симптом
Причина
Решение
Правило никогда не срабатывает
В условии нет элемента, который порождал бы событие (например, только время)
Привязать проверку к регулярному элементу — таймеру или датчику
Бесконечная цепная реакция
Присваивание = порождает событие, запускающее то же правило
Использовать «тихое» присваивание := для служебных переменных
Функция модуля не работает
Вызов от имени модуля, а не от ID элемента; или элемента нет в конфиге
Писать ID.func(), где ID — идентификатор вашего элемента
Условие со временем игнорируется
Не получено время (нет NTP / RTC)
Настроить синхронизацию времени; проверить связь
Неверный порядок вычислений
Расчёт на приоритеты операторов без скобок
Группировать части условия скобками (...)
Сценарий не применился
Не сохранён / ошибка синтаксиса
Пересохранить; проверить парность скобок и кавычек, смотреть консоль
Отладка: устройство выводит ход выполнения сценария в консоль (лог). Функция exit("причина") прерывает сценарий и печатает причину — удобно для точечной диагностики.
IoTManager — Сценарии: инструкция и справочник · основано на анализе ветки ver4stable
Справочник функций собран из описаний модулей проекта · Исходный код: github.com/IoTManagerProject/IoTManager
Supported the project — saved a DIY maker! And we accept gifts...