Merge pull request #194 from biveraxe/ver4dev

Описание модулей и функций сценариев и getUptime
This commit is contained in:
2022-09-17 22:06:46 +03:00
committed by GitHub
37 changed files with 308 additions and 12 deletions

View File

@@ -322,7 +322,8 @@ enum SysOp {
sysop_gethhmmss,
sysop_getTime,
sysop_getIP,
sysop_mqttPub
sysop_mqttPub,
sysop_getUptime
};
IoTValue sysExecute(SysOp command, std::vector<IoTValue> &param) {
@@ -413,6 +414,10 @@ IoTValue sysExecute(SysOp command, std::vector<IoTValue> &param) {
value.valD = mqtt.publish(param[0].valS.c_str(), param[1].valS.c_str(), false);
}
break;
case sysop_getUptime:
value.valS = jsonReadStr(errorsHeapJson, F("upt"));
value.isDecimal = false;
break;
}
return value;
@@ -463,6 +468,8 @@ class SysCallExprAST : public ExprAST {
operation = sysop_gethhmmss;
else if (Callee == "getTime")
operation = sysop_getTime;
else if (Callee == "getUptime")
operation = sysop_getUptime;
else
operation = sysop_notfound;
}

View File

@@ -46,7 +46,54 @@
"size": "Размерность матрицы экрана.",
"coord": "Координата позиции для вывода данных элемента конфигурации.",
"id2show": "id элемента конфигурации."
}
},
"funcInfo": [
{
"name": "noBacklight",
"descr": "Выключить подсветку",
"params": []
},
{
"name": "backlight",
"descr": "Включить подсветку",
"params": []
},
{
"name": "noDisplay",
"descr": "Спрятать все данные",
"params": []
},
{
"name": "display",
"descr": "Показать данные на экране",
"params": []
},
{
"name": "toggle",
"descr": "Переключает видимость значений на экране",
"params": []
},
{
"name": "x",
"descr": "Устанавливает первую координату",
"params": ["Номер строки первого символа"]
},
{
"name": "y",
"descr": "Устанавливает вторую координату",
"params": ["Номер столбца первого символа"]
},
{
"name": "descr",
"descr": "Задает приставку слева от значения",
"params": ["Строка"]
},
{
"name": "id2show",
"descr": "Задает ИД элемента, значение которого хотим отображать на экране",
"params": ["Имя элемента конфигурации"]
}
]
},
"defActive": true,

View File

@@ -24,7 +24,9 @@
"specialThanks": "",
"moduleName": "ButtonIn",
"moduleVersion": "1.0",
"title": "Кнопка подключенная к пину",
"moduleDesc": "Позволяет интерпретировать сигналы на цифровом пине как кнопку, т.е. создает в системе объект для чтения булевых значений с внешнего физического источника. Может вести себя как кнопка или как переключатель.",
"retInfo": "Элемент данного модуля может иметь два значения 0 - низкий уровень, 1 - высокий уровень на входе. Значение меняется при выполнении условий по параметрам.",
"propInfo": {
"pin": "Укажите GPIO номер пина для чтения состояний подключенной кнопки",
"execLevel": "Высокий 1 или низкий 0 уровень переключения состояния в режиме fixState = 1",

View File

@@ -2,7 +2,7 @@
"menuSection": "Исполнительные устройства",
"configItem": [
{
"name": "Кнопка управляющая пином (Реле)",
"name": "Управление пином",
"type": "Writing",
"subtype": "ButtonOut",
"id": "btn",
@@ -21,11 +21,20 @@
"specialThanks": "",
"moduleName": "ButtonOut",
"moduleVersion": "1.0",
"title": "Управление пином",
"moduleDesc": "Управляем состоянием конкретного пина по модели реле.",
"propInfo": {
"pin": "Укажите GPIO номер пина для управления выходом",
"inv": "Инвертировать выходные сигналы"
}
},
"retInfo": "Элемент данного модуля может иметь два значения 0 - низкий уровень, 1 - высокий уровень на выходе",
"funcInfo": [
{
"name": "change",
"descr": "Инвертирует значение переключателя",
"params": []
}
]
},
"defActive": true,
"devices": {

View File

@@ -23,13 +23,21 @@
"specialThanks": "",
"moduleName": "EspCam",
"moduleVersion": "1.0",
"title": "Camera OV2640 (ESPcam)",
"moduleDesc": "Предназначен для специальной платы esp32 со встроенной камерой. Добавляет в прошивку функцию создания фото и сохранения в оперативную память. Для сброса на флешкарту необходимо использовать парный модуль SDcard. Это экспериментальные модули и в будущем планируется пересобрать их.",
"propInfo": {
"int": "Пауза в секундах во время постоянной съемки.",
"useLed": "использовать диод подсветки при съемке.",
"ticker": "Генерировать(1) или нет(0) событие с интервалом int",
"webTicker": "Генерировать(1) или нет(0) событие при обращении через веб-страницу с текущим фото в памяти."
}
},
"funcInfo": [
{
"name": "shot",
"descr": "Сделать снимок",
"params": []
}
]
},
"defActive": false,

