Interpreter (обновлено: 05 Mar 2023, 07:13:42)

Опция простого скриптового языка для создания своей логики и математики: управление GPIO, вывод на дисплеи по условиям, отправка http get запросов с параметрами. Редактор скриптов находится непосредственно на самом модуле в веб интерфейсе. Вызов скрипта происходит по указанному интервалу в настройках.

Документация ниже относится к версии Interpreter (v2.2).

Обновление 24.02.2023 - Версия v2.2. Установка системных переменных intvalX через знак равно. Поддержка таймеров, запись переменных во flash и eeprom.

25.02.2023 - добавлена поддержка gpio event.


Внешний вид веб интерфейса редактора скриптов:

 

Исправления и обновления опции:

17.04.2017 - исправлена работа оператора goto.

01.05.2017 - обновлен список переменных датчиков.

17.11.2018 - доступна 2 версия интерпретатора.

14.08.2020 - упразднена документация по первой версии интерпретатора.

06.02.2021 - глобальное обновление имен переменных. Актуальный список переменных на модуле на вкладке Metrics.

28.08.2021 - добавлена поддержка расширенной работы с математикой и поддержка дробных чисел (только RTOS). Документация ниже.

31.01.2022 - обновление версии Interpreterа до 2.1. Глобальные переменные сейчас везде начинаются с нумерации от 1.

04.03.2022 - переменные состояния gpio и pwm сейчас называются как gpioX и pwmX , где Х - номер gpio или pwm.

24.02.2023 - обновление версии Interpreterа до 2.2. Установка системных переменных intvalX через знак равно. Поддержка таймеров, запись переменных во flash и eeprom.

25.02.2023 - добавлена поддержка gpio event.


Базовые функции:

gpioset(x,y*)  - установка gpio. Пример gpioset(5,1). Не рекомендуется использовать vgpio и d2d номера при частом интервале выполнения скрипта

pwmset(x,y**) - установка уровня ШИМ, где x - номер ШИМ, y - значение ШИМ. Пример pwmset(1,200).

thermoset(x,y**) - управление термостатом, где x - номер термостата, у - установка термостата. Пример в документации термостата.

if (условие*) - условный оператор. Поддерживается сравнение == , != ,  < , > , >= , <=. Более подробное описание ниже:

endif - обязательный оператор окончания действия оператора if.

end - выход из скрипта.

else - после этого оператора выполняется код если условие if не выполнилось. Обязательное использование совместно с if.

delay(x) - остановка скрипта на указанное количество миллисекунд. На работу модуля не влияет. На время остановки запуск по интервалу не происходит.

beep(x,y) - генерация частоты через опцию beeper, где x - время, y - частота. Подробнее в описание в опции.

goto XXX  переход к строке по ссылке XXX. Ссылка ставится в любом месте кода в виде :XXX , без использования delay количество переходов ограничено.

reboot() - перезапуск модуля.

speakline(строка) - воспроизведение MP3 из конструктора фраз. Возможно указать как номер шаблона в виде #1 так и сам шаблон.

mp3cmd(команда,параметр) - управление MP3 UART плеером , все команды в документации на плеер.

valset(x,y*) - установка значения y глобальной переменной x, номер переменой x считается от 1. Устаревшая функция, используйте приравнивание (Пример 16).

valmath(X,Y+Z) - математическое действие, описание ниже. Устаревшая функция, используйте приравнивание (Пример 16).

playwav(путь_до_файла) - проигрывание mp3/wav файла(ESP32).

imageprint(путь_до_файла) - вывод картинки на TFT дисплей(ESP32).

debug(х) - включает или отключает отладку в UART, только для ESP32 и ESP8266RTOS. x - 1 или 0.

httpget(url) - отправить по http строку данных. url - адрес/путь. Подробное описание ниже.

load(имя_файла) - выполняет файл скрипта с диска SD&SPIFFS (ESP32 и ESP8266RTOS), а так же в Linux приложении. Подробное описание ниже.

rgbsend(hex строка) - управление WS2812. Подробности в документации.

rgb16send(hex строка) -управление WS2812. Подробности в документации.

mqttsend(топик,значение) - отправка данных в mqtt. Значение может содержать шаблоны и метрики.

stepper(х,у*) - управление степпером.

