Interpreter (обновлено: 20 Jan 2024, 20:53:20)

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

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

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

17.12.2023 - обновление до версии v2.3 - сейчас в if работает вложенная математика и дробные числа. Включать опцию расширенной математики для простой математики сейчас не требуется !


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

До 17.12.2023 значения переменных без использования расширенной математики были умножены на 10, 100 или 1000 в зависимости от количества чисел после запятой.




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

 

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

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.

17.12.2023 - обновление до версии v2.3 - сейчас в if работает вложенная математика и дробные числа. Включать опцию расширенной математики для простой математики сейчас не требуется !


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

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(условие*) - условный оператор,. Поддерживается сравнение == , != ,  < , > , >= , <=. С 17.12.2023 допустима вложенная математика и скобки внутри оператора 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 модуля (для старых прошивок - внизу статьи)


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

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

Для чтения переменной используем 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 ! По умолчанию не включена - включается в шестеренке опции ! Опция актуальна только если требуются функции.

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

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

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

Работа с таймерами(доступно с 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<30.5)
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<30.5)
gpioset(16,1)
else
gpioset(16,0)
endif

Пример 6:

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

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

Пример 7: пример условия со встроенной математикой внутри if с расчетом среднего 3 датчиков

if((dsw1+dsw2+dsw3)/3<30.5)
gpioset(16,1)
else
gpioset(16,0)
endif


Пример 8:

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

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

Пример 9:

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

if(secondsperday%10==0)
intval2=0 :testf if(intval2>=5) end endif gpioset(16,1) delay(500) gpioset(16,0) delay(500) intval2=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
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) Ватт/ч