View File

@@ -23,13 +23,22 @@
"specialThanks": "Oleg @Threedreality, Sergey @Serghei63",
"moduleName": "IoTServo",
"moduleVersion": "1.0",
"title": "Сервопривод",
"moduleDesc": "Предназначен для управления сервоприводом по уровню аналогово сигнала.",
"propInfo": {
"int": "Пауза в секундах между опросами аналогового входа. Если 0, то читаем постоянно",
"pin": "Пин, к которому подключен сервопривод",
"apin": "Номер GPIO аналогового пина. Если -1, то функция отключена.",
"amap": "Настройки преобразования значений аналога в нужный диапазон сервы, имеет смысл, если аналог включен."
}
},
"retInfo": "Содержит текущее значение поворота",
"funcInfo": [
{
"name": "rotate",
"descr": "Повернуть привод на значение",
"params": ["Числовое значение"]
}
]
},
"defActive": true,

View File

@@ -22,6 +22,7 @@
"specialThanks": "",
"moduleName": "Mcp23017",
"moduleVersion": "1.0",
"title": "Расширитель портов Mcp23017",
"moduleDesc": "Добавляет в систему дополнительные GPIO для элементов, которые поддерживают такую функцию.",
"propInfo": {
"int": "Не используется",

View File

@@ -22,12 +22,61 @@
"specialThanks": "",
"moduleName": "Mp3",
"moduleVersion": "1.0",
"title": "MP3 плеер",
"moduleDesc": "Позволяет управлять модулем проигрывания MP3 файлов с SD-карты по serial интерфейсу (DFplayer mini).",
"propInfo": {
"int": "Периодичность в секундах опроса состояния плеера.",
"pins": "Список GPIO через запятую, к которым подключен плеер.",
"volume": "Уровень громкости при инициализации."
}
},
"retInfo": "Содержит описание текущего статуса модуля, например, Time Out! - не может подключиться",
"funcInfo": [
{
"name": "enableLoop",
"descr": "Включить бесконечное повторение",
"params": []
},
{
"name": "disableLoop",
"descr": "Выключить бесконечное повторение",
"params": []
},
{
"name": "randomAll",
"descr": "Запустить случайны трек",
"params": []
},
{
"name": "stop",
"descr": "Остановить проигрывание трека",
"params": []
},
{
"name": "volume",
"descr": "Установить громкость",
"params": ["Значение громкости"]
},
{
"name": "playFolder",
"descr": "Проиграть файл из папки",
"params": ["Номер папки", "Номер файла"]
},
{
"name": "play",
"descr": "Запустить проигрывание первого файла",
"params": []
},
{
"name": "next",
"descr": "Запустить проигрывание следующего файла",
"params": []
},
{
"name": "previous",
"descr": "Запустить проигрывание предыдущего файла",
"params": []
}
]
},
"defActive": true,

View File