irsendraw(hex данные) - отправка raw ИК команд.

irsend(режим,команда) - отправка ИК команды.

sleep(x) - отправка модуля в спящий режим на время х (секунды). Требуется установка опции спящего режима.

Строки, начинающиеся с // считаются комментариями, удобно временно отключать строку скрипта.

* - можно указывать переменные.

** - поддерживается математическое выражение. Должна быть самая актуальная прошивка.

Изменение максимального размера скрипта

В дополнительных настройках(в шестеренке) доступно изменение максимального размера скрипта, По умолчанию размер установлен в 500 байт(+1 байт окончание строки), максимальный размер определен максимальным значением числа на вкладке debug в строке Len mem config , для ESP8266 конструктора это значение ограничено 4096 байт, для ESP8266 RTOS и ESP32 - 8192. Максимальный размер скрипта так же ограничен возможностями веб сервера.

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


Работа с условным оператором if.

if(условие*) - условный оператор,. Поддерживается сравнение == , != ,  < , > , >= , <=.  Пробелы не допускаются

Условие может содержать несколько сравнений, через оператор ИЛИ , например if(second==0||second==30) - включить или на 0 или на 30 секунде.

И через оператор И, например if(second>=10&&second<=30) -включить, когда секунды больше либо равно 10 и меньше либо равно 30 т.е. включаем когда секунды в диапазоне от 10 до 30.

else - необязательный оператор. После этого оператора выполняется код если условие if не выполнилось.

endif - этим оператором должно заканчиваться секция действий оператора if.

Вариант с else:
if(условие)
функции, когда условие выполняется
else
функции, когда условие не выполняется
endif
Вариант без else:
if(условие)
функции, когда условие выполнено
endif

Поддерживается вложенность операторов до 255 уровней! После endif выполнение скрипта продолжается.

goto внутри if использовать крайне не рекомендуется, допустимо, если это бесконечный цикл с условием, где идет выход из скрипта по оператору end

Работа скриптов с дисков.

На модулях ESP32 и ESP8266(RTOS) возможна работа скриптами, находящиеся на дисках SD или SPIFFS. Поддерживается работа с диска и в Linux приложении.

Количество строк в файле не ограничено. Длина строки ограничена 1 кб.

Загрузить скрипт можно командой load(имя файла) только из окна-редактора.  Сами скрипты загружать другие файлы не умеют на данный момент.  Пример: load(/SPIFFS/loopnext.txt)

После выполнения файла скрипта управление передается обратно скрипту в окне-редакторе, если не задан параметр end.

Работа с GET запросами

Доступна отправка метрик на любой сервер используя функцию httpget(url), где url - это полноценный адрес ,можно отправить на любой сервер или на другой модуль esp без авторизации. Поддерживается установка порта через двоеточие. Пробелы и спецсимволы в запросе недопустимы. Поддерживаются текстовые метрики (вида _ХХХ_).

Примеры:

Отправка данных на Thingspeak.com:  httpget(api.thingspeak.com/update?key=<ключ>&field1=_BMPT_&field2=_BMPP_&field3=_DHTT1_&field4=_DHTH1_) 

Отправка данных на Domoticz: httpget(192.168.1.100:8080/json.htm?param=udevice&type=command&idx=55&nvalue=0&svalue=_BMPT_)

Можно отправлять несколько запросов подряд , в ESP8266 NoOS рекомендуется использовать delay(500) между несколькими запросами.

Функции вывода на дисплеи и на главную страницу:

printw(текст) - вывод текста на главной модуля. Поддерживаются html теги.

printd(номер строки,текст) - вывод на дисплей модуля LCD.

printd(номер строки,номер шрифта,текст) - вывод на дисплей модуля OLED и TFT, добавлен обязательный параметр размер шрифта.

printm(скорость строки, текст) - вывод на LED матрицы.

printn(id,текст) - вывод на Nextion дисплей. Пример: printn(d0,_TIMES_).

printnraw(raw дата) вывод raw данных на Nextion дисплей.

printuart(текст) - вывод строки в uart используя опцию UART bridge.

printmx(x,y,z*) - функция вывода на 7 Сегм MAX7219. x - знакоместо, y - тип вывода(0..3). z - значение.