@@ -25,7 +25,9 @@
"specialThanks": "Serghei Crasnicov @Serghei63",
"moduleName": "Pwm32",
"moduleVersion": "1.0",
"title": "PWM ESP32",
"moduleDesc": "Позволяет управлять Широтно-Импульсной Модуляцией на конкретном пине платы.",
"retInfo": "Содержит текущее значение ШИМ",
"propInfo": {
"int": "Количество миллисекунд между опросами аналога. 0 - выключено.",
"pin": "Управляемый пин",

View File

@@ -23,7 +23,9 @@
"specialThanks": "Serghei Crasnicov @Serghei63",
"moduleName": "Pwm8266",
"moduleVersion": "1.0",
"title": "PWM ESP8266",
"moduleDesc": "Позволяет управлять Широтно-Импульсной Модуляцией на конкретном пине платы.",
"retInfo": "Содержит текущее значение ШИМ",
"propInfo": {
"int": "Количество миллисекунд между опросами аналога. 0 - выключено.",
"pin": "Управляемый пин",

View File

@@ -20,6 +20,7 @@
"specialThanks": "",
"moduleName": "SDcard",
"moduleVersion": "1.0",
"title": "SD карта (в разработке)",
"moduleDesc": "Предназначен для специальной платы esp32 со встроенной камерой. Добавляет в прошивку функцию сохранения фото из оперативной памяти. Работает в паре с EspCam. Это экспериментальные модули и в будущем планируется пересобрать их.",
"propInfo": {
"int": "Не используется."

View File

@@ -19,6 +19,7 @@
"specialThanks": "",
"moduleName": "SysExt",
"moduleVersion": "1.0",
"title": "Доп. функции системы (в разработке)",
"moduleDesc": "Добавляет в систему дополнительные функции. Например, возможность прямого управления GPIO из сценариев.",
"propInfo": {
"int": "Не используется"

View File

@@ -24,13 +24,26 @@
"specialThanks": "",
"moduleName": "Telegram",
"moduleVersion": "1.0",
"title": "Телеграм-Бот",
"moduleDesc": "Добавляет возможность отправлять сообщения от имени бота контакту в Телеграм-чате и получать команды.",
"propInfo": {
"token": "Токен для авторизации бота в системе Telegram",
"autos": "Автоматически(1) или нет(0) запоминать ChatID по входящим сообщениям. Т.е. бот будет информировать тех, кто последний прислал сообщение.",
"receiveMsg": "Обрабатывать(1) или нет(0) входящие сообщения.",
"chatID": "ИД диалога с контактом. Необходим для отправки сообщений именно вам."
}
},
"funcInfo": [
{
"name": "sendMsg",
"descr": "Отправить сообщение без повторений.",
"params": ["Сообщение, может быть строкой, числом или ИД другого элемента для получения значения"]
},
{
"name": "sendOftenMsg",
"descr": "Отправить сообщение в любом случае, даж если отправляли такое ранее.",
"params": ["Сообщение, может быть строкой, числом или ИД другого элемента для получения значения"]
}
]
},
"defActive": false,

View File

@@ -22,6 +22,7 @@
"specialThanks": "",
"moduleName": "TelegramLT",
"moduleVersion": "1.0",
"title": "Телеграм-извещатель",
"moduleDesc": "Только отправка уведомлений в телеграм о событиях. Модуль занимает значительно меньше памяти в ESP по сравнению со стандартным. Внимание! для отправки сообщений используется промежуточный сервер http://live-control.com",
"propInfo": {
"token": "Токен для авторизации бота в системе Telegram",

104
src/modules/sceninfo.json Normal file
View File

@@ -0,0 +1,104 @@
{
"about": {
"authorName": "Ilya Belyakov",
"authorContact": "https://t.me/Biveraxe",
"authorGit": "https://github.com/biveraxe",
"specialThanks": "",
"moduleName": "Scenario",
"moduleVersion": "1.0",
"title": "Сценарии",
"moduleDesc": "Сценарии позволяют реализовать индивидуальный алгоритм работы контроллера с учетом происходящих событий. Они представляют из себя описательный язык того, что нужно сделать при наступлении того или иного события, учитывая конкретные условия. \nВ базе языка - выражение вида: “Если условие истина, то выполнить одно действие, а если нет, то иное”. При этом проверка такого выражения будет осуществляться только при наступлении события связанного с элементом конфигурации, который упоминается в этом выражении. \nУсловием или действием может быть любое разрешенное выражение. Они все при выполнении возвращают значение. Выражение может состоять из: идентификаторов элементов конфигурации, чисел (целые, дробные и отрицательные), строк в кавычках, операций сравнения < > <= >= == !=, операций присваивания значений =, математических операций +-*/, логических операций &|, комментариев после символа #, функций (в параметрах которых так же могут быть любые разрешенные выражения), конструкции ветвления IfThenElse, группирующие блоки выражений {}",
"funcInfo": [
{
"name": "exit",
"descr": "Прерываем работу сценария и выводим в консоль причину. Причина не обязательна.",
"params": ["Причина"]
},
{
"name": "reboot",
"descr": "Перезагружаем ESP",
"params": []
},
{
"name": "digitalRead",
"descr": "Читаем состояние пина, результат возвращается",
"params": ["НомерПина"]
},
{
"name": "analogRead",
"descr": "Читаем состояние аналогового пина, результат возвращается",
"params": ["НомерПина"]
},
{
"name": "digitalWrite",
"descr": "Устанавливаем статус пина",
"params": ["НомерПина", "Значение"]
},
{
"name": "digitalInvert",
"descr": "Инвертируем значение пина",
"params": ["НомерПина"]
},
{
"name": "deepSleep",
"descr": "Погрузить ESP в глубокий сон. Вывод из сна с перезагрузкой. Для ESP8266 необходимо соединить gpio 16 и RST",
"params": ["ЧислоСекунд"]
},
{
"name": "getIP",
"descr": "Получить строку IP ESP",
"params": []
},
{
"name": "getUptime",
"descr": "Получить строку со временем работы устройства hh:mm:ss",
"params": []
},
{
"name": "mqttPub",
"descr": "Отправить значение в топик MQTT",
"params": ["Топик", "Значение"]
},
{
"name": "getHours",
"descr": "Получить текущее число часов. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "getMinutes",
"descr": "Получить текущее число минут. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "getSeconds",
"descr": "Получить текущее число секунд. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "getMonth",
"descr": "Получить номер текущего месяца. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "getDay",
"descr": "Получить номер текущего дня месяца. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "gethhmm",
"descr": "Получить строку вида hh:mm. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "gethhmmss",
"descr": "Получить строку вида hh:mm:ss. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
},
{
"name": "getTime",
"descr": "Получить строку вида dd.mm.yy hh:mm:ss. Если время не получено из сети Интернет или внешнего RTC, то условие пропускается",
"params": []
}
]
}
}

View File

@@ -27,6 +27,7 @@
"specialThanks": "",
"moduleName": "Ads1115",
"moduleVersion": "1.0",
"title": "Датчик напряжения ADS1115",
"moduleDesc": "Позволяет получить относительную величину напряжения на понижающем трансформаторе.",
"propInfo": {
"pin": "GPIO номер, к которому подключен датчик.",

View File

@@ -33,6 +33,7 @@
"specialThanks": "",
"moduleName": "Aht20",
"moduleVersion": "1.0",
"title": "Сенсор температуры и влажности AHT20",
"moduleDesc": "Позволяет получить температуру и влажность с Aht20.",
"propInfo": {
"pin": "GPIO номер, к которому подключен датчик.",

View File

@@ -26,6 +26,7 @@
"specialThanks": "",
"moduleName": "AnalogAdc",
"moduleVersion": "1.0",
"title": "Аналоговый сенсор",
"moduleDesc": "Позволяет получить текущее значение на аналоговом GPIO или усредненное для avgSteps измерений каждого вызова loop.",
"propInfo": {
"pin": "Аналоговый GPIO номер, к которому подключен датчик.",

View File

@@ -45,6 +45,7 @@
"specialThanks": "Serghei Crasnicov @Serghei63",
"moduleName": "Bme280",
"moduleVersion": "1.0",
"title": "Сенсор температуры, давления и влажности с Bme280",
"moduleDesc": "Позволяет получить значения температуры, давления и влажности с Bme280.",
"propInfo": {
"addr": "Адрес датчика на шине, обычно 0x77.",

View File

@@ -33,6 +33,7 @@
"specialThanks": "Serghei Crasnicov @Serghei63",
"moduleName": "Bmp280",
"moduleVersion": "1.0",
"title": "Сенсор температуры, давления с Bmp280",
"moduleDesc": "Позволяет получить значения температуры и давления с Bmp280.",
"propInfo": {
"addr": "Адрес датчика на шине, обычно 0x77.",

View File

@@ -33,6 +33,7 @@
"specialThanks": "Serghei Crasnicov @Serghei63",
"moduleName": "Dht1122",
"moduleVersion": "1.0",
"title": "Сенсор температуры и влажности с dht11 или dht22",
"moduleDesc": "Позволяет получить значения температуры и влажности с dht11 или dht22.",
"propInfo": {
"senstype": "Тип сенсора dht11 или dht22.",

View File

@@ -23,6 +23,7 @@
"specialThanks": "",
"moduleName": "Ds18b20",
"moduleVersion": "1.0",
"title": "Cенсор температуры ds18b20",
"moduleDesc": "Позволяет получить значения температуры с Ds18b20.",
"propInfo": {
"pin": "GPIO номер, к которому подключена шина данных датчиков.",

View File

@@ -37,7 +37,8 @@
"specialThanks": "",
"moduleName": "Emon",
"moduleVersion": "1.0",
"moduleDesc": ".",
"title": "Датчик тока и напряжения",
"moduleDesc": "Получение информации о токе и напряжении с использованием трансформатора",
"propInfo": {
"pin_U": "",
"calib_U": "",

View File

@@ -31,6 +31,7 @@
"specialThanks": "",
"moduleName": "GY21",
"moduleVersion": "1.0",
"title": "Датчик температуры и влажности GY21",
"moduleDesc": "Позволяет получить значения температуры и влажности с GY21.",
"propInfo": {
"int": "Количество секунд между опросами датчика."

View File

@@ -33,6 +33,7 @@
"specialThanks": "",
"moduleName": "Hdc1080",
"moduleVersion": "1.0",
"title": "Датчик температуры и влажности Hdc1080",
"moduleDesc": "Позволяет получить значения температуры и влажности с Hdc1080.",
"propInfo": {
"addr": "Адрес датчика на шине данных, обычно 0x40",

View File

@@ -21,6 +21,7 @@
"specialThanks": "",
"moduleName": "IoTWiegand",
"moduleVersion": "1.0",
"title": "Считыватель Wiegand (в разработке)",
"moduleDesc": "Позволяет получить коды доступа по протоколу Wiegand с различных считывателей. На данный момент модуль в РАЗРАБОТКЕ",
"propInfo": {
"pinD0": "GPIO шины данных",

View File

@@ -22,7 +22,8 @@
"specialThanks": "",
"moduleName": "Max6675",
"moduleVersion": "1.0",
"moduleDesc": "Позволяет получить значения температуры с Max6675.",
"title": "Cенсор температуры MAX6675",
"moduleDesc": "Позволяет получить значения температуры с Max6675 и термопары.",
"propInfo": {
"DO": "GPIO шины данных",
"CS": "GPIO шины данных",

View File

@@ -88,6 +88,7 @@
"specialThanks": "",
"moduleName": "Mhz19",
"moduleVersion": "1.0",
"title": "Датчик температуры и CO2 с Mhz19",
"moduleDesc": "Позволяет получить значения температуры и CO2 с Mhz19.",
"propInfo": {
"int": "Количество секунд между опросами датчика.",

View File

@@ -19,12 +19,31 @@
"specialThanks": "Valentin Khandriga @Valiuhaaa",
"moduleName": "RCswitch",
"moduleVersion": "1.0",
"title": "Сканер кнопок 433 MHz",
"moduleDesc": "Позволяет принимать и передавать байт-коды на частоте 433 MHz от и для простых пультов, кнопок, радиореле",
"propInfo": {
"pinRx": "GPIO номер, к которому подключен радио приемник 433 MHz. Если < 0, то приемник выключен",
"pinTx": "GPIO номер, к которому подключен радио передатчик 433 MHz. Если < 0, то передатчик выключен",
"int": "Количество миллисекунд между опросами датчика. 0 - выключено. (устранение повторений при нажатой кнопке)"
}
},
"retInfo": "Содержит принятое значение",
"funcInfo": [
{
"name": "sendBitStr",
"descr": "Отправляем строку вида 000000000001010100010001",
"params": ["Строка 000000000001010100010001"]
},
{
"name": "sendTriState",
"descr": "отправляем строку вида 00000FFF0F0F",
"params": ["Строка 00000FFF0F0F"]
},
{
"name": "sendDecimal",
"descr": "отправляем строку вида 5393",
"params": ["Код в виде числа", "Количество бит чтоб заполнить нулями"]
}
]
},
"defActive": true,

View File

@@ -43,6 +43,7 @@
"specialThanks": "",
"moduleName": "Sds011",
"moduleVersion": "1.0",
"title": "Датчик пыли",
"moduleDesc": "Позволяет получить значения концентрации пыли в воздухе с Sds011.",
"propInfo": {
"int": "Количество секунд между опросами датчика.",

View File

@@ -31,6 +31,7 @@
"specialThanks": "",
"moduleName": "Sht20",
"moduleVersion": "1.0",
"title": "Сенсор температуры и влажности с Sht20",
"moduleDesc": "Позволяет получить значения температуры и влажности с Sht20.",
"propInfo": {
"int": "Количество секунд между опросами датчика."

View File

@@ -31,6 +31,7 @@
"specialThanks": "",
"moduleName": "Sht30",
"moduleVersion": "1.0",
"title": "Сенсор температуры и влажности с Sht30",
"moduleDesc": "Позволяет получить температуру и влажность с датчика Sht30.",
"propInfo": {
"int": "Количество секунд между опросами датчика."

View File

@@ -23,6 +23,7 @@
"specialThanks": "",
"moduleName": "Sonar",
"moduleVersion": "1.0",
"title": "Сонар HC-SR04",
"moduleDesc": "Позволяет получить значение расстояния до препятствия с использованием ультразвукового датчика (в сантиметрах).",
"propInfo": {
"pinTrig": "GPIO контакта Trig",

View File

@@ -23,6 +23,7 @@
"specialThanks": "@itsid1 @Valiuhaaa Serg",
"moduleName": "Loging",
"moduleVersion": "3.0",
"title": "Логирование в график",
"moduleDesc": "Расширение позволяющее логировать любую величину в график. Графики доступны в мобильном приложении и в веб интерфейсе. Данные графиков хранятся в встроенной памяти esp. График отображает период времени выбранный пользователем. В окне ввода даты нужно выбрать день, историю которого вы хотите посмотреть",
"propInfo": {
"int": "Интервал логирования в мнутах, рекомендуется для esp8266 использоать интервал не менее 5-ти минут",

View File

@@ -33,6 +33,7 @@
"repeat": "Сбрасывать(1) или нет(0) таймер в начальное состояние при достижении нуля.",
"needSave": "Требуется сохранять(1) или нет(0) состояние в энерго независимую память. Функция находится в разработке."
},
"retInfo": "Содержит текущее счетчика обратного отсчета",
"funcInfo": [
{
"name": "stop",

View File

@@ -20,7 +20,8 @@
"specialThanks": "",
"moduleName": "VButton",
"moduleVersion": "1.0",
"moduleDesc": "Специальный системный модуль для добавления виртуальной кнопки.",
"title": "Виртуальная кнопка",
"moduleDesc": "Специальный системный модуль для добавления виртуальной кнопки. Существует только в интерфейсе управления.",
"propInfo": {
"int": "Не используется",
"val": "Значение при старте"

View File

@@ -57,6 +57,7 @@
"specialThanks": "",
"moduleName": "Variable",
"moduleVersion": "1.0",
"title": "Переменные",
"moduleDesc": "Специальный системный модуль для использования переменных в процессе автоматизации как элементов конфигурации.",
"propInfo": {
"int": "Не используется",