segsetbr(x) - Управление яркостью 7 Сегм MAX7219.

printmt(z*) - функция вывода на TM1637.

tmsetbr(x)  - Управление яркостью TM1637.

printei(z,x,y,текст) - Вывод текста на E-Ink LILYGO T5 V3. Подробнее в документации на дисплей.

В текстовых дисплеях в  функциях printw, printd, printm и прочие вместо текста можно указывать номер шаблона в виде #1 конструктора строк или сразу текстовые метрики в виде printw(_DATE_  _TIME_).

В числовых дисплеях (обозначенных звездочкой) используются числовые переменные.

matrixbr(уровень яркости) - установка яркости у LED матриц. 100 - выключает матрицу.

Список текстовых метрик и числовых переменных находится внизу статьи !


Функции отправки уведомлений

sendsms(текст сообщения) - отправка уведомлений через Telegram, ICQ, Email, SMS GSM, SMS.RU, SMSC.RU - все включенные сервисы отправки, можно использовать текстовые шаблоны, если они установлены в прошивке, пример sendsms(#1) или текстовые метрики в виде sendsms(_DATE_  _TIME_)

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


Переменные (для математических функций и оператора IF):

gpioX - чтение состояния GPIO. До 4.03.22 - gpioget(х) 

pwmX - чтение состояния PWM. До 4.03.22 - pwm[x]

Переменные времени: second, minute, hour, mday, month, weekminutesperday (минут в день ), secondsperday (секунд в день).

Список остальных переменных смотрите на вкладке Metrics модуля (для старых прошивок - внизу статьи)

Переменные с датчиков температуры и влажности идут умноженные на 10 или 100 ! Если температуру кажет к примеру 26.4, то сравнивать её нужно как число 264. Не относиться при включенной опции расширенной математики.


Работа с глобальными переменными и математикой

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

Для работы с математикой используется функция valmath(X,Y+Z) , где X - это номер переменной начиная с 1, Y+Z - это математическое действие. Ограничение: без опции расширенной математики поддерживается только одиночное действие прибавления, вычитания, деления или умножения. Так же поддерживается остаток от деления (%) .*

Для установки переменной используем функцию valset(x,y). считая от 1.*

* - функции устарели.

Для чтения переменной используем intvalX считая от 1.

Для вывода переменных используем макрос _INTVALx_  считая от 1

Тестовые примеры смотрим внизу статьи под номерами 7 и 8.

Обновление от 24.02.23:

Сейчас установка переменной intvalX может задаваться через знак равно,  например intval1=5 или  intval1=5+dsw1 . Этим упраздняется использование функций valset(x,y) и valmath(X,Y+Z).

Доступно сохранение в переменную intvalfX и intvaleepX - соответственно сохранение во flash и eeprom(опция должна быть включена). Переменные работают только с целыми числами. Установка и чтение переменных аналогично intvalX. Количество переменных задается в шестеренке опции, по умолчанию равно 0(выключено). Сохранение происходит только если значение переменной изменилось.

Тестовые примеры смотрим внизу статьи под номером 16.


Расширенная математика и работа с дробными числами

Опция доступна только на RTOS прошивках, включая ESP32 и на Linux ! По умолчанию не включена - включается в шестеренке опции !

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

Так же дополнительно поддерживаются следующие переменные и функции:

pi - число Пи

e - число E.

x^y - возведение в степень y числа x

map(x,ind,inu,outd,outp) - классическая функция map, пример: map(adc,0,4095,0,3.3) - приведение значения ацп к 3.3в

ceil(x) -  округляет x в большую сторону. Пример: valmath(0,ceil(dsw1))

floor(x) - округляют аргумент x до наибольшего целого числа.

abs(x) - модуль числа х

sqrt(x) - квадратный корень числа x

exp(x) - значение экспоненты от x

Триготрометрия:

sin(x) - синус числа х

cos(x) - косинус числа х

tan(x) - тангенс угла x

sinh(x) - гиперболический синус числа х

cosh(x) - гиперболический косинус числа х

tanh(x) - гиперболический тангенс числа x

atan(x) - арктангенс числа x

asin(x) - арксинус числа x

acos(x) - арккосинус числа x

ln(x) - натуральный логарифм от x

log10(x) -десятичный логарифм от x

Глобальные переменные при включенной данной опции работают с дробными числами(до 3 знаков), выводят их везде в данном виде.

Работа с таймерами(доступно с 24.02.23)

Для использования таймеров требуется их включить в шестеренке опции - установить их количество. По умолчанию 0 (выключено). Не стоит ставить большое количество, если их много не требуется - этим вы забираете ресурсы устройства.

Доступные функции:

timer(x,y)  - многократный запуск таймера номер x , на время y (секунды).

timerone(x,y) - однократный запуск таймера номер x , на время y (секунды).

timerstop(x) - остановка таймера х.

Если вы хотите перезапустить таймер, то перед вызовом timer() и timerone() требуется остановить этот таймер через timerstop(). Пока таймер запущен, то повторный вызов игнорируется !

Событие вызова таймера происходит через условие if внутри которого указывается событие таймера timereventX , где Х - номер таймера. Условие должно быть в общем цикле скрипта, для точности в 1 секунду требуется устанавливать интервал запуска скрипта так же 1 секунда. Условие события таймера сработает, если время отчета таймера уже вышло.

Примеры использования таймера внизу статьи под номерами 14, 15, 18.

Работа с GPIO EVENT(доступно с 25.02.23)

Для использования gpio event требуется их включить в шестеренке опции - установить их количество. По умолчанию 0 (выключено).

Опция позволяет запускать действие только после изменения состояния gpio, а не постоянно как в случае обычном сравнении gpio в условии if.

Доступные функции:

gpioint(x,y,z)  - запуск контроля события номер x на gpio y с режимом z, где z может принимать значения any - любое изменение, neg -  событие на отрицательное состояние, pos - событие на положительное состояние, none - выключить контроль.

Событие вызова изменения состояния gpio происходит через условие if внутри которого указывается событие gpio gpioeventX . где X - номер события. Условие должно быть в общем цикле и для быстрой реакции требуется установка минимального интервала в 1 секунду или зацикливание через goto.

Примеры использования gpio event внизу статьи под номерами 17, 18, 19.


Ограничения опции:

Лишние пробелы и другие знаки недопустимы. Каждый оператор должен быть в отдельной строке.

Если скрипт уже выполняется, то кнопка Test не работает. 


Сообщения ошибки:

1 - ошибка синтаксиса, например не хватает скобки

2 - ошибка синтаксиса

3 - превышен лимит переходов.

4 - не найдена переменная в условии

5 - ожидаем условие == , != ,  < , > , >= , <=

6 - не найдена функция (ошибка в названии или не установлена соответствующая опция)

7 - не найдена точка перехода у оператора goto

8 - слишком малое значение delay

9 - ошибка номера шаблона в конструкторе строк в операторах вывода

10 - ошибка в математической функции

11 - нет переменной с указанным номером

12 - попытка деления на ноль

21 - использование операторов else или endif без if

22- невозможно загрузить файл скрипта с диска

23- превышено количество вложений if

24- нумерация переменной изменена, сейчас она считается от 1.


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

Пример 1:

Описание: простейший термостат с управлением по gpio 14 и индикацией режимов

if(gpio14==0)
printw(выключено)
else
if(dsw1<300)
gpioset(16,1)
printw(холодно)
else
gpioset(16,0)
printw(горячо)
endif
endif

Пример 2:

Описание: простейшая мигалка GPIO с выводом состояния на главную страницу

:testm
printw(Тик)
gpioset(16,1)
delay(1000)
printw(Так)
gpioset(16,0)
delay(1000)
goto testm

Пример 3:

Описание: мигалка GPIO посложнее с выводом состояния на главную страницу и выключением через GPIO14

:testm
if(gpio14==0)
printw(выключено)
gpioset(16,0)
delay(1000)
else
printw(Тик)
gpioset(16,1)
delay(1000)
printw(Так)
gpioset(16,0)
delay(1000)
endif
goto testm

Пример 4:

Описание: вывод поочередно из конструктора строк данных на  LCD дисплей. Аналогично можно использовать и для LED матриц.

printd(1,#1)
delay(2000)
printd(1,#2)
delay(2000)
printd(1,#3)

Пример 5:

Описание: Включает gpio16, если gpio14 включен и температура на ds18b20 ниже 30 градусов.

if(gpio14==1&&dsw1<300)
gpioset(16,1)
else
gpioset(16,0)
endif

Пример 6:

Описание: мониторинг GPIO 12 и отправки sms и email при появлении единички на GPIO12.

if(gpio12==1)
sendsms(Кто-то взломал дверь)
else
resetsms()
endif

Пример 7:

Описание: вычисляем среднее значение 3 датчиков тремя действиями. Комменты убрать перед вставкой в редактор !! Пример ниже без использования расширенной математики - с ним все проще: valmath(1,(dsw1+dsw2+dsw3)/3)

valmath(1,dsw1+dsw2) // суммируем в глобальную переменную 1 значение 2 датчиков ds18b20
valmath(1,intval1+dsw3) // прибавляем еще третий датчик ds18b20 к глобальной переменной 1
valmath(1,intval1/3) // делим на 3 глобальную переменную 1 для получения среднего значения, значение деления сохраняем в глобальной переменной 1.
printw(_INTVAL1_) // выводим тут через конструктор строк переменную _INTVAL1_
end

Пример 8:

Описание: Мигаем раз в 5 секунд светодиодом

valmath(1,secondsperday%5)
if(intval1==0)
gpioset(19,1)
delay(500)
gpioset(19,0)
endif

Пример 9:

Описание: Мигаем светодиодом каждые 10 секунд по 5 раз

valmath(1,secondsperday%10)
if(intval1==0)
valset(2,0)
:testf
if(intval2>=5)
end
endif
gpioset(16,1)
delay(500)
gpioset(16,0)
delay(500)
valmath(2,intval2+1)
goto testf
endif

Пример 10:

Описание: Простой планировщик по времени включения с 7 по 21 час

if(hour>=7&&hour<21)
gpioset(16,1)
else
gpioset(16,0)
endif

Пример 11:

Описание: Простой способ включения GPIO на заданное время.

if(gpio16==1)
delay(2000)
gpioset(16,0)
endif

Пример 12:

Описание: Сложный способ включения GPIO на заданное время. Не мешает действиям других условий в скрипте. Время задается period*X

if(gpio12==1)
valmath(1,intval1+1)
if(intval1>Х)
gpioset(12,0)
endif
else
valset(1,0)
endif

Пример 13:

Описание: работа с циклом используя goto с периодом 100мс - delay обязателен.

:testm
свой код
delay(100)
goto testm

Пример 14:

Описание: Мигаем светодиодом каждые 10 секунд с включением на 3 секунды используя 2 таймера, один из них работает в однократном запуске.

timer(1,10)
if(timerevent1)
gpioset(16,1)
timerone(2,3)
endif
if(timerevent2)
gpioset(16,0)
endif

Пример 15:

Описание: Способ включения GPIO на заданное время используя таймер. Не мешает действиям других условий в скрипте. Замена примерам 11 и 12.

if(gpio16==1)
timerone(1,2)
endif
if(timerevent1)
gpioset(16,0)
endif

Пример 16:

Описание: 7 пример по новому используя приравнивание переменной через знак равно.  Пример ниже без использования расширенной математики - с ним все проще: intval1=(dsw1+dsw2+dsw3)/3

intval1=dsw1+dsw2
intval1=intval1+dsw3
intval1=intval1/3
printw(_INTVAL1_)

Пример 17:

Описание: Использование gpio event. Мониторинг GPIO 16 только при изменении состояния. Отсылка уведомления через Telegram(sms и другое), отправка GET запроса и установка gpio 12.

gpioint(1,16,neg)
if(gpioevent1)
resetsms()
sendsms(кто-то взломал дверь)
httpget(192.168.1.42/testget)
gpioset(12,1)
endif

Пример 18:

Описание: Использование gpio event и таймера. Мониторинг GPIO 15(например датчик движения) и включение GPIO 16 на 60 секунд. timerstop() тут сбрасывает отчет и не дает выключить GPIO 16 при постоянном изменении состояния на GPIO 15. 

gpioint(1,15,pos)
if(gpioevent1)
gpioset(16,1)
timerstop(1)
timerone(1,60)
endif
if(timerevent1)
gpioset(16,0)
endif

Пример 19:

Описание: Использование gpio event  в качестве кнопок для управления GPIO. Пример на 2 кнопки. Реализован цикл через goto с паузой для быстрой реакции. Замена опции gpio key для особых не стандартных случаев.

:loop

gpioint(1,16,neg)
if(gpioevent1)
gpioset(12,2)
endif

gpioint(2,17,neg)
if(gpioevent2)
gpioset(14,2)
endif

delay(100)
goto loop



Список старых числовых и текстовых переменных (до 6.02.21)(кликнуть чтобы показать) Новые переменные доступны на вкладке Metrics самого устройства.

Список числовых переменных

Внимание ! Имена некоторых метрик поменялись с 6.02.21 !! Новые имена можно посмотреть на вкладке Metrics на самом модуле. Там указаны только первый номер на устройстве.


Ниже метрики относятся прошивкам до 6.02.21:

Переменные, содержащие заглавную "X" , "Y" или массивы [x] , [y] обозначают как порядковый номер-число.

Массивы в формате [x][y] нумеруются от нуля ! Пример data1wire[х]: - data1wire[0] - выводит первый датчик

Key
ds3231t Температура DS3231
adc Внутренний АЦП (ESP8266)
ADCdata[x] Данные с АЦП PCF8591
am_h Влажность с датчика AM2321
am_t Температура с датчика AM2321
apdsb APDS9960 Освещенность синий
apdsc APDS9960 Освещенность
apdsg APDS9960 Освещенность зеленый
apdsr APDS9960 Освещенность красный
bh_l Освещенность с датчика BH1750
bme_h Влажность с датчика BME280
bme_p Давление с датчика BME280
bme_t Температура с датчика BME280
bmp_p Давление датчиков BMP180/085
bmp_t Температура датчиков BMP180/085
cntXi Данные с счетчика 60
co2data Датчики CO2 MH-Z1x
csea Active Power CSE7766
cseap Apparent Power CSE7766
csec Ток на CSE7766
csee Потребление суммарно CSE7766
csef Power Factor CSE7766
csev Напряжение на CSE7766
d2d[x][y] Данные с Device to Device(D2D)
data1wire[х] Температура датчиков DS18B20
dht_hХ Влажность датчиков DHT22 DHT11
dht_tХ Температура датчиков DHT22 DHT11
hcsr04 HC-SR04
hdch Влажность датчика HDC1080
hdct Температура датчика HDC1080
hlw_c HLW8012 (Sonoff POW) Ток
hlw_v HLW8012 (Sonoff POW) Напряжение
hlw_w HLW8012 (Sonoff POW) Мощность
hlw_wh HLW8012 (Sonoff POW) Ватт/ч
hx711 Весы HX711
ina_a Ток с датчика INA219
ina_v Напряжение с датчика INA219
mb[y][x] ModBus метрики
mlxa Температура окружающая MLX90614
mlxo Температура объекта MLX90614
nmval[x] Принятые данные с датчиков narodmon.ru
nrfa[x][y] АПЦ с модулей NRF24
nrfb[x][y] Другие данные с модулей NRF24
nrfc[x][y] Счетчик с модулей NRF24
nrfg[x][y] Состояние GPIO с модулей NRF24
nrfh[x][y] Влажность с модулей NRF24
nrft[x][y] Температура с модулей NRF24
pmcn Ток с устройства Power Monitor
pmspm10 PM1.0
pmspm100 PM1.00
pmspm25 PM2.5
pmv Напряжение с устройства Power Monitor
pwm[x] Состояние ШИМ
rtd MAX31865 Температура
sht30_h Влажность с датчика SHT30
sht30_t Температура с датчика SHT30
shtc3h Влажность SHTC3
shtc3t Температура SHTC3
sht_h Влажность с датчика SHT21
sht_t Температура с датчика SHT21
tsllux Данные с TSL2561
valget(x) Переменные Interpreter
vl53l0x Расстояние VL53L0X
vsens[y][x] Данные с датчиков Virtual SENS
vw_a[x][y] АЦП с VirtualWire
vw_b[x][y] Один байт с VirtualWire
vw_c[x][y] Счетчики с VirtualWire
vw_h[x][y] Влажность с VirtualWire
vw_t[x][y] Температура с VirtualWire

Список текстовых метрик для функций вывода на дисплеи и httpget

<Внимание ! Имена некоторых метрик поменялись с 6.02.21 !! Новые имена можно посмотреть на вкладке Metrics на самом модуле.

Topic Description
_IP_ IP адрес устройства
_MEM_ Свободное ОЗУ
_UPTIME_ / _UPTIMES_ Время работы
_RSSI_ Уровень сигнала (нет на старых SDK)
_TIME_ Время
_TIMES_ Время с секундами
_WEEK_ День недели
_RADIO_ Имя текущей интернет станции
_APDSC_ APDS9960 Освещенность
_APDSR_ APDS9960 Освещенность красный
_APDSG_ APDS9960 Освещенность зеленый
_APDSB_ APDS9960 Освещенность синий
_TSSETx_ Установка термостата
_TSONx_ Состояние термостата вкл/выкл
_CCSCO2_ CO2 датчика CCS811
_CCSTVOC_ TVOC датчика CCS811
_LORSxy_ Метрики LORA
_RTD_ MAX31865 Температура
_HDCT_ Температура датчика HDC1080
_HDCH_ Влажность датчика HDC1080
_PMS10_ PM1.0
_PMS25_ PM2.5
_PMS100_ PM1.00
_VL53L0X_ Расстояние VL53L0X
_MByyxx_ ModBus метрики
_OWT_ Температура воздуха OpenWeatherMap
_OWH_ Влажность воздуха OpenWeatherMap
_OWP_ Давление воздуха OpenWeatherMap
_OWWIND_ Скорость ветра OpenWeatherMap
_OWD_ Описание погоды OpenWeatherMap
_OWC_ Облачность OpenWeatherMap
_OWF_ Температура по ощущениям OpenWeatherMap
_OWR3_ Количество осадков 3 часа OpenWeatherMap
_OWR1_ Количество осадков 1 часа OpenWeatherMap
_OWV_ Видимость OpenWeatherMap
_SUNDW_ Восход солнца OpenWeatherMap
_SUNUP_ Заход солнца OpenWeatherMap
_SUNDAY_ Продолжительность дня OpenWeatherMap
_AS5600_ Угол AS5600
_GPSLAT_ Широта GPS приемник
_GPSLON_ Долгота GPS приемник
_GPSH_ Высота GPS приемник
_GPSS_ Скорость GPS приемник
_GPSC_ Курс GPS приемник
_GPSN_ Количество спутиков GPS приемник
_BTxR_ BT HUB RSSI
_BTxT_ BT HUB Температура
_BTxL_ BT HUB Освещенность
_BTxF_ BT HUB Плодородие
_BTxM_ BT HUB Влажность(почвы)
_BTxH_ BT HUB Влажность
_BTxB_ BT HUB Заряд батареи
_GTR_ Осадки gismeteo.ru
_GTC_ Облачность gismeteo.ru
_GTWIND_ Ветер gismeteo.ru
_SHTC3T_ Температура SHTC3
_SHTC3H_ Влажность SHTC3
_D2Dxxyy_ Данные с Device to Device(D2D)
_CSEV_ Напряжение на CSE7766
_CSEC_ Ток на CSE7766
_CSEE_ Потребление суммарно CSE7766
_CSEAP_ Apparent Power CSE7766
_CSEA_ Active Power CSE7766
_CSPF_ Power Factor CSE7766
_ADC_ Внутренний АЦП (ESP8266)
_IADCx_ Внутренние АЦП (ESP32)
_LM_ Температура с датчика LM75 или DS1621
_INAV_ Напряжение с датчика INA219
_INAC_ Ток с датчика INA219
_DHTTx_ Температура датчиков DHT22 DHT11
_DHTHx_ Влажность датчиков DHT22 DHT11
_BMPT_ Температура датчиков BMP180/085
_BMPP_ Давление датчиков BMP180/085
_CNTxI_ Данные с счетчика 60
_BH_ Освещенность с датчика BH1750
_AMT_ Температура с датчика AM2321
_AMH_ Влажность с датчика AM2321
_DSWx_ Температура датчиков DS18B20
_BMET_ Температура с датчика BME280
_BMEH_ Влажность с датчика BME280
_BMEP_ Давление с датчика BME280
_SHTT_ Температура с датчика SHT21
_SHTH_ Влажность с датчика SHT21
_SHT30T_ Температура с датчика SHT30
_SHT30H_ Влажность с датчика SHT30
_HEAT_ Температура с термопары MAX6675
_CVV_ Напряжение с устройства CC/CV
_CVC_ Ток с устройства CC/CV
_PMV_ Напряжение с устройства Power Monitor
_PMC_ Ток с устройства Power Monitor
_PMW_ Мощность с устройства Power Monitor
_PMWH_ Расход с устройства Power Monitor
_RFID_ Данные с RFID
_SHT10T_ Температура SHT1x
_SHT10H_ Влажность SHT1x
_CO2_ Датчики CO2 MH-Z1x
_PING_ ping тест статус
_VSyx_ Данные с датчиков Virtual SENS
_GTT_ Температура с gismeteo.ru на сегодня
_GTH_ Влажность с gismeteo.ru на сегодня
_GYT_ Температура с gismeteo.ru на завтра
_GYH_ Влажность с gismeteo.ru на завтра
_GTP_ Давление с gismeteo.ru на сегодня
_GYP_ Давление с gismeteo.ru на завтра
_GTWIND_ Скорость и направление ветра gismeteo.ru сегодня
_GYWIND_ Скорость и направление ветра gismeteo.ru завтра
_NMx_ Принятые данные с датчиков narodmon.ru
_ADCx_ Данные с АЦП PCF8591
_RTCT_ Температура DS3231
_NRFxCy_ Счетчик с модулей NRF24
_NRFxTy_ Температура с модулей NRF24
_NRFxHy_ Влажность с модулей NRF24
_NRFxAy_ АПЦ с модулей NRF24
_NRFxGy_ Состояние GPIO с модулей NRF24
_NRFxBy_ Другие данные с модулей NRF24
_RSSIGSM_ RSSI GSM
_PCFCx_ Счетчик импульсов PCF8583
_PCFCTx_ Счетчик импульсов PCF8583 на сегодня
_PCFCYx_ Счетчик импульсов PCF8583 на вчера
_RSx_ Температура с модулей RC датчик
_RSx_ Влажность с модулей RC датчик
_RSx_ АЦП с модулей RC датчик
_CNTx_ Счетчики импульсов.
_INTx_ Событие прерывания
_PWMx_ Состояние ШИМ
_GPIOx_ Состояние GPIO входа
_DATE_ Дата. Требуется поддержка календаря
_VALDESx_ Глобальные переменные конструктора кода
_SCALE_ Весы HX711
_MCPA_ Данные с АЦП MCP3201
_ADSx_ Данные с АЦП ADS1115
_VZCO2_ Датчик VZ-89T CO2
_VZTV_ Датчик VZ-89T tvoc
_NLxT_ Температура с датчиков NooLite
_NLxH_ Влажность с датчиков NooLite
_HCSR_ HC-SR04
_TSL_ Данные с TSL2561
_MCMSG_ Количество сообщений в электронном ящике
_MCUNS_ Количество непрочитанных сообщений в электронном ящике
_UPSI_ Данные с UPS Монитора. Напряжение на входе.
_UPSF_ Данные с UPS Монитора. Напряжение на входе.
_UPSO_ Данные с UPS Монитора. Напряжение на выходе.
_UPSH_ Данные с UPS Монитора. Частота сети
_UPST_ Данные с UPS Монитора. Температура в корпусе
_UPSB_ Данные с UPS Монитора. Напряжение батареи.
_UPSS_ Данные с UPS Монитора. Нагрузка
_MLXO_ Температура объекта MLX90614
_MLXA_ Температура окружающая MLX90614
_VALx_ Переменные Interpreter
_VWTxy_ Температура с VirtualWire
_VWHxy_ Влажность с VirtualWire
_VWCxy_ Счетчики с VirtualWire
_VWAxy_ АЦП с VirtualWire
_VWBxy_ Один байт с VirtualWire
_HLWW_ HLW8012 (Sonoff POW) Мощность
_HLWV_ HLW8012 (Sonoff POW) Напряжение
_HLWC_ HLW8012 (Sonoff POW) Ток
_HLWWH_ HLW8012 (Sonoff POW) Ватт/ч