From d5826b70389207a23b63ba2444b7d000bfc8921a Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Wed, 16 Dec 2020 19:30:39 +0100 Subject: [PATCH 1/7] 1mb --- include/Consts.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/Consts.h b/include/Consts.h index 0bce4c82..77f5a752 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -2,7 +2,7 @@ //===========Firmware============================================================================================================================================= #define FIRMWARE_VERSION 272 -//#define FLASH_SIZE_1MB true +#define FLASH_SIZE_1MB true #ifdef ESP8266 #ifdef FLASH_SIZE_1MB #define FIRMWARE_NAME "esp8266-1mb" @@ -40,7 +40,9 @@ #define SensorDhtEnabled #define PwmOutEnable //=========Features================================================================================================================================= -//#define telegramEnable +#ifndef FLASH_SIZE_1MB +#define telegramEnable +#endif #define uartEnable From 245475ae99b60e7430c4967cb0b8681c688af583 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 17 Dec 2020 01:29:30 +0100 Subject: [PATCH 2/7] full change of constuction --- data/items/items.txt | 29 ++++++++++ data/presets/presets.c.txt | 46 +++++++++++++++ data/presets/presets.s.txt | 84 +++++++++++++++++++++++++++ data/set.device.json | 72 +++++++++++------------ include/Consts.h | 22 ++++--- include/ItemsList.h | 2 + src/ItemsList.cpp | 115 ++++++++++++++++++++++++------------- src/Web.cpp | 4 +- 8 files changed, 283 insertions(+), 91 deletions(-) create mode 100644 data/items/items.txt create mode 100644 data/presets/presets.c.txt create mode 100644 data/presets/presets.s.txt diff --git a/data/items/items.txt b/data/items/items.txt new file mode 100644 index 00000000..032966d6 --- /dev/null +++ b/data/items/items.txt @@ -0,0 +1,29 @@ +1;0;button-out;id;toggle;Кнопки;Освещение;order;pin +2;0;button-out;id;toggle;Кнопки;Освещение;order;pin;inv[1] +3;0;button-out;id;toggle;Кнопки;Освещение;order +4;0;button-in;id;toggle;Кнопки;Освещение;order;pin;db[20] +5;0;pwm-out;id;range;Ползунки;Яркость;order;pin +6;0;inoutput;id;inputDigit;Ввод;Введите#цифру;order +7;0;inoutput;id;inputTime;Ввод;Введите#время;order +8;0;inoutput;id;anydata;Вывод;Сигнализация;order +9;0;analog-adc;id;fillgauge;Сенсоры;Аналоговый;order;gol;map[0,1024,0,100];c[1] +10;0;dallas-temp;id;anydataTemp;Сенсоры;Температура;order;sal;index[0];int[10] +11;0;ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;cin;map[0,500,0,100];c[1];int[10] +12;0;dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht11];c[1] +13;0;dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht11];c[1] +14;0;dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht22];c[1] +15;0;dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht22];c[1] +16;0;bme280-temp;id;anydataTemp;Сенсоры;Температура;order;addr[0x76];c[1] +17;0;bme280-hum;id;anydataHum;Сенсоры;Влажность;order;addr[0x76];c[1] +18;0;bme280-press;id;anydataPress;Сенсоры;Давление;order;addr[0x76];c[1] +19;0;bmp280-press;id;anydataPress;Сенсоры;Давление;order;addr[0x76];c[1] +20;0;bmp280-temp;id;anydataTemp;Сенсоры;Температура;order;addr[0x76];c[1] +21;0;impuls-out;id;na;na;na;order;pin +22;0;count-down;id;anydata;Таймер;Обратный#отчет;order +23;0;modbus;id;anydata;Modbus;Регистр;order;addr[1];reg[0];c[1] +24;0;button-out;id;toggle;Кнопки;Освещение;order;type[UART] +25;0;inoutput;id;anydata;Вывод;Вывод#uart;order +26;0;logging;id;chart;Графики;История;order;val[any];int[60];cnt[100] +27;0;uptime;id;anydataTime;Системные;%name%#uptime;order + + diff --git a/data/presets/presets.c.txt b/data/presets/presets.c.txt new file mode 100644 index 00000000..5db609f9 --- /dev/null +++ b/data/presets/presets.c.txt @@ -0,0 +1,46 @@ +0;dallas-temp;t1;anydataTemp;Термостат1;Температура;1;pin[2];index[0];int[10] +0;logging;log1;chart;Термостат1;История;2;val[t1];int[60];cnt[100] +0;inoutput;tUp1;inputDigit;Термостат1;Верхний#порог;3 +0;inoutput;tLow1;inputDigit;Термостат1;Нижний#порог;4 +0;button-out;btn1;toggle;Термостат1;Нагрев;5;pin[12]* +0;dallas-temp;t2;anydataTemp;Термостат2;Температура;1;pin[2];index[0];int[60] +0;logging;log2;chart;Термостат2;История;2;val[t2];int[10];cnt[100] +0;inoutput;threshold;inputDigitTemp;Термостат2;Заданная#температура;3 +0;button-out;heater2;toggle;Термостат2;Нагреватель;7;pin[12] +0;inoutput;time21;inputTimeClock;Расписание2;Утренний#период;8 +0;inoutput;threshold1;inputDigitTemp;Расписание2;Температура;9 +0;inoutput;time22;inputTimeClock;Расписание2;Дневной#период;10 +0;inoutput;threshold2;inputDigitTemp;Расписание2;Температура;11 +0;inoutput;time23;inputTimeClock;Расписание2;Вечерний#период;12 +0;inoutput;threshold3;inputDigitTemp;Расписание2;Температура;13 +0;inoutput;time24;inputTimeClock;Расписание2;Ночной#период;14 +0;inoutput;threshold4;inputDigitTemp;Расписание2;Температура;15* +0;dht-hum;h3;anydataHum;Теплица3;Влажность;1;pin[2];type[dht11];c[1] +0;logging;log3;chart;Теплица3;История;2;val[hum];int[60];cnt[100] +0;inoutput;hUp3;inputDigit;Теплица3;Верхний#порог;3 +0;inoutput;hLow3;inputDigit;Теплица3;Нижний#порог;4 +0;button-out;hUp3;toggle;Теплица3;Полив;5;pin[12]* +0;button-out;btn41;toggle;Реле4;Освещение;1;pin[12] +0;button-out;btn42;toggle;Реле4;Освещение;2;pin[13] +0;inoutput;time41;inputTime;Реле4;Введите#время#включения;3 +0;inoutput;time42;inputTime;Реле4;Введите#время#выключения;4* +0;button-out;btn51;toggle;Свет5;Выключить#все;1 +0;button-out;btn52;toggle;Свет5;Гостинная;2;pin[12] +0;button-out;btn53;toggle;Свет5;Спальня;3;pin[13] +0;button-out;btn54;toggle;Свет5;Прихожая;4;pin[14] +0;pwm-out;pwm51;range;Свет5;Яркость;5;pin[15] +0;pwm-out;pwm52;range;Свет5;Яркость;6;pin[16] +0;inoutput;txt5;anydata;Свет5;Статус;7* +0;button-out;button;toggle;Таймер;Освещение;1;pin[12] +0;count-down;count;anydata;Таймер;Обратный#отчет;2 +0;inoutput;input;inputDigit;Таймер;Введите#цифру;3* +0;inoutput;text;anydataAlarm;Сигнализация;Движение:;1 +0;inoutput;time;anydataTime;Сигнализация;Время:;2 +0;button-in;sensor;na;na;na;3;pin[0];db[20] +0;button-out;reset;toggle;Сигнализация;Сбросить;4* +0;button-in;sensor;na;na;na;1;pin[0];db[20] +0;button-out;light;toggle;Освещение;Освещение;2;pin[13] +0;count-down;count;anydata;Освещение;Обратный#отчет;3 +0;inoutput;period;inputDigit;Освещение;Период#включения;4* +0;button-out;light;toggle;Кнопки;Освещение;1;pin[13] +0;button-in;switch;na;na;na;2;pin[0];db[20]* \ No newline at end of file diff --git a/data/presets/presets.s.txt b/data/presets/presets.s.txt new file mode 100644 index 00000000..0e36c7c1 --- /dev/null +++ b/data/presets/presets.s.txt @@ -0,0 +1,84 @@ +t1 > tUp1 +btn1 0 +telegram нагрев#выключен 1 +end +t1 < tLow1 +btn1 1 +telegram нагрев#включен 1 +end* +t2 > threshold+-2 +heater2 0 +end +t2 < threshold+-2 +heater2 1 +end +timenow = time21 +threshold threshold1 +end +timenow = time22 +threshold threshold2 +end +timenow = time23 +threshold threshold3 +end +timenow = time24 +threshold threshold4 +end* +h3 > hUp3 +hUp3 0 +telegram полив#выключен 1 +end +h3 < hLow3 +hUp3 1 +telegram полив#включен 1 +end* +timenow = time41 +btn41 1 +btn42 0 +end +timenow = time42 +btn41 0 +btn42 1 +end* +btn51 = 1 +btn52 1 +btn53 1 +btn54 1 +pwm51 200 +pwm52 800 +txt5 включено +end +btn51 = 0 +btn52 0 +btn53 0 +btn54 0 +pwm51 800 +pwm52 200 +txt5 выключено +end* +button = 1 +count input +end +count = 0 +button 0 +end* +sensor = 1 +text обнаружено +time %date% +telegram text обнаружено#движение 1 +end +reset = 1 +text не#обнаружено +time %date% +reset 0 +end* +sensor = 1 +light 1 +count period +end +count = 0 +light 0 +end* +switch = 1 +light change +end* \ No newline at end of file diff --git a/data/set.device.json b/data/set.device.json index eec1e537..bd7affaa 100644 --- a/data/set.device.json +++ b/data/set.device.json @@ -70,33 +70,33 @@ "style": "display:inline", "title": { "#": "Выберите элемент из списка", - "/set?addItem=button-out.pin": "1.Кнопка управляющая пином", - "/set?addItem=button-out.inv": "2.Кнопка управляющая пином (с инверсией)", - "/set?addItem=button-out.npin": "3.Кнопка виртуальная (не привязанная к пину, для использования в сценариях)", - "/set?addItem=button-in": "4.Кнопка физическая, чтение состояния пина (подключается провдами к устройству)", - "/set?addItem=pwm-out": "3.Широтно импульсная модуляция pwm", - "/set?addItem=input-digit": "5.Окно ввода цифровых значений", - "/set?addItem=input-time": "6.Окно ввода времени", - "/set?addItem=output-text": "7.Окно вывода любого текста, предупреждения, цифры", - "/set?addItem=analog-adc": "8.Датчик аналоговый, чтение аналогового входа", - "/set?addItem=dallas-temp": "9.Датчик температуры ds18b20", - "/set?addItem=ultrasonic-cm": "10.Датчик расстояния ультрозвуковой JSN-SR04T, HC-SR04, HY-SRF05", - "/set?addItem=dht11-temp": "11.Датчик температуры DHT11", - "/set?addItem=dht11-hum": "12.Датчик влажности DHT11", - "/set?addItem=dht22-temp": "13.Датчик температуры DHT22, DHT33, DHT44, AM2302, RHT03", - "/set?addItem=dht22-hum": "14.Датчик влажности DHT22, DHT33, DHT44, AM2302, RHT03", - "/set?addItem=bme280-temp": "15.Датчик температуры bme280", - "/set?addItem=bme280-hum": "16.Датчик влажности bme280", - "/set?addItem=bme280-press": "17.Датчик давления bme280", - "/set?addItem=bmp280-temp": "18.Датчик температуры bmp280", - "/set?addItem=bmp280-press": "19.Датчик давления bmp280", - "/set?addItem=impuls-out": "20.Создать импульсы через заданный промежуток времени (управление шд)", - "/set?addItem=count-down": "21.Таймер обратного отчета", - "/set?addItem=modbus": "22.Прочитать регистр modbus устройства", - "/set?addItem=uart-button": "23.UART кнопка (шлет свое состояние в UART)", - "/set?addItem=uart-widget": "24.UART виджет (позволяет вывести полученные данные в любой виджет)", - "/set?addItem=logging": "a.Логгирование и вывод в график любой величины", - "/set?addItem=uptime": "b.Отобразить время работы устройства" + "/set?addItem=1-btn": "1.Кнопка управляющая пином", + "/set?addItem=2-btn": "2.Кнопка управляющая пином (с инверсией)", + "/set?addItem=3-btn": "3.Кнопка виртуальная (не привязанная к пину, для использования в сценариях)", + "/set?addItem=4-btn": "4.Кнопка физическая, чтение состояния пина (подключается провдами к устройству)", + "/set?addItem=5-pwm": "5.Широтно импульсная модуляция pwm", + "/set?addItem=6-dgt": "6.Окно ввода цифровых значений", + "/set?addItem=7-tm": "7.Окно ввода времени", + "/set?addItem=8-txt": "8.Окно вывода любого текста, предупреждения, цифры", + "/set?addItem=9-adc": "9.Датчик аналоговый, чтение аналогового входа", + "/set?addItem=10-tmp": "10.Датчик температуры ds18b20", + "/set?addItem=11-rng": "11.Датчик расстояния ультрозвуковой JSN-SR04T, HC-SR04, HY-SRF05", + "/set?addItem=12-tmp": "12.Датчик температуры DHT11", + "/set?addItem=13-hmd": "13.Датчик влажности DHT11", + "/set?addItem=14-tmp": "14.Датчик температуры DHT22, DHT33, DHT44, AM2302, RHT03", + "/set?addItem=15-hmd": "15.Датчик влажности DHT22, DHT33, DHT44, AM2302, RHT03", + "/set?addItem=16-tmp": "16.Датчик температуры bme280", + "/set?addItem=17-hmd": "17.Датчик влажности bme280", + "/set?addItem=18-ps": "18.Датчик давления bme280", + "/set?addItem=19-tmp": "19.Датчик температуры bmp280", + "/set?addItem=20-ps": "20.Датчик давления bmp280", + "/set?addItem=21-ips": "21.Создать импульсы через заданный промежуток времени (управление шд)", + "/set?addItem=22-cnt": "22.Таймер обратного отчета", + "/set?addItem=23-mb": "23.Прочитать регистр modbus устройства", + "/set?addItem=24-btn": "24.UART кнопка (шлет свое состояние в UART)", + "/set?addItem=25-txt": "25.UART виджет (позволяет вывести полученные данные в любой виджет)", + "/set?addItem=26-log": "26.Логгирование и вывод в график любой величины", + "/set?addItem=27-ut": "27.Отобразить время работы устройства" } }, { @@ -106,15 +106,15 @@ "style": "display:inline", "title": { "#": "Выберите пресет из списка", - "/set?addPreset=1.c": "1.Термостат на основе ds18b20 с оповещением в телеграм", - "/set?addPreset=2.c": "2.Гистерезис термостат на основе ds18b20 с суточным расписанием", - "/set?addPreset=3.c": "3.Контроль влажности на основе DHT с оповещением в телеграм", - "/set?addPreset=4.c": "4.Включение выключение реле в заданное время", - "/set?addPreset=5.c": "5.Выключить все (пример работы сценариев)", - "/set?addPreset=6.c": "6.Включить кнопку на определенное время (пример работы таймера обратного отчета)", - "/set?addPreset=7.c": "7.Охранный датчик движения", - "/set?addPreset=8.c": "8.Датчик движения включающий свет с настраиваемой задержкой", - "/set?addPreset=9.c": "9.Управление светом с помощью выключателя и приложения" + "/set?addPreset=1": "1.Термостат на основе ds18b20 с оповещением в телеграм", + "/set?addPreset=2": "2.Гистерезис термостат на основе ds18b20 с суточным расписанием", + "/set?addPreset=3": "3.Контроль влажности на основе DHT с оповещением в телеграм", + "/set?addPreset=4": "4.Включение выключение реле в заданное время", + "/set?addPreset=5": "5.Выключить все (пример работы сценариев)", + "/set?addPreset=6": "6.Включить кнопку на определенное время (пример работы таймера обратного отчета)", + "/set?addPreset=7": "7.Охранный датчик движения", + "/set?addPreset=8": "8.Датчик движения включающий свет с настраиваемой задержкой", + "/set?addPreset=9": "9.Управление светом с помощью выключателя и приложения" } }, { diff --git a/include/Consts.h b/include/Consts.h index 77f5a752..e53537d2 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -3,18 +3,6 @@ //===========Firmware============================================================================================================================================= #define FIRMWARE_VERSION 272 #define FLASH_SIZE_1MB true -#ifdef ESP8266 -#ifdef FLASH_SIZE_1MB -#define FIRMWARE_NAME "esp8266-1mb" -#else -#define FIRMWARE_NAME "esp8266" -#endif - -#endif -#ifdef ESP32 -#define FIRMWARE_NAME "esp32" -#endif - //===========FileSystem============================================================================================================================================== #define littlefs_on //================================================================================================================================================================== @@ -46,7 +34,17 @@ #define uartEnable +#ifdef ESP8266 +#ifdef FLASH_SIZE_1MB +#define FIRMWARE_NAME "esp8266-1mb" +#else +#define FIRMWARE_NAME "esp8266" +#endif +#endif +#ifdef ESP32 +#define FIRMWARE_NAME "esp32" +#endif //================================================================================================================================================================ enum TimerTask_t { WIFI_SCAN, diff --git a/include/ItemsList.h b/include/ItemsList.h index c0b716ec..54089580 100644 --- a/include/ItemsList.h +++ b/include/ItemsList.h @@ -4,8 +4,10 @@ #include "Global.h" extern void itemsListInit(); +extern void addItem2(String param); extern void addItem(String name); extern void addPreset(String name); +extern void addPreset2(int num); extern void delChoosingItems(); extern void delAllItems(); extern uint8_t getNewElementNumber(String file); diff --git a/src/ItemsList.cpp b/src/ItemsList.cpp index 13937acf..df27a11c 100644 --- a/src/ItemsList.cpp +++ b/src/ItemsList.cpp @@ -18,63 +18,96 @@ void itemsListInit() { delChoosingItems(); }, nullptr); - + SerialPrint("I", F("Items"), F("Items Init")); } -void addItem(String name) { +void addItem2(String param) { + int num = selectToMarker(param, "-").toInt(); + File configFile = LittleFS.open("/items/items.txt", "r"); + if (!configFile) { + return; + } + configFile.seek(0, SeekSet); + String seachingLine; - String item = readFile("items/" + name + ".txt", 1024); - - name = selectToMarker(name, "-"); + while (configFile.position() != configFile.size()) { + String item = configFile.readStringUntil('\n'); + int tmpNum = selectToMarker(item, ";").toInt(); + if (tmpNum == num) { + seachingLine = item; + break; + } + } + configFile.close(); + String name = deleteBeforeDelimiter(param, "-"); randomSeed(micros()); - unsigned int num = random(0, 1000); + unsigned int rnd = random(0, 1000); + seachingLine.replace("id", name + String(rnd)); + seachingLine.replace("order", String(getNewElementNumber("order.txt"))); - item.replace("id", name + String(num)); - item.replace("order", String(getNewElementNumber("order.txt"))); - - if (item.indexOf("pin") != -1) { //all cases (random pins from available) - item.replace("pin", "pin[" + String(getFreePinAll()) + "]"); - } - else if (item.indexOf("gol") != -1) { //analog - item.replace("gol", "pin[" + String(getFreePinAnalog()) + "]"); - } - else if (item.indexOf("cin") != -1) { //ultrasonic - item.replace("cin", "pin[" + String(getFreePinAll()) + "," + String(getFreePinAll()) + "]"); - } - else if (item.indexOf("sal") != -1) { //dallas - item.replace("sal", "pin[2]"); - } - else if (item.indexOf("thd") != -1) { //dht11/22 - item.replace("thd", "pin[2]"); + if (seachingLine.indexOf("pin") != -1) { + seachingLine.replace("pin", "pin[" + String(getFreePinAll()) + "]"); } - item.replace("\r\n", ""); - item.replace("\r", ""); - item.replace("\n", ""); - - addFile(DEVICE_CONFIG_FILE, "\n" + item); - Serial.println(item); + seachingLine = deleteBeforeDelimiter(seachingLine, ";"); + seachingLine.replace("\r\n", ""); + seachingLine.replace("\r", ""); + seachingLine.replace("\n", ""); + addFile(DEVICE_CONFIG_FILE, "\n" + seachingLine); + Serial.println(seachingLine); } -void addPreset(String name) { - String preset = readFile("presets/" + name + ".txt", 4048); - addFile(DEVICE_CONFIG_FILE, "\n" + preset); - Serial.println(preset); - name.replace(".c", ".s"); +void addPreset2(int num) { + File configFile = LittleFS.open("/presets/presets.c.txt", "r"); + if (!configFile) { + return; + } + configFile.seek(0, SeekSet); + String config; + int i1 = 0; + while (configFile.position() != configFile.size()) { + i1++; + String item = configFile.readStringUntil('*'); + if (i1 == num) { + if (i1 == 1) { + config = "\n" + item; + } + else { + config = item; + } + break; + } + } + configFile.close(); + addFile(DEVICE_CONFIG_FILE, config); - String scenario = readFile("presets/" + name + ".txt", 4048); - - removeFile(DEVICE_SCENARIO_FILE); - - addFile(DEVICE_SCENARIO_FILE, scenario); - loadScenario(); - Serial.println(scenario); + File scenFile = LittleFS.open("/presets/presets.s.txt", "r"); + if (!scenFile) { + return; + } + scenFile.seek(0, SeekSet); + String scen; + int i2 = 0; + while (scenFile.position() != scenFile.size()) { + i2++; + String item = scenFile.readStringUntil('*'); + if (i2 == num) { + scen = item; + break; + } + } + scenFile.close(); + if (readFile(String(DEVICE_SCENARIO_FILE), 2048) == "//") { + removeFile(DEVICE_SCENARIO_FILE); + } + addFile(DEVICE_SCENARIO_FILE, scen); } + void delAllItems() { removeFile(DEVICE_CONFIG_FILE); addFile(DEVICE_CONFIG_FILE, String(firstLine)); diff --git a/src/Web.cpp b/src/Web.cpp index c673a79a..31a93c3d 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -20,12 +20,12 @@ void web_init() { server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) { //==============================set.device.json==================================================================================================== if (request->hasArg("addItem")) { - addItem(request->getParam("addItem")->value()); + addItem2(request->getParam("addItem")->value()); request->redirect("/?set.device"); } if (request->hasArg("addPreset")) { - addPreset(request->getParam("addPreset")->value()); + addPreset2(request->getParam("addPreset")->value().toInt()); jsonWriteStr(configSetupJson, "warning1", F("

Требуется перезагрузка

")); request->redirect("/?set.device"); } From 2e240def888378ad7dafcef8008639ed8b7dffb6 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 17 Dec 2020 02:01:12 +0100 Subject: [PATCH 3/7] working version --- include/Consts.h | 4 +--- platformio.ini | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/include/Consts.h b/include/Consts.h index e53537d2..dd97d73a 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -2,9 +2,7 @@ //===========Firmware============================================================================================================================================= #define FIRMWARE_VERSION 272 -#define FLASH_SIZE_1MB true -//===========FileSystem============================================================================================================================================== -#define littlefs_on +//#define FLASH_SIZE_1MB true //================================================================================================================================================================== #define NUM_BUTTONS 6 #define LED_PIN 2 diff --git a/platformio.ini b/platformio.ini index bd0eef56..f5848391 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,6 +1,6 @@ [platformio] -default_envs = esp8266_01_1m +default_envs = esp8266 ;============================================================================================================================================= [common_env_data] lib_deps_external = From ce383fe7fe71d236cdbc95a657ba956622829033 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 17 Dec 2020 22:48:20 +0100 Subject: [PATCH 4/7] global change 1 mb working version --- data/dev_conf.txt | 0 data/edit.htm.gz | Bin 5455 -> 0 bytes data/items/items.txt | 8 +- data/presets/presets.c.txt | 46 -------- data/presets/presets.s.txt | 84 ------------- data/set.device.json | 8 +- data/set.utilities.json | 10 ++ doc/calculator.xlsx | Bin 0 -> 9890 bytes doc/old files/items/analog-adc.txt | 1 + doc/old files/items/bme280-hum.txt | 1 + doc/old files/items/bme280-press.txt | 1 + doc/old files/items/bme280-temp.txt | 1 + doc/old files/items/bmp280-press.txt | 1 + doc/old files/items/bmp280-temp.txt | 1 + doc/old files/items/button-in.txt | 1 + doc/old files/items/button-out.inv.txt | 1 + doc/old files/items/button-out.npin.txt | 1 + doc/old files/items/button-out.pin.txt | 1 + doc/old files/items/count-down.txt | 1 + doc/old files/items/dallas-temp.txt | 1 + doc/old files/items/dht11-hum.txt | 1 + doc/old files/items/dht11-temp.txt | 1 + doc/old files/items/dht22-hum.txt | 1 + doc/old files/items/dht22-temp.txt | 1 + doc/old files/items/impuls-out.txt | 1 + doc/old files/items/input-digit.txt | 1 + doc/old files/items/input-time.txt | 1 + doc/old files/items/logging.txt | 1 + doc/old files/items/modbus.txt | 1 + doc/old files/items/output-text.txt | 1 + doc/old files/items/pwm-out.txt | 1 + doc/old files/items/uart-button.txt | 1 + doc/old files/items/uart-widget.txt | 1 + doc/old files/items/ultrasonic-cm.txt | 1 + doc/old files/items/uptime.txt | 1 + doc/old files/presets/1.c.txt | 5 + doc/old files/presets/1.s.txt | 8 ++ doc/old files/presets/2.c.txt | 12 ++ doc/old files/presets/2.s.txt | 18 +++ doc/old files/presets/3.c.txt | 5 + doc/old files/presets/3.s.txt | 8 ++ doc/old files/presets/4.c.txt | 4 + doc/old files/presets/4.s.txt | 8 ++ doc/old files/presets/5.c.txt | 7 ++ doc/old files/presets/5.s.txt | 16 +++ doc/old files/presets/6.c.txt | 3 + doc/old files/presets/6.s.txt | 6 + doc/old files/presets/7.c.txt | 4 + doc/old files/presets/7.s.txt | 10 ++ doc/old files/presets/8.c.txt | 4 + doc/old files/presets/8.s.txt | 7 ++ doc/old files/presets/9.c.txt | 2 + doc/old files/presets/9.s.txt | 3 + include/Consts.h | 4 +- platformio.ini | 2 +- src/BufferExecute.cpp | 16 ++- src/MqttClient.cpp | 13 +- src/SoftUART.cpp | 7 +- src/Telegram.cpp | 3 +- src/Web.cpp | 151 ++++++++++-------------- src/items/vButtonOut.cpp | 11 -- 61 files changed, 265 insertions(+), 255 deletions(-) delete mode 100644 data/dev_conf.txt delete mode 100644 data/edit.htm.gz delete mode 100644 data/presets/presets.c.txt delete mode 100644 data/presets/presets.s.txt create mode 100644 doc/calculator.xlsx create mode 100644 doc/old files/items/analog-adc.txt create mode 100644 doc/old files/items/bme280-hum.txt create mode 100644 doc/old files/items/bme280-press.txt create mode 100644 doc/old files/items/bme280-temp.txt create mode 100644 doc/old files/items/bmp280-press.txt create mode 100644 doc/old files/items/bmp280-temp.txt create mode 100644 doc/old files/items/button-in.txt create mode 100644 doc/old files/items/button-out.inv.txt create mode 100644 doc/old files/items/button-out.npin.txt create mode 100644 doc/old files/items/button-out.pin.txt create mode 100644 doc/old files/items/count-down.txt create mode 100644 doc/old files/items/dallas-temp.txt create mode 100644 doc/old files/items/dht11-hum.txt create mode 100644 doc/old files/items/dht11-temp.txt create mode 100644 doc/old files/items/dht22-hum.txt create mode 100644 doc/old files/items/dht22-temp.txt create mode 100644 doc/old files/items/impuls-out.txt create mode 100644 doc/old files/items/input-digit.txt create mode 100644 doc/old files/items/input-time.txt create mode 100644 doc/old files/items/logging.txt create mode 100644 doc/old files/items/modbus.txt create mode 100644 doc/old files/items/output-text.txt create mode 100644 doc/old files/items/pwm-out.txt create mode 100644 doc/old files/items/uart-button.txt create mode 100644 doc/old files/items/uart-widget.txt create mode 100644 doc/old files/items/ultrasonic-cm.txt create mode 100644 doc/old files/items/uptime.txt create mode 100644 doc/old files/presets/1.c.txt create mode 100644 doc/old files/presets/1.s.txt create mode 100644 doc/old files/presets/2.c.txt create mode 100644 doc/old files/presets/2.s.txt create mode 100644 doc/old files/presets/3.c.txt create mode 100644 doc/old files/presets/3.s.txt create mode 100644 doc/old files/presets/4.c.txt create mode 100644 doc/old files/presets/4.s.txt create mode 100644 doc/old files/presets/5.c.txt create mode 100644 doc/old files/presets/5.s.txt create mode 100644 doc/old files/presets/6.c.txt create mode 100644 doc/old files/presets/6.s.txt create mode 100644 doc/old files/presets/7.c.txt create mode 100644 doc/old files/presets/7.s.txt create mode 100644 doc/old files/presets/8.c.txt create mode 100644 doc/old files/presets/8.s.txt create mode 100644 doc/old files/presets/9.c.txt create mode 100644 doc/old files/presets/9.s.txt diff --git a/data/dev_conf.txt b/data/dev_conf.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/data/edit.htm.gz b/data/edit.htm.gz deleted file mode 100644 index 5786121f98a84b5695314c9ad8e5537f57650ba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5455 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 z zKZMW*v5I7K%3uofC0p2ISgo42jlF~3$uR(~U2>dbSbtuNKu0(fqo{((gWa~rrezd3 ziDHs5TbJf+>9yd>>QtV^C_`welB%0bt-y3G9GY*c+SVo%l`N2^QB8x?uyq%{7^FPd z2#T6+f~y7N>=w|fBqvg$B!Fz=9r_*HXh9)7_P|z8?O*;VnC6HS2Y75&ig%* z6jX@C!9_@+l%wN>_^Hw2*g7N@H;D-+j<x(%Y>-nb4SB?gB;r~OI0Te!MyA%K(O1wD5jjOs01KKi zGfYKz$7XYwCwF9`@8p1z(mxH>DPTM&&8igMG=5bJpMFz6uNRANzN=817Y_bY?Q;r` z6jMa?$KtOlMSK8DEW0w~Z=ea$T5HlK<4s7(e4jts(RzeOJhKV~q4}8s@D4h$>ax(tQ7vCr_~Z_;79%qGrZDVt0Ga%qHK| zi*Ugsl4}O9Ez?E%HCR;fbl}Z~*_*JIPV@=B&{__+bJqBfS<0%6A?rTEI-Rq`hfD|= z_G6Ma66h-}jPVZ1TQ8C!lNrd4IT_KjYg{Sh-|iY$2z;&m@Vh>s1$$sFs_o1QMN+IF z%5YbiXmfsCi0oZ#Be>@qn5-Z?8lz1EXFJ+XVdpIrRC&F&RO_HWi%h0YussD6DWNRY zle0FV=}oPqs;z`Q0ifhNHOh&jTV?{Cz$XYW;PhP7^bg574Penr6LCJ7}cvnFB(nNU*rU!xIr zDKM9we36Lm&X+7r>3Tjk4`r@`YA*y4D^3CA&6 zrEuGvLW*?4#wbRb`ASYamBetNVMrW1GwikDWH0O~Jdk&USV91iCB>7-$8d-xeId#U zJt`W`j9>!8c4_lr2gjpMYmcsOhkHh%nrv~w0)?xM=tf$yUJf#)u-oNbzI*8q2!&l{ zjbw|8Y<7SddhzHL;M9(@ILSimN@&fdv%>9FClidpgA)o1Y?iU-<5AR$&2bZ8s@w3j z1Mu*@zAoDwlk=1LnXhl}^8J=@uRJ%;$sC^%G1BVTEg7-t9kFHVPG$2T_9IqT2uAK2 z2|-=DMB>j(dMZn-WQ&ik!8lTM`&MaWRRr@Oy8@mE%dN1oYp(t5a^26VnCDY+?CcsC zo5SoHIG-pgl4FGqr(6e+9$9>IZdqS*pY%WNY4!4#Sx9-Qg;Bk zCjf_W_POn1SKfp~Il=v1_v}=KB1ntkv_bqwbPDuux-EGceA`KE&wQaFw?VPstW1Vp z(u!Qks+j($J9uE(o;{r`7Vb&^mFQE=B|wKl_*%Hk&g4Ek2Dp8Anr5H%dcIv!iey2A zKAEjN!#2vZ`hObi(=ws~Xy|4;CkJ>GJUn*(D0mXHAB6xZMg-3ij-}w&ehgYXdmiCD zDkt%CYuvH>_>9Q0ADQ|<8Y5Z*ef*$r4aWz?Nsg|xZPD={J=wrZVa(AdU{t2>EPTph z$&(R?1LO{-;&S=e7?l{%;^-X91jc!ec;suTc=7WvWRp;g0R%*!K zCyu-Dxh(+0<9jN(iT3Zd|H1PqPtFnUbA^f=6@)?(5Q!3=DL%9F02HBRIfKF{Qt%m~ z2j$VA|KVKYDiQqY=L7C@Lf@l%Bewaw%C=;D6LW>V$>nJPBLv57*}=NPswa=qc#4v7 zyheuw29KU!plcT^sICCx6jpQ|lP{2q24Z-SF>p$&94Cr~>NmSlOeu!4ga7FQK9!p^ z^TaWrl`tkN6S#^-z91|#(gR<^VTs#e!1PLj{*HE6mo8JYQ^|+yF}XzunI})*$6a`| zss~Rn7U)vX0|*4N3+oYudX~rsutsXZU%(#WItIVTsmicjSadq~;GzE$y8T=rlP?)i zXNQ_-uZ5?bVx39`WdkLSKb1u70Ky2YCN-dYXQmBs?ZC6j-L(>IdFyb?QJ@6f$IwW6 z6hBfOKXeg(lJ2P#X)82j`hbGMos}@@1Rrt`{LCgVDWPqTOzVkCfJo!4tb~t}5P4?tjEb`}*X9pQQan#)l zpqSVlZ0AFdvFBOTF{~+pDL|uOF}w2V%@3c~VV<@NU&URx_~G-9#mdMm#UJmWk9U?3 z?G@ln$g{_sfIKbSW+ozMf{B@F6#Gk*0zHk#FNwnVC5<-nK{7&198Ob6krKMV2s-OQ z3uVf$l+?2p+j0&a$t5S!tSXu;z-u&qCo?;hOdoSbMNO39 z@wa*{eKI`C_JN6a}@wN)M3Eyq7QKfg`@w%<*_i%&`Wia5wFTsMN3kfsX)wW_B z5Mz tUp1 -btn1 0 -telegram нагрев#выключен 1 -end -t1 < tLow1 -btn1 1 -telegram нагрев#включен 1 -end* -t2 > threshold+-2 -heater2 0 -end -t2 < threshold+-2 -heater2 1 -end -timenow = time21 -threshold threshold1 -end -timenow = time22 -threshold threshold2 -end -timenow = time23 -threshold threshold3 -end -timenow = time24 -threshold threshold4 -end* -h3 > hUp3 -hUp3 0 -telegram полив#выключен 1 -end -h3 < hLow3 -hUp3 1 -telegram полив#включен 1 -end* -timenow = time41 -btn41 1 -btn42 0 -end -timenow = time42 -btn41 0 -btn42 1 -end* -btn51 = 1 -btn52 1 -btn53 1 -btn54 1 -pwm51 200 -pwm52 800 -txt5 включено -end -btn51 = 0 -btn52 0 -btn53 0 -btn54 0 -pwm51 800 -pwm52 200 -txt5 выключено -end* -button = 1 -count input -end -count = 0 -button 0 -end* -sensor = 1 -text обнаружено -time %date% -telegram text обнаружено#движение 1 -end -reset = 1 -text не#обнаружено -time %date% -reset 0 -end* -sensor = 1 -light 1 -count period -end -count = 0 -light 0 -end* -switch = 1 -light change -end* \ No newline at end of file diff --git a/data/set.device.json b/data/set.device.json index bd7affaa..cf6a6369 100644 --- a/data/set.device.json +++ b/data/set.device.json @@ -92,11 +92,9 @@ "/set?addItem=20-ps": "20.Датчик давления bmp280", "/set?addItem=21-ips": "21.Создать импульсы через заданный промежуток времени (управление шд)", "/set?addItem=22-cnt": "22.Таймер обратного отчета", - "/set?addItem=23-mb": "23.Прочитать регистр modbus устройства", - "/set?addItem=24-btn": "24.UART кнопка (шлет свое состояние в UART)", - "/set?addItem=25-txt": "25.UART виджет (позволяет вывести полученные данные в любой виджет)", - "/set?addItem=26-log": "26.Логгирование и вывод в график любой величины", - "/set?addItem=27-ut": "27.Отобразить время работы устройства" + "/set?addItem=23-txt": "23.Виджет для отображения информации полученной из uart, get-запроса, или по udp", + "/set?addItem=24-log": "24.Логгирование и вывод в график любой величины", + "/set?addItem=25-ut": "25.Отобразить время работы устройства" } }, { diff --git a/data/set.utilities.json b/data/set.utilities.json index dee60f7c..16f10037 100644 --- a/data/set.utilities.json +++ b/data/set.utilities.json @@ -52,6 +52,16 @@ { "type": "hr" }, + { + "type": "checkbox", + "name": "uartEvents", + "title": "Включить отправку всех событий в UART", + "action": "/set?uartEvents=[[uartEvents]]", + "state": "{{uartEvents}}" + }, + { + "type": "hr" + }, { "type": "h4", "title": "Скорость", diff --git a/doc/calculator.xlsx b/doc/calculator.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6fd98cf2035fc8bfc8a7921684392c3e8e604571 GIT binary patch literal 9890 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 literal 0 HcmV?d00001 diff --git a/doc/old files/items/analog-adc.txt b/doc/old files/items/analog-adc.txt new file mode 100644 index 00000000..8bc0e914 --- /dev/null +++ b/doc/old files/items/analog-adc.txt @@ -0,0 +1 @@ +0;analog-adc;id;fillgauge;Сенсоры;Аналоговый;order;gol;map[0,1024,0,100];c[1] \ No newline at end of file diff --git a/doc/old files/items/bme280-hum.txt b/doc/old files/items/bme280-hum.txt new file mode 100644 index 00000000..c8afd255 --- /dev/null +++ b/doc/old files/items/bme280-hum.txt @@ -0,0 +1 @@ +0;bme280-hum;id;anydataHum;Сенсоры;Влажность;order;addr[0x76];c[1] \ No newline at end of file diff --git a/doc/old files/items/bme280-press.txt b/doc/old files/items/bme280-press.txt new file mode 100644 index 00000000..f79973e2 --- /dev/null +++ b/doc/old files/items/bme280-press.txt @@ -0,0 +1 @@ +0;bme280-press;id;anydataPress;Сенсоры;Давление;order;addr[0x76];c[1] \ No newline at end of file diff --git a/doc/old files/items/bme280-temp.txt b/doc/old files/items/bme280-temp.txt new file mode 100644 index 00000000..6e5e9003 --- /dev/null +++ b/doc/old files/items/bme280-temp.txt @@ -0,0 +1 @@ +0;bme280-temp;id;anydataTemp;Сенсоры;Температура;order;addr[0x76];c[1] \ No newline at end of file diff --git a/doc/old files/items/bmp280-press.txt b/doc/old files/items/bmp280-press.txt new file mode 100644 index 00000000..44b9e8c9 --- /dev/null +++ b/doc/old files/items/bmp280-press.txt @@ -0,0 +1 @@ +0;bmp280-press;id;anydataPress;Сенсоры;Давление;order;addr[0x76];c[1] \ No newline at end of file diff --git a/doc/old files/items/bmp280-temp.txt b/doc/old files/items/bmp280-temp.txt new file mode 100644 index 00000000..c3cb42eb --- /dev/null +++ b/doc/old files/items/bmp280-temp.txt @@ -0,0 +1 @@ +0;bmp280-temp;id;anydataTemp;Сенсоры;Температура;order;addr[0x76];c[1] \ No newline at end of file diff --git a/doc/old files/items/button-in.txt b/doc/old files/items/button-in.txt new file mode 100644 index 00000000..79d79ec9 --- /dev/null +++ b/doc/old files/items/button-in.txt @@ -0,0 +1 @@ +0;button-in;id;toggle;Кнопки;Освещение;order;pin;db[20] \ No newline at end of file diff --git a/doc/old files/items/button-out.inv.txt b/doc/old files/items/button-out.inv.txt new file mode 100644 index 00000000..5499a108 --- /dev/null +++ b/doc/old files/items/button-out.inv.txt @@ -0,0 +1 @@ +0;button-out;id;toggle;Кнопки;Освещение;order;pin;inv[1] \ No newline at end of file diff --git a/doc/old files/items/button-out.npin.txt b/doc/old files/items/button-out.npin.txt new file mode 100644 index 00000000..ecffd881 --- /dev/null +++ b/doc/old files/items/button-out.npin.txt @@ -0,0 +1 @@ +0;button-out;id;toggle;Кнопки;Освещение;order \ No newline at end of file diff --git a/doc/old files/items/button-out.pin.txt b/doc/old files/items/button-out.pin.txt new file mode 100644 index 00000000..b0645025 --- /dev/null +++ b/doc/old files/items/button-out.pin.txt @@ -0,0 +1 @@ +0;button-out;id;toggle;Кнопки;Освещение;order;pin \ No newline at end of file diff --git a/doc/old files/items/count-down.txt b/doc/old files/items/count-down.txt new file mode 100644 index 00000000..3300573c --- /dev/null +++ b/doc/old files/items/count-down.txt @@ -0,0 +1 @@ +0;count-down;id;anydata;Таймер;Обратный#отчет;order \ No newline at end of file diff --git a/doc/old files/items/dallas-temp.txt b/doc/old files/items/dallas-temp.txt new file mode 100644 index 00000000..0da8bdca --- /dev/null +++ b/doc/old files/items/dallas-temp.txt @@ -0,0 +1 @@ +0;dallas-temp;id;anydataTemp;Сенсоры;Температура;order;sal;index[0];int[10] \ No newline at end of file diff --git a/doc/old files/items/dht11-hum.txt b/doc/old files/items/dht11-hum.txt new file mode 100644 index 00000000..b7d9a820 --- /dev/null +++ b/doc/old files/items/dht11-hum.txt @@ -0,0 +1 @@ +0;dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht11];c[1] \ No newline at end of file diff --git a/doc/old files/items/dht11-temp.txt b/doc/old files/items/dht11-temp.txt new file mode 100644 index 00000000..39c5e949 --- /dev/null +++ b/doc/old files/items/dht11-temp.txt @@ -0,0 +1 @@ +0;dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht11];c[1] \ No newline at end of file diff --git a/doc/old files/items/dht22-hum.txt b/doc/old files/items/dht22-hum.txt new file mode 100644 index 00000000..ab69cf97 --- /dev/null +++ b/doc/old files/items/dht22-hum.txt @@ -0,0 +1 @@ +0;dht-hum;id;anydataHum;Сенсоры;Влажность;order;thd;type[dht22];c[1] \ No newline at end of file diff --git a/doc/old files/items/dht22-temp.txt b/doc/old files/items/dht22-temp.txt new file mode 100644 index 00000000..d14a434d --- /dev/null +++ b/doc/old files/items/dht22-temp.txt @@ -0,0 +1 @@ +0;dht-temp;id;anydataTemp;Сенсоры;Температура;order;thd;type[dht22];c[1] \ No newline at end of file diff --git a/doc/old files/items/impuls-out.txt b/doc/old files/items/impuls-out.txt new file mode 100644 index 00000000..99994ae5 --- /dev/null +++ b/doc/old files/items/impuls-out.txt @@ -0,0 +1 @@ +0;impuls-out;id;na;na;na;order;pin \ No newline at end of file diff --git a/doc/old files/items/input-digit.txt b/doc/old files/items/input-digit.txt new file mode 100644 index 00000000..7df7260e --- /dev/null +++ b/doc/old files/items/input-digit.txt @@ -0,0 +1 @@ +0;inoutput;id;inputDigit;Ввод;Введите#цифру;order \ No newline at end of file diff --git a/doc/old files/items/input-time.txt b/doc/old files/items/input-time.txt new file mode 100644 index 00000000..3fc078b0 --- /dev/null +++ b/doc/old files/items/input-time.txt @@ -0,0 +1 @@ +0;inoutput;id;inputTime;Ввод;Введите#время;order \ No newline at end of file diff --git a/doc/old files/items/logging.txt b/doc/old files/items/logging.txt new file mode 100644 index 00000000..8253774f --- /dev/null +++ b/doc/old files/items/logging.txt @@ -0,0 +1 @@ +0;logging;id;chart;Графики;История;order;val[any];int[60];cnt[100] \ No newline at end of file diff --git a/doc/old files/items/modbus.txt b/doc/old files/items/modbus.txt new file mode 100644 index 00000000..a782395a --- /dev/null +++ b/doc/old files/items/modbus.txt @@ -0,0 +1 @@ +0;modbus;id;anydata;Modbus;Регистр;order;addr[1];reg[0];c[1] \ No newline at end of file diff --git a/doc/old files/items/output-text.txt b/doc/old files/items/output-text.txt new file mode 100644 index 00000000..65d45284 --- /dev/null +++ b/doc/old files/items/output-text.txt @@ -0,0 +1 @@ +0;inoutput;id;anydata;Вывод;Сигнализация;order \ No newline at end of file diff --git a/doc/old files/items/pwm-out.txt b/doc/old files/items/pwm-out.txt new file mode 100644 index 00000000..2acbb459 --- /dev/null +++ b/doc/old files/items/pwm-out.txt @@ -0,0 +1 @@ +0;pwm-out;id;range;Ползунки;Яркость;order;pin \ No newline at end of file diff --git a/doc/old files/items/uart-button.txt b/doc/old files/items/uart-button.txt new file mode 100644 index 00000000..ee2a6b22 --- /dev/null +++ b/doc/old files/items/uart-button.txt @@ -0,0 +1 @@ +0;button-out;id;toggle;Кнопки;Освещение;order;type[UART] \ No newline at end of file diff --git a/doc/old files/items/uart-widget.txt b/doc/old files/items/uart-widget.txt new file mode 100644 index 00000000..469ab016 --- /dev/null +++ b/doc/old files/items/uart-widget.txt @@ -0,0 +1 @@ +0;inoutput;id;anydata;Вывод;Вывод#uart;order \ No newline at end of file diff --git a/doc/old files/items/ultrasonic-cm.txt b/doc/old files/items/ultrasonic-cm.txt new file mode 100644 index 00000000..c5d518c3 --- /dev/null +++ b/doc/old files/items/ultrasonic-cm.txt @@ -0,0 +1 @@ +0;ultrasonic-cm;id;anydata;Сенсоры;Расстояние;order;cin;map[0,500,0,100];c[1];int[10] \ No newline at end of file diff --git a/doc/old files/items/uptime.txt b/doc/old files/items/uptime.txt new file mode 100644 index 00000000..972241b4 --- /dev/null +++ b/doc/old files/items/uptime.txt @@ -0,0 +1 @@ +0;uptime;id;anydataTime;Системные;%name%#uptime;order \ No newline at end of file diff --git a/doc/old files/presets/1.c.txt b/doc/old files/presets/1.c.txt new file mode 100644 index 00000000..abcd06dc --- /dev/null +++ b/doc/old files/presets/1.c.txt @@ -0,0 +1,5 @@ +0;dallas-temp;temp;anydataTemp;Термостат;Температура;1;pin[2];index[0];int[10] +0;logging;log;chart;Термостат;История;2;val[temp];int[60];cnt[100] +0;inoutput;inputU;inputDigit;Термостат;Верхний#порог;3 +0;inoutput;inputL;inputDigit;Термостат;Нижний#порог;4 +0;button-out;button;toggle;Термостат;Нагрев;5;pin[12] \ No newline at end of file diff --git a/doc/old files/presets/1.s.txt b/doc/old files/presets/1.s.txt new file mode 100644 index 00000000..dc4c8c07 --- /dev/null +++ b/doc/old files/presets/1.s.txt @@ -0,0 +1,8 @@ +temp > inputU +button 0 +telegram нагрев#выключен 1 +end +temp < inputL +button 1 +telegram нагрев#включен 1 +end \ No newline at end of file diff --git a/doc/old files/presets/2.c.txt b/doc/old files/presets/2.c.txt new file mode 100644 index 00000000..d91fa5c7 --- /dev/null +++ b/doc/old files/presets/2.c.txt @@ -0,0 +1,12 @@ +0;dallas-temp;temp;anydataTemp;Термостат;Температура;1;pin[2];index[0];int[60] +0;logging;log;chart;Термостат;История;2;val[temp];int[10];cnt[100] +0;inoutput;threshold;inputDigitTemp;Термостат;Заданная#температура;3 +0;button-out;heater;toggle;Термостат;Нагреватель;7;pin[12] +0;inoutput;time1;inputTimeClock;Расписание;Утренний#период;8 +0;inoutput;threshold1;inputDigitTemp;Расписание;Температура;9 +0;inoutput;time2;inputTimeClock;Расписание;Дневной#период;10 +0;inoutput;threshold2;inputDigitTemp;Расписание;Температура;11 +0;inoutput;time3;inputTimeClock;Расписание;Вечерний#период;12 +0;inoutput;threshold3;inputDigitTemp;Расписание;Температура;13 +0;inoutput;time4;inputTimeClock;Расписание;Ночной#период;14 +0;inoutput;threshold4;inputDigitTemp;Расписание;Температура;15 \ No newline at end of file diff --git a/doc/old files/presets/2.s.txt b/doc/old files/presets/2.s.txt new file mode 100644 index 00000000..5a6f36f1 --- /dev/null +++ b/doc/old files/presets/2.s.txt @@ -0,0 +1,18 @@ +temp > threshold+-2 +heater 0 +end +temp < threshold+-2 +heater 1 +end +timenow = time1 +threshold threshold1 +end +timenow = time2 +threshold threshold2 +end +timenow = time3 +threshold threshold3 +end +timenow = time4 +threshold threshold4 +end \ No newline at end of file diff --git a/doc/old files/presets/3.c.txt b/doc/old files/presets/3.c.txt new file mode 100644 index 00000000..fb2c602b --- /dev/null +++ b/doc/old files/presets/3.c.txt @@ -0,0 +1,5 @@ +0;dht-hum;hum;anydataHum;Теплица;Влажность;1;pin[2];type[dht11];c[1] +0;logging;log;chart;Теплица;История;2;val[hum];int[60];cnt[100] +0;inoutput;inputU;inputDigit;Теплица;Верхний#порог;3 +0;inoutput;inputL;inputDigit;Теплица;Нижний#порог;4 +0;button-out;button;toggle;Теплица;Полив;5;pin[12] \ No newline at end of file diff --git a/doc/old files/presets/3.s.txt b/doc/old files/presets/3.s.txt new file mode 100644 index 00000000..f69cdc54 --- /dev/null +++ b/doc/old files/presets/3.s.txt @@ -0,0 +1,8 @@ +hum > inputU +button 0 +telegram полив#выключен 1 +end +hum < inputL +button 1 +telegram полив#включен 1 +end \ No newline at end of file diff --git a/doc/old files/presets/4.c.txt b/doc/old files/presets/4.c.txt new file mode 100644 index 00000000..3f1ccaa1 --- /dev/null +++ b/doc/old files/presets/4.c.txt @@ -0,0 +1,4 @@ +0;button-out;button1;toggle;Реле;Освещение;1;pin[12] +0;button-out;button2;toggle;Реле;Освещение;2;pin[13] +0;inoutput;T1;inputTime;Реле;Введите#время#включения;3 +0;inoutput;T2;inputTime;Реле;Введите#время#выключения;4 \ No newline at end of file diff --git a/doc/old files/presets/4.s.txt b/doc/old files/presets/4.s.txt new file mode 100644 index 00000000..844d1c5b --- /dev/null +++ b/doc/old files/presets/4.s.txt @@ -0,0 +1,8 @@ +timenow = T1 +button1 1 +button2 0 +end +timenow = T2 +button1 0 +button2 1 +end \ No newline at end of file diff --git a/doc/old files/presets/5.c.txt b/doc/old files/presets/5.c.txt new file mode 100644 index 00000000..359a7a52 --- /dev/null +++ b/doc/old files/presets/5.c.txt @@ -0,0 +1,7 @@ +0;button-out;button-out-1;toggle;Кнопки;Выключить#все;1 +0;button-out;button-out-2;toggle;Кнопки;Гостинная;2;pin[12] +0;button-out;button-out-3;toggle;Кнопки;Спальня;3;pin[13] +0;button-out;button-out-4;toggle;Кнопки;Прихожая;4;pin[14] +0;pwm-out;pwm-out-5;range;Кнопки;Яркость;5;pin[15] +0;pwm-out;pwm-out-6;range;Кнопки;Яркость;6;pin[16] +0;inoutput;output-text-7;anydata;Кнопки;Статус;7 \ No newline at end of file diff --git a/doc/old files/presets/5.s.txt b/doc/old files/presets/5.s.txt new file mode 100644 index 00000000..0424728a --- /dev/null +++ b/doc/old files/presets/5.s.txt @@ -0,0 +1,16 @@ +button-out-1 = 1 +button-out-2 1 +button-out-3 1 +button-out-4 1 +pwm-out-5 200 +pwm-out-6 800 +output-text-7 включено +end +button-out-1 = 0 +button-out-2 0 +button-out-3 0 +button-out-4 0 +pwm-out-5 800 +pwm-out-6 200 +output-text-7 выключено +end \ No newline at end of file diff --git a/doc/old files/presets/6.c.txt b/doc/old files/presets/6.c.txt new file mode 100644 index 00000000..c7fd096a --- /dev/null +++ b/doc/old files/presets/6.c.txt @@ -0,0 +1,3 @@ +0;button-out;button;toggle;Таймер;Освещение;1;pin[12] +0;count-down;count;anydata;Таймер;Обратный#отчет;2 +0;inoutput;input;inputDigit;Таймер;Введите#цифру;3 \ No newline at end of file diff --git a/doc/old files/presets/6.s.txt b/doc/old files/presets/6.s.txt new file mode 100644 index 00000000..06b70a4a --- /dev/null +++ b/doc/old files/presets/6.s.txt @@ -0,0 +1,6 @@ +button = 1 +count input +end +count = 0 +button 0 +end \ No newline at end of file diff --git a/doc/old files/presets/7.c.txt b/doc/old files/presets/7.c.txt new file mode 100644 index 00000000..984c6b8d --- /dev/null +++ b/doc/old files/presets/7.c.txt @@ -0,0 +1,4 @@ +0;inoutput;text;anydataAlarm;Сигнализация;Движение:;1 +0;inoutput;time;anydataTime;Сигнализация;Время:;2 +0;button-in;sensor;na;na;na;3;pin[0];db[20] +0;button-out;reset;toggle;Сигнализация;Сбросить;4 \ No newline at end of file diff --git a/doc/old files/presets/7.s.txt b/doc/old files/presets/7.s.txt new file mode 100644 index 00000000..32d28e78 --- /dev/null +++ b/doc/old files/presets/7.s.txt @@ -0,0 +1,10 @@ +sensor = 1 +text обнаружено +time %date% +telegram text обнаружено#движение 1 +end +reset = 1 +text не#обнаружено +time %date% +reset 0 +end \ No newline at end of file diff --git a/doc/old files/presets/8.c.txt b/doc/old files/presets/8.c.txt new file mode 100644 index 00000000..d18bdd0b --- /dev/null +++ b/doc/old files/presets/8.c.txt @@ -0,0 +1,4 @@ +0;button-in;sensor;na;na;na;1;pin[0];db[20] +0;button-out;light;toggle;Освещение;Освещение;2;pin[13] +0;count-down;count;anydata;Освещение;Обратный#отчет;3 +0;inoutput;period;inputDigit;Освещение;Период#включения;4 \ No newline at end of file diff --git a/doc/old files/presets/8.s.txt b/doc/old files/presets/8.s.txt new file mode 100644 index 00000000..10d55654 --- /dev/null +++ b/doc/old files/presets/8.s.txt @@ -0,0 +1,7 @@ +sensor = 1 +light 1 +count period +end +count = 0 +light 0 +end \ No newline at end of file diff --git a/doc/old files/presets/9.c.txt b/doc/old files/presets/9.c.txt new file mode 100644 index 00000000..502f3ae4 --- /dev/null +++ b/doc/old files/presets/9.c.txt @@ -0,0 +1,2 @@ +0;button-out;light;toggle;Кнопки;Освещение;1;pin[13] +0;button-in;switch;na;na;na;2;pin[0];db[20] \ No newline at end of file diff --git a/doc/old files/presets/9.s.txt b/doc/old files/presets/9.s.txt new file mode 100644 index 00000000..6f6d7dcc --- /dev/null +++ b/doc/old files/presets/9.s.txt @@ -0,0 +1,3 @@ +switch = 1 +light change +end \ No newline at end of file diff --git a/include/Consts.h b/include/Consts.h index dd97d73a..6b4e6764 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -1,8 +1,8 @@ #pragma once //===========Firmware============================================================================================================================================= -#define FIRMWARE_VERSION 272 -//#define FLASH_SIZE_1MB true +#define FIRMWARE_VERSION 273 +#define FLASH_SIZE_1MB true //================================================================================================================================================================== #define NUM_BUTTONS 6 #define LED_PIN 2 diff --git a/platformio.ini b/platformio.ini index f5848391..bd0eef56 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,6 +1,6 @@ [platformio] -default_envs = esp8266 +default_envs = esp8266_01_1m ;============================================================================================================================================= [common_env_data] lib_deps_external = diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp index b28778bb..e0752de6 100644 --- a/src/BufferExecute.cpp +++ b/src/BufferExecute.cpp @@ -1,5 +1,6 @@ #include "BufferExecute.h" #include "Global.h" +#include "SoftUART.h" // #include "items/vSensorDallas.h" #include "items/vSensorUltrasonic.h" @@ -11,9 +12,18 @@ #include "items/vCountDown.h" void loopCmdAdd(const String& cmdStr) { - orderBuf += cmdStr; - if (!cmdStr.endsWith(",")) { - orderBuf += ","; + if (cmdStr.endsWith(",")) { + orderBuf += cmdStr; +#ifdef uartEnable + if (jsonReadBool(configSetupJson, "uart")) { + if (jsonReadBool(configSetupJson, "uartEvents")) { + if (myUART) { + myUART->print(cmdStr); + SerialPrint("I", "<=UART", cmdStr); + } + } + } +#endif } } diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 951d16c4..fa334f78 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -1,5 +1,5 @@ #include "MqttClient.h" - +#include "BufferExecute.h" #include #include "items/vLogging.h" #include "Class/NotAsync.h" @@ -132,10 +132,13 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) { String key = selectFromMarkerToMarker(topicStr, "/", 3); - orderBuf += key; - orderBuf += " "; - orderBuf += payloadStr; - orderBuf += ","; + String order; + order += key; + order += " "; + order += payloadStr; + order += ","; + + loopCmdAdd(order); SerialPrint("I", "=>MQTT", "Msg from iotmanager app: " + key + " " + payloadStr); } diff --git a/src/SoftUART.cpp b/src/SoftUART.cpp index 00673fce..c40a3f08 100644 --- a/src/SoftUART.cpp +++ b/src/SoftUART.cpp @@ -2,6 +2,7 @@ #ifdef uartEnable #include "SoftUART.h" #include "Global.h" +#include "BufferExecute.h" #ifdef ESP8266 SoftwareSerial* myUART = nullptr; @@ -10,7 +11,7 @@ HardwareSerial* myUART = nullptr; #endif void uartInit() { - if (!jsonReadBool(configSetupJson, "uartEnable")) { + if (!jsonReadBool(configSetupJson, "uart")) { return; } if (!myUART) { @@ -27,7 +28,7 @@ void uartInit() { void uartHandle() { if (myUART) { - if (!jsonReadBool(configSetupJson, "uartEnable")) { + if (!jsonReadBool(configSetupJson, "uart")) { return; } static String incStr; @@ -49,7 +50,7 @@ void parse(String& incStr) { incStr.replace("\n", ""); if (incStr.indexOf("set") != -1) { incStr = deleteBeforeDelimiter(incStr, " "); - orderBuf += incStr; + loopCmdAdd(incStr); SerialPrint("I", "=>UART", incStr); } } diff --git a/src/Telegram.cpp b/src/Telegram.cpp index ee8fabb9..6663b20c 100644 --- a/src/Telegram.cpp +++ b/src/Telegram.cpp @@ -1,6 +1,7 @@ #include "Consts.h" #ifdef telegramEnable #include "Telegram.h" +#include "BufferExecute.h" CTBot* myBot{ nullptr }; void telegramInit() { @@ -49,7 +50,7 @@ void telegramMsgParse(String msg) { if (msg.indexOf("set") != -1) { msg = deleteBeforeDelimiter(msg, "_"); msg.replace("_", " "); - orderBuf += String(msg) + ","; + loopCmdAdd(String(msg) + ","); myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), "order done"); SerialPrint("<-", "Telegram", "chat ID: " + String(jsonReadInt(configSetupJson, "chatId")) + ", msg: " + String(msg)); } diff --git a/src/Web.cpp b/src/Web.cpp index 31a93c3d..6027fcc5 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -19,65 +19,55 @@ bool parseRequestForPreset(AsyncWebServerRequest* request, uint8_t& preset) { void web_init() { server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) { //==============================set.device.json==================================================================================================== - if (request->hasArg("addItem")) { + if (request->hasArg(F("addItem"))) { addItem2(request->getParam("addItem")->value()); request->redirect("/?set.device"); } - if (request->hasArg("addPreset")) { - addPreset2(request->getParam("addPreset")->value().toInt()); - jsonWriteStr(configSetupJson, "warning1", F("

Требуется перезагрузка

")); - request->redirect("/?set.device"); + if (request->hasArg(F("addPreset"))) { + addPreset2(request->getParam(F("addPreset"))->value().toInt()); + if (FLASH_SIZE_1MB) { + jsonWriteStr(configSetupJson, F("warning1"), F("

Присеты не доступны, модуль на 1mb

")); + } + else { + jsonWriteStr(configSetupJson, F("warning1"), F("

Требуется перезагрузка

")); + } + request->redirect(F("/?set.device")); } - if (request->hasArg("delChoosingItems")) { - jsonWriteStr(configSetupJson, "warning1", F("

Требуется перезагрузка

")); + if (request->hasArg(F("delChoosingItems"))) { + jsonWriteStr(configSetupJson, F("warning1"), F("

Требуется перезагрузка

")); myNotAsyncActions->make(do_delChoosingItems); request->send(200); } - if (request->hasArg("delAllItems")) { + if (request->hasArg(F("delAllItems"))) { delAllItems(); cleanLogAndData(); - jsonWriteStr(configSetupJson, "warning1", F("

Требуется перезагрузка

")); - request->redirect("/?set.device"); + jsonWriteStr(configSetupJson, F("warning1"), F("

Требуется перезагрузка

")); + request->redirect(F("/?set.device")); } - if (request->hasArg("saveItems")) { + if (request->hasArg(F("saveItems"))) { myNotAsyncActions->make(do_deviceInit); request->send(200); } - if (request->hasArg("scen")) { - bool value = request->getParam("scen")->value().toInt(); - jsonWriteBool(configSetupJson, "scen", value); + if (request->hasArg(F("scen"))) { + bool value = request->getParam(F("scen"))->value().toInt(); + jsonWriteBool(configSetupJson, F("scen"), value); saveConfig(); loadScenario(); request->send(200); } - if (request->hasArg("sceninit")) { + if (request->hasArg(F("sceninit"))) { loadScenario(); request->send(200); } - //if (request->hasArg("snaUdp")) { - // bool value = request->getParam("snaUdp")->value().toInt(); - // jsonWriteBool(configSetupJson, "snaUdp", value); - // saveConfig(); - // #ifdef UDP_ENABLED - // asyncUdpInit(); - // #endif - // request->send(200); - //} - - //if (request->hasArg("scenUdp")) { - // myNotAsyncActions->make(do_sendScenUDP); - // request->send(200); - //} - - if (request->hasArg("MqttIn")) { - bool value = request->getParam("MqttIn")->value().toInt(); + if (request->hasArg(F("MqttIn"))) { + bool value = request->getParam(F("MqttIn"))->value().toInt(); jsonWriteBool(configSetupJson, "MqttIn", value); saveConfig(); mqtt.subscribe((mqttPrefix + "/+/+/event").c_str()); @@ -85,111 +75,103 @@ void web_init() { request->send(200); } - if (request->hasArg("MqttOut")) { - bool value = request->getParam("MqttOut")->value().toInt(); - jsonWriteBool(configSetupJson, "MqttOut", value); + if (request->hasArg(F("MqttOut"))) { + bool value = request->getParam(F("MqttOut"))->value().toInt(); + jsonWriteBool(configSetupJson, F("MqttOut"), value); saveConfig(); request->send(200); } - if (request->hasArg("scenMqtt")) { + if (request->hasArg(F("scenMqtt"))) { myNotAsyncActions->make(do_sendScenMQTT); request->send(200); } - if (request->hasArg("cleanlog")) { + if (request->hasArg(F("cleanlog"))) { cleanLogAndData(); request->send(200); } //==============================wifi settings============================================= - if (request->hasArg("devname")) { - jsonWriteStr(configSetupJson, "name", request->getParam("devname")->value()); + if (request->hasArg(F("devname"))) { + jsonWriteStr(configSetupJson, F("name"), request->getParam(F("devname"))->value()); saveConfig(); request->send(200); } - if (request->hasArg("routerssid")) { - jsonWriteStr(configSetupJson, "routerssid", request->getParam("routerssid")->value()); + if (request->hasArg(F("routerssid"))) { + jsonWriteStr(configSetupJson, F("routerssid"), request->getParam(F("routerssid"))->value()); saveConfig(); request->send(200); } - if (request->hasArg("routerpass")) { - jsonWriteStr(configSetupJson, "routerpass", request->getParam("routerpass")->value()); + if (request->hasArg(F("routerpass"))) { + jsonWriteStr(configSetupJson, F("routerpass"), request->getParam(F("routerpass"))->value()); saveConfig(); request->send(200); } - if (request->hasArg("apssid")) { - jsonWriteStr(configSetupJson, "apssid", request->getParam("apssid")->value()); + if (request->hasArg(F("apssid"))) { + jsonWriteStr(configSetupJson, F("apssid"), request->getParam(F("apssid"))->value()); saveConfig(); request->send(200, "text/text", "OK"); } - if (request->hasArg("appass")) { - jsonWriteStr(configSetupJson, "appass", request->getParam("appass")->value()); + if (request->hasArg(F("appass"))) { + jsonWriteStr(configSetupJson, F("appass"), request->getParam(F("appass"))->value()); saveConfig(); request->send(200); } - if (request->hasArg("weblogin")) { - jsonWriteStr(configSetupJson, "weblogin", request->getParam("weblogin")->value()); + if (request->hasArg(F("weblogin"))) { + jsonWriteStr(configSetupJson, F("weblogin"), request->getParam(F("weblogin"))->value()); saveConfig(); request->send(200); } - if (request->hasArg("webpass")) { - jsonWriteStr(configSetupJson, "webpass", request->getParam("webpass")->value()); + if (request->hasArg(F("webpass"))) { + jsonWriteStr(configSetupJson, F("webpass"), request->getParam(F("webpass"))->value()); saveConfig(); request->send(200); } - if (request->hasArg("timezone")) { - String timezoneStr = request->getParam("timezone")->value(); - jsonWriteStr(configSetupJson, "timezone", timezoneStr); + if (request->hasArg(F("timezone"))) { + String timezoneStr = request->getParam(F("timezone"))->value(); + jsonWriteStr(configSetupJson, F("timezone"), timezoneStr); saveConfig(); timeNow->setTimezone(timezoneStr.toInt()); request->send(200); } - if (request->hasArg("ntp")) { - String ntpStr = request->getParam("ntp")->value(); - jsonWriteStr(configSetupJson, "ntp", ntpStr); + if (request->hasArg(F("ntp"))) { + String ntpStr = request->getParam(F("ntp"))->value(); + jsonWriteStr(configSetupJson, F("ntp"), ntpStr); saveConfig(); timeNow->setNtpPool(ntpStr); request->send(200); } - if (request->hasArg("blink")) { - bool value = request->getParam("blink")->value().toInt(); - jsonWriteBool(configSetupJson, "blink", value); + if (request->hasArg(F("blink"))) { + bool value = request->getParam(F("blink"))->value().toInt(); + jsonWriteBool(configSetupJson, F("blink"), value); saveConfig(); request->send(200); } - if (request->hasArg("reqReset")) { + if (request->hasArg(F("reqReset"))) { String tmp = "{}"; jsonWriteStr(tmp, "title", F("Вы действительно хотите перезагрузить устройство?Идет перезагрузка устройства')\">Перезагрузить")); jsonWriteStr(tmp, "class", "pop-up"); request->send(200, "text/html", tmp); } - if (request->hasArg("reset")) { + if (request->hasArg(F("reset"))) { ESP.restart(); request->send(200); } - if (request->hasArg("test")) { - if (request->getParam("test")->value() == "ok") { - Serial.println("test pass"); - } - request->send(200); - } - //==============================mqtt settings============================================= - if (request->hasArg("mqttServer")) { jsonWriteStr(configSetupJson, "mqttServer", request->getParam("mqttServer")->value()); saveConfig(); @@ -237,7 +219,7 @@ void web_init() { request->send(200, "text/html", payload); } - //==============================push settings============================================= + //==============================telegram settings============================================= if (request->hasArg("telegramApi")) { jsonWriteStr(configSetupJson, "telegramApi", request->getParam("telegramApi")->value()); saveConfig(); @@ -266,15 +248,21 @@ void web_init() { myNotAsyncActions->make(do_BUSSCAN); request->redirect("/?set.utilities"); } - if (request->hasArg("uartEnable")) { - bool value = request->getParam("uartEnable")->value().toInt(); - jsonWriteBool(configSetupJson, "uartEnable", value); + if (request->hasArg("uart")) { + bool value = request->getParam("uart")->value().toInt(); + jsonWriteBool(configSetupJson, "uart", value); saveConfig(); #ifdef uartEnable uartInit(); #endif request->send(200); } + if (request->hasArg("uartEvents")) { + bool value = request->getParam("uartEvents")->value().toInt(); + jsonWriteBool(configSetupJson, "uartEvents", value); + saveConfig(); + request->send(200); + } if (request->hasArg("uartS")) { jsonWriteStr(configSetupJson, "uartS", request->getParam("uartS")->value()); saveConfig(); @@ -309,22 +297,7 @@ void web_init() { } }); - //==============================list of items===================================================== - //server.on("/del", HTTP_GET, [](AsyncWebServerRequest* request) { - // if (request->hasArg("file")) { - // itemsFile = request->getParam("file")->value(); - // } - // if (request->hasArg("line")) { - // itemsLine = request->getParam("line")->value(); - // } - // delElementFlag = true; - // deviceInit(); - // request->redirect("/?setn.device"); - //}); - /* - * Check - */ server.on("/check", HTTP_GET, [](AsyncWebServerRequest* request) { myNotAsyncActions->make(do_GETLASTVERSION); SerialPrint("I", "Update", "firmware version: " + String(lastVersion)); diff --git a/src/items/vButtonOut.cpp b/src/items/vButtonOut.cpp index 3ef137b0..fb422e34 100644 --- a/src/items/vButtonOut.cpp +++ b/src/items/vButtonOut.cpp @@ -20,17 +20,6 @@ ButtonOut::ButtonOut(String pin, boolean inv, String key, String type) { ButtonOut::~ButtonOut() {} void ButtonOut::execute(String state) { - if (_type == "UART") { - if (jsonReadBool(configSetupJson, "uartEnable")) { -#ifdef uartEnable - if (myUART) { - String msg = _key + " " + state; - myUART->print(msg); - SerialPrint("I", "<=UART", msg); - } -#endif - } - } if (state != "" && _pin != "") { if (state == "change") { state = String(!digitalRead(_pin.toInt())); From 0bb028229a71099555b0f942ffa97e5bb0ba2e5a Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 17 Dec 2020 22:59:44 +0100 Subject: [PATCH 5/7] ziped data --- data/index.json.gz | Bin 0 -> 516 bytes data/set.dev.json.gz | Bin 0 -> 545 bytes data/set.device.json.gz | Bin 0 -> 2741 bytes data/set.manual.json.gz | Bin 0 -> 340 bytes data/set.mqtt.json.gz | Bin 0 -> 831 bytes data/set.telegram.json.gz | Bin 0 -> 857 bytes data/set.udp.json.gz | Bin 0 -> 665 bytes data/set.utilities.json.gz | Bin 0 -> 623 bytes data/set.wifi.json.gz | Bin 0 -> 1026 bytes {data => data_ungzip}/index.json | 0 {data => data_ungzip}/set.dev.json | 0 {data => data_ungzip}/set.device.json | 0 {data => data_ungzip}/set.manual.json | 0 {data => data_ungzip}/set.mqtt.json | 0 {data => data_ungzip}/set.telegram.json | 0 {data => data_ungzip}/set.udp.json | 0 {data => data_ungzip}/set.utilities.json | 0 {data => data_ungzip}/set.wifi.json | 0 18 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/index.json.gz create mode 100644 data/set.dev.json.gz create mode 100644 data/set.device.json.gz create mode 100644 data/set.manual.json.gz create mode 100644 data/set.mqtt.json.gz create mode 100644 data/set.telegram.json.gz create mode 100644 data/set.udp.json.gz create mode 100644 data/set.utilities.json.gz create mode 100644 data/set.wifi.json.gz rename {data => data_ungzip}/index.json (100%) rename {data => data_ungzip}/set.dev.json (100%) rename {data => data_ungzip}/set.device.json (100%) rename {data => data_ungzip}/set.manual.json (100%) rename {data => data_ungzip}/set.mqtt.json (100%) rename {data => data_ungzip}/set.telegram.json (100%) rename {data => data_ungzip}/set.udp.json (100%) rename {data => data_ungzip}/set.utilities.json (100%) rename {data => data_ungzip}/set.wifi.json (100%) diff --git a/data/index.json.gz b/data/index.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8c2326efca8f7ad1eb4bb8cddeaaec018becdeb2 GIT binary patch literal 516 zcmV+f0{i_RiwFn-?9*Qa0BLSyWq2-Xb8l_{&6PoG)Ib!+?}dJcA?GG>TX(w_q&Hy? zJqQaP#KSb1WXDcsV& z^M3!wBpGjRFy;hCM>4j~9(!8mwBy%Xo|4DHdv1+(wyr5wK%QQc6xVSzd0AddrSh!O z9gv^|m2mJQUf>MB;sR&InNzEQ;+6nP7UkN+HBm$r+zwmjoqJW3gpIP@x&xtMZ2j$gCH2v| z3it^xaZ$X%Iesf%7gK7;TbvhXjFMNyX)z`FXBknqW>*g20Z60E6a0Ph?1kc324WrO zA!tU!Jya$*Dx?3${ABQG(8BmqM)H;k4;~MPEriJnfLkU6p+ubVq=mA1#ym{ypV_yf;zLGd{om?1mhn#Uqz_#H2( zzg&lzk>Oe&BY@QI`F^VSi5D9aE8ztu@hzB4_&iOm9}3`7*?k#4q%WMXX@9%d^Q3{K zE_0{7%XDP4XtQ3K^k`Z-&+>A|Cx7nJpfAHtr`vt7bHBg4`%iAGKf>k)t$zSd<=(-3 G1^@ui@)!^ z&++8(BM*Q6AQdr7l;82fa>cIgSBou0A${ZKequ- z9B}03&v5gb%76-JR#q2XsXWW9$l?7uv~RrloUl*?01@YR#ly)ik0P{ jHY`hpvRq-!(@=^Q;L#?&(umu1BnokT7 literal 0 HcmV?d00001 diff --git a/data/set.device.json.gz b/data/set.device.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a011335e6942d00fade3951557ccf17417ab83b GIT binary patch literal 2741 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 literal 0 HcmV?d00001 diff --git a/data/set.manual.json.gz b/data/set.manual.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..1758467685592e37b410f1ec2c7b0baca6499b0e GIT binary patch literal 340 zcmV-a0jvHWiwFoG6wF@)0CQz@E^T3Mbzy8SYIARH0KJkiYQr!Xh4(=2U<}=C#inF& zheEdwh3=(;;>fldSu**5y9vfn3f+2%-k@Wb_6+uoD#@WH!G(|^gN^l`_`mlo)zgXN zxUrH6Pr;3x2ea17td|HdEDQ1kO1j>Gr3&Oqj(dVv?7$IJruIeFWp5eh(dz>U3L0;c z2p@7^C5a~cp|e|ufgZF=icI2=)E2M=+!oA?$mV+QpU6>IwXP-2S*y#6*XUs)AVsSK zG3P*HsP^1#AM}|oF^j?=xVXv~Pcw`z=RvU<>(qXml%gpu zOxmWsF|on4hpG>5{)lL${;_R#6^M)%tvQ z@qPa6yGu_N7Yw7&X4D~WP_T@KoP(wqt5yRnLVxvhz-VDbn><8a^|Q*u*d#5@m3S!+ z1+b7@(=&sv$s7mPFv~_VFPD_mwY6nU&tE9PbG4zO=Nk|@K`Ag5DM|%iVG_qamO(pJ z@Es|M@RauCgrY9)_fuO66M2{m)5Z=8JyD45{gu4+Jwo@hBfJX5HX?Kfx#NLQTM$O2 zPcbWeOHc#8X3JykeJR}5oDH#LDcjvbGPEjrdl=~>P3 z7!sC;9Z{Palu$nuS#fXZ;5d}3dmu!N!bIF1!+=BrHuaf=a(#r76Ss2<_9j!a!?>6y zDKdUOCEDX53E|iwy}44N5KJazI?5T-@-diy0!a+{w8S0{n>Iq`Zt@;bzK9S z786UF++a&5iB;cmuxT-|=z|7}7Guk7dvQ$Pz4*y$%hU!@5bDAOok(Q>u8(gg(Z%pI zx{kg_0~jxdUxr_e;Tb3f(a-2Ix`Ocv#sMe|x!;L9Y;E{Y+vLzt&uuOz$tx4Qd?T4#45;qLs^zV^18=wTjhFGw<(7xq`=Imn5-ljFm|I5K z?->E}h;1yrc`ZLRBQ}{F*(3}sqvH2K2amg)h153Xityml+p7H33?JDx+$>lsjyt+` zpAe_ze!pJyx9UX+1_s!~))QGdWUbwYtlPY`|Jz8^y~pBCy`=j1dP#JlO2Q!e6@80- z3{QvWASDIje0T+VPkc8wG21VB$YXkhD#iP@aLvwMV{|CjE J&0Qc50072kkcI#N literal 0 HcmV?d00001 diff --git a/data/set.telegram.json.gz b/data/set.telegram.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8386cf0920a5893d9689e849e263f2c930853178 GIT binary patch literal 857 zcmV-f1E%~RiwFo7Zqr``0CQz@E_7vVWoL3>Z7ynaZ*BmsR^4jbFciKY^c_UX)|lT)-UG@sn8|}!B;|%P@ zg<>2ZopW^l^(lu7j}R)fIBQeOFH}%nuYpsHSSvmefxGhF=d7?CiyX|X@MpyfB9WFf zmLpRR_Q8<0=@@?3;O#cpFv@7ME|)^8YsQk*c>OFS94i*A#p|cwdJ?4|Oe9f;!G|%4 z1D9y0_6F!qnN&C-_wbP6F6s9ZSrR68h$jq_v~l2wLL~1mXW4fs>!f>l5s25AvOR45 z>j<|5I+9oNEbZJe{L=hkS=9z zAadm^|3IE2$oCG(YjrBe@`t)mpFnzw)Uh1H^9`0m`5Uxuva6A}g>oc|ta>CG4^t3( zJuTaJ+KY#~sAXe;c6a8Q$*fySp|#Cj)4-mUo?;}=livSh-`?9rf_Dg;Yv?}Fi;4Md zmu9Chqm(0$W*`J-nV9hw?`PpfI6#T7c!HAf8jUAWIYAT=5%+#LGn?Z<6xl~=3cFG+ zl^$13>bnj;s89ybN9JamV<-jbrM9DH(tQ+$u({NQJSZ~+cOeS5SDmbz9BSE(SW8>A zHrxmLj^N(rQq#e$4)EOAM3Z|a@hYh7_K?pVYNExRm-?xqNMv}}q=8>SYiI6OjET54af$p8g7yZJn3&5dp&j8Gh!1o9k07aTs zgIdwusuguP-~(mcn%jgNeX`e54v0r!Dx)Dv8yuJWRF7|^O?$+w>i%uO5ILkRLLwTh z_0mjFLz%G}vh-*e*r67yvqLN`^d2+@3QrG;&%6tC=uJb@Owgq}#9}L1dKwHRH4p8Ob!4yTCy(G~{l+Z+>oW zH$OJNHn+dO;qBa!APKrL9)*`IJQarM!Rt6%y3@{23u+~2mVTNaL}UeBOJAVrZ4AI9 z>|$6KFN5hu=a6RSHi)}G*K0`@EX#JX9ZVuv3?5}6Nd>rtJZtQ;FSwkSdw7|`JHq89 ziS9ch0dOUaPOHql57NP(=L;3g&8aq&SzN8sEysGr;Cg)dmM4&9)kdoQ1j+JmN47{? z-V7GPZB#NWJ>6MLfI#kqvSqVyv=iMF5q;qlX1z|k{iI)(V@YIX2sNTKwLg^4YfTZV z$?Coaz^;Ct=2`-^9=09op)>7SjZUN1!=kH^USKOI3t&L`(#cCbJYA4D;?e`9vD$jo z-_pJUP>X_fIvRwyC(Q0p@$l3aB$y*lTNA#DDT{kfN3Wbj2~M4p@hkK6okHZrgz_}$ zIbFR%9$t@Pl}hRvi+J(m&AEB{jwY0H8KJ4dug&yF63b4O4O)6MXc;W{!Wc#sof`^8 zpeI-e{mNV&9_;tH>^_8JwyZJTTjvm&*y+5=27Oy4%EY3S_^1}N> zysvHV*>ru;=$uuf^;0ag+`E9U$ns!!Z_y4XlRLPl)BoP;!HflSU#&_Kno_MKegF@Z zWQ^H;y$WVT9v)_E3*)uNBG`Y+WaTwF=26Y*S;?H*44BvS_$d1WYSV+1K?wi=;8a8G literal 0 HcmV?d00001 diff --git a/data/set.utilities.json.gz b/data/set.utilities.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..5356db03b5880f04f4b50cf660e98c0b895625c6 GIT binary patch literal 623 zcmV-#0+9V5iwFpa(A!@G0CQz@E_HNiY-x09WpgfSb8l_{&6VG3+b|Ty?+bkgW7w|h zG-wM=YS)OcfDT-?P#P*y}Z7E$bhRCiA)v!0VYOg|{s5>{5(4x`khJ+Du zlD}FINl7S1qN~)S*n$))`^qlajLq2`rqX0T}sK4nWbmwk4w@DI>j@iWESGt1X*=5v5&kFy%h@V5$^^AmQ?-zm^6*$;jO`hxw0cm)75 zF<{6BMKH1%w}ZrO79DFSaSFc^QSXMAV>#!w*QajlpnmVr#y+AgY}xd%G@nOCQSP}Z z*ps$~0;d>7JC2LJHLtw|p5s<{m-1PB6Ss`gIl4Otougt3QvYWd^gG0$mtfFu6+&o&xce@fS=Z_>!U0n!Vg4e$Q-X*Z1fa#JBFJ8Mxrjq0oDUwuwQV{C85zX5aZ J+BAj<006^%D~kXC literal 0 HcmV?d00001 diff --git a/data/set.wifi.json.gz b/data/set.wifi.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..d5cab6bfe66f4538aa23730a7f95f984a74a5a78 GIT binary patch literal 1026 zcmV+d1pWITiwFqWZqr``0CQz@E_Z2WX)bDWZ*BnXSYL0`Fc5!7;yXk|zzf;hjUm*I zA^wOr{s@pJQT4$|+}13$P2y~Ys?uNxUJyt;!UJDn0wxA%@D-eI#Mw@oP9$rpQjjK8 zH97m7yPxlVcTPJvdBUlIEF!+}Fl4lHE>-!6cJyT-h>S{U zT3TNbMEDpCRpdMQLmtG><-YtB@5I}3H+~`a<2PVOyYx{A4wY};4tq9hx51ZPvyySG zs->QnYL?RRMJ@Q9RI!|nFM#P}Hv&_U?Pg$Z3f*I_!F5;C?TkYn3@Ga1;V{!>Fp-Y~ zVSBiZB41RDet53PzE9{zzK5%kxQPh8gF1&DAy*Ja)tbdT_l}?zd~L^P?uL>|L+J*S zmn`RFy@$m*xj}A0P;R%cQ;^St&sV|vrb*VraleJsO$iFBns=+ zGVjA2Jl+XdL_J$sga=RESW%yb#gXR`+5uC>?(O$@>8 z+`P*ofrD#|QtXNnyeQ;n4i^J$I}C|eOvh|Z3FjO*vjs7q%D;N3*nhUBg#T%aq6Eo{ zDkzH!6j3%Xb#x{}4ccsAv=g^+yb5P&PKD!kvAf~0eh#smqT@-vmEYv|_;vgePU>gz zD=U5~KgzxM864%G<-WSY6byGky93HyOa4@|qsR8-L3+sley}NGXy1@^eQ&k$S*?{N z2z|VmurenmOlYB3To;Go9Y*M%ZlH)C-8_x{P|M*+Kr_&ESs2vLEmbEYnzE}Reso7Q z`eINQOM#lU)gJDih$o#Bgsf{CWH4)l|L-J|3TpY^6x2F)W+^239y;nL=(Yzr?A^kU zR0wx5f72E7EGzi|PJnHI`8|G>5Ax_5OBT!uake5$0|f<@ibpW<3ygKsv zztNFLzn?JV&4heRt2S&J91Dp`aJ^0X*lVchtyE7peB2gV*dm_j*3VbRBC2)vlAcnD zv5`+YwC-XG)NkY^zDqn0(~0;EH49qp9< Date: Fri, 18 Dec 2020 00:53:39 +0100 Subject: [PATCH 6/7] change to 4mb --- data/dev_conf.txt | 0 data/edit.htm.gz | Bin 0 -> 5455 bytes data/presets/presets.c.txt | 46 ++++++++++++++++++++ data/presets/presets.s.txt | 84 ++++++++++++++++++++++++++++++++++++ data/set.device.json.gz | Bin 2741 -> 2741 bytes data_ungzip/set.device.json | 2 +- include/Consts.h | 2 +- platformio.ini | 2 +- 8 files changed, 133 insertions(+), 3 deletions(-) create mode 100644 data/dev_conf.txt create mode 100644 data/edit.htm.gz create mode 100644 data/presets/presets.c.txt create mode 100644 data/presets/presets.s.txt diff --git a/data/dev_conf.txt b/data/dev_conf.txt new file mode 100644 index 00000000..e69de29b diff --git a/data/edit.htm.gz b/data/edit.htm.gz new file mode 100644 index 0000000000000000000000000000000000000000..5786121f98a84b5695314c9ad8e5537f57650ba4 GIT binary patch literal 5455 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 z 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 tUp1 +btn1 0 +telegram нагрев#выключен 1 +end +t1 < tLow1 +btn1 1 +telegram нагрев#включен 1 +end* +t2 > threshold+-2 +heater2 0 +end +t2 < threshold+-2 +heater2 1 +end +timenow = time21 +threshold threshold1 +end +timenow = time22 +threshold threshold2 +end +timenow = time23 +threshold threshold3 +end +timenow = time24 +threshold threshold4 +end* +h3 > hUp3 +hUp3 0 +telegram полив#выключен 1 +end +h3 < hLow3 +hUp3 1 +telegram полив#включен 1 +end* +timenow = time41 +btn41 1 +btn42 0 +end +timenow = time42 +btn41 0 +btn42 1 +end* +btn51 = 1 +btn52 1 +btn53 1 +btn54 1 +pwm51 200 +pwm52 800 +txt5 включено +end +btn51 = 0 +btn52 0 +btn53 0 +btn54 0 +pwm51 800 +pwm52 200 +txt5 выключено +end* +button = 1 +count input +end +count = 0 +button 0 +end* +sensor = 1 +text обнаружено +time %date% +telegram text обнаружено#движение 1 +end +reset = 1 +text не#обнаружено +time %date% +reset 0 +end* +sensor = 1 +light 1 +count period +end +count = 0 +light 0 +end* +switch = 1 +light change +end* \ No newline at end of file diff --git a/data/set.device.json.gz b/data/set.device.json.gz index 1a011335e6942d00fade3951557ccf17417ab83b..c0686cbfcac8b920c6914e072b8e89f3fe6d34e6 100644 GIT binary patch delta 2603 zcmV+`3e@$r6}1%xABzYGx7U#dB!8(JN|qvu5Fk-RIUqpDiJipY*v57!ijde{s_5l_ zKy-mPa0tsTgph^5F#bop_hy`sYKIO4$auzn<(pT>sV-h5!Jo0bWft_JJC>CW@fn(p z^XZtYc@;Z$%(cw1@jlCz?dg^|c-_!XYJFA>#Vpc)F{i?p`RbAJKqy0TL4PEa&XC=* zY!wP1iJX+gbus}2Tk?CF>2=C4lxuPH&e$4~D`kS`+Dp1;&|0->DrN2L+3q{q!YGF3 zc(SS$l#1bvweLDR9?sd&&Evy(Z>o4Z72VvU6#I#wH`ylHQT;L@@M=he}CFP$3C-4vvzQ!Nl8A&;BNHB3Mb)uv)jDPNNCN?sQ`8Jwt~f?AJXnbk z)pMikoiR8w-L(znOjb7`glYo;Xv^AOTOwTcDtn8T$LeTZl7F3jLL-BJ3;whO=KleW z?+cnA_(5&0Yb&Nif*P(nJeCJ<@D7iyUmM5i_22Su=QGGn8x&RDlR*M1f1L_Qr$!_# zE%&D+x|j`I5VZfeBAjJ9V43b@354oEXc}18fax_@LYB+nd!8Z-Miu`i`vA)eVv#k3 zNdC;Y#O6>|5Q?DxOf)`VFu(_Re42%A@h`G@di)&D`4=LHJQ0XI(S_1^+-e|m36ld% zflT9)e~CiQ0wRKD@EKzefBb(Fr&=JwZoXM z&huv?$exkyQ)QGr6JxItVUT1Rb->+g0;3rO%AX1lZK6mtdDFj0^1}1sY*xx@(L**X zW9%_&a0avR0cxNskvh+n@~`?AB=&(AUJ^ik4Ck;)_DGLa{TRTIIHyrgFPz$H**i`0 zu5Ob<(OLv?PuN?ycn2%Ap$$U4HqLiv9#Imb_wWSqh3#*t>R%0)VvVe*d6S_7HU>#` zldE&7lidR`e2^;gCEeOxAN2WQ^l64}g ztf|yEex=j&H38Uc+?h%zV0Q1e{fTr0rkR!^nJ9|)@kmXV-Id6I- zDY*G_Y6O}nj|8mVayWq^kCB)GN!sZsQ8JYdQbh_p{SK>xX7BM~QE(8sfD5byAX8a# z9v07me zE1~hUwjN-j`M0zsSNrz$W1Za2{-VYr^*1&ae`p3&TF(F6wqlQ?!DwAlG!@T@Wm5#l z8t|g}6tB@l(Ex(n4+5Y|ec`kImB3M16HN$(Cg*)e+uDpGL`t+DcX_iO1QEOfdZS4O zcTsflFHzuWl63`;1(qL8taQ+#0G9=BlNjpy1kXz3CGahm~T)L~_g3;`XC@fcsUgAzS!$#15 z`7;6VK|Rj(?W5yR`KE(pfzx5>B9iQ@f;Pp!fTY@4aIPaMW5XNdi)j0>S~M*8hR^}E z+YKc(?sa|?Hj5g-fKU@*wnis)HAD$Rf3C0-gaQaQa4L#eYeWb0qBnoH7-RN_3(8{T z&sU&qxY1#`1p2(_;YG)f{Y_i9A4>%zA4=ujlLKS;p+2zWOIrST&N|%}vyxXf`YiB6 zxZkqSIe(-#izyzd?Z)s`OANFhoas*Ks#nS;6N#mh1K%tNJ8_kh8de2vc!K@yf3F#a zzd~UzC}w_Y#X8K+ZIA9b`17w0!Qz;5QgQQ+ZhP6PtC{LiM>|o`TyMEo(%tc81eK~8 zn@g7E!kH@}wrs^DOz(#?d#mCtFH}sTwtPhua8hs>D>+(W-Lm)wxGkn?C-uCxOqvAM zCD@w8ipjIT9`jKlgmf_kr2vMFe}?g!Y-acw_*zvzDUsE$TUJ(_qHfBbWrN|{rzgdA z&hk8~%%_&EUt55ehxks>a@H-&8A|>*%-I2noaLyRla-S8Y00$=U6qz>*^Hk_i7&~H zqUselE2ZtzFb9tp9jjuhGE#&Gmu$`8XHv2u{DPSPDbANY!2$%WvE$^5e~LzKpFt4i z8SgFa$wmKamkndNGTxCx=zIouu^rXpa0z*`E7Z42_XZFEc6f_8jH+YEhe;}&YQ2ek zZEiiZmyg*?_LSXXkJx=EN#98D-z|2VJ%r0w?8Vx6ZhcIGG38|xsD0$yz&4AreM2Pf zj~!WlfIMGX#byl)F@L7jf1va>B6NQXW9pI?f`e*-HPR8s;g?%zV~r&p3&nyCVh+iENHhj5f28bJ()41<%ce8nhQs!QeGZC2e~w8M2y|2TetiHO zIcbJk$IcU;x4YsEf#V5xJaI5p6GlP~dexuieltf7`3`-x@3{bLhG8h=080|1;l?Cx z8rhzH4S?ItVfc|BEg&|1(Syrx0Q4{P0Wb=9+tCa8ARM~wqkH1W$mJ@KYli{z3}GQp z`%LhBXdip^jYJfee??i+2PS&%!dL`f1qA*^UkwH9F$QT=m4~H{LqLEB|IWgPy6aZi z+dkV3FXr-wrkHRX`Rl<6sYIXRsVjfW*_(}PL)75aby+bhit)#_fbxe6j_=6C3tHCb z_^AtjIXKIEZnS&!gWv>uh@K_Sv)ybwUevu(B?nDlIlkT6f4@^P;Rj^S9>+SS<-Koa z;-~cE`me`hWRowY2gcR%87|J?%x**Tg?MBO`e{v_#9BWCS>DhJ9u0WrpGbUD|I?bB zqA6@9WW|8r1!W;7c$zag7@(4_s+u{Xa^e2W-ttpO?$2F6$?|9Vgt+0xPsyt11~~Y! zEz>2QhYkg}H6A(gZ`lJKU;Xzc@nobfCoG=BvBh45EyN@U+V8Ro_zkbtvB!LPWbvZ2 NUjYL4(k@{v005i$`IZ0x delta 2603 zcmV+`3e@$r6}1%xABzYGrNWU0B!4N+hLWX-A_PbjQ4RT9dj*nY`o91WqZ114qi9(lUkouLp6)^U(BiSWxjf3JP^uIU4IY>r88u= zEL(*FNFpaCah*&6!Iu1Z9AZgb0Zz6F|FKecC>ZfuzU?WweUZK%XCC=^uF6aCyR`+j8>n`)NU*ksF}v4v*!)8@$6~>(|C{di}Tj+xZM~(*`x4-;+QBDu1m6q?Hj# zOUwN!i7sXX7XFi4$v(jHf>>k? zA(B5cF0nb36@((_KNF1)7!2?M9-n4mTl|Y`o*qAkbN+=0B2NS&PjsPl9=96ET*Bl4 zQy|m0MHQMjdeXn!soVf%2yUM4KoQP2Th`lDzPIIGdGnzUU#F zl`;01H8_J=_y9Ffl}MfEO8Hm)3ljT43@-_wK8ABxC3~dDs(uV$$T-s|rx#9bwd|cH zc~`f|p=d3FxF_r_T)cx7+Rz4}UK{7TGmj{V(R+A;_`>$LRQ0chOR+{)^Es2C12zUJ z?uZgI?9f`1#5Pza7iBM4^QcTLaAPH{#jGS|h z2w&^U9v~*ha*Bo@B+AiqJWpfj3i4SKVoHIR= z6x{qdH3ChPM*>!FIh;U|$4Jb8B<*yRD5<1^RH1;U-(hvo>^(j#3JxL{aDkNoWGYL} z!{RxRq<@B40hAPl$qY|?B+*A+FIH5?8<&c3B!TFOPHGC$4K9BYk4lxi9YNv=*|3Tv zF~pIFs5N}*qNJz=38el_!o$*ty(65?qs_F_-$(SGd6a;xX(38lQ_^yUBbJ8j+C~R! zB{ZJa)&op5|CYAoYTv$otdrZ>U({GAe`8~TW`97X<^0cWEA}`VjMgPZQ}LWwHbro( z0WYdg@fuAO4Is$2^^I*(S%TFa^82et<5MxD5Cwi%bWEeh~O2_8%;8} zi=vBvi2_fPtSf*lu>5FZrGgd(xGZp+#8B5Km-LE+nepcXH6c2XJ3+$`kR(6unIsrL z(SPbU0hvUc|Hc8Ma88T<;ZB=P+mWY$+;ZNZ@sQi$(p?P~jAmCvVYyQD5_h^8HiG`k zp9z2u>T#}bA03CvHytDkoDNGDkz`*Lv?=}tB-PG>a~(+;8{QyaMB9heqG7o=gbt|P zZYZg7uk)j@S=0aqgqjGmH9D!QAxao>g@2tO6hN?nQ&GfPBRZHDz4^Pv7_&cIP!=P9 zz5->#jSkBt(C0-DFFJngZ`!*3SSlF#P%7u192mn7^?@Z<(sIYM*6F^OmAtaiXMrEW z{g#E!`6InqO!Y`@H-@iTVxaxtOm|Apd!n-<6x;ws%pvr5; z=8|Q(aOO&gEn6`O)BEAf-l}-Z3l)>7EniUuoKzgfN{&`ow=BK^Zj0r$lX^~DCQX9s z5^POk#pKyvkNKz&Lb@1&QUJq7!+-cqHZ%MTd~IGoDUsE$TUJ(`qHfBbWrN|{rzgdA z*77{7%%_&EUt55ehxks>a@H-&8fxx1%-I2ntmWi2CnF{8(~@f$dR|(xWix&zCB7s( zYF@9n87XC-hBBrje3+!dsn(mw z*Jjs4d-<5XWKY>G_K4kwlJt!P|J`D@*+aN|#a^t9XV=Fh7*k$Gf!asD4Q#V0+c!kw z{@9V_2gviKRczL<5c6kR4Sz~+BSQDLFs3ePAvmZOSR);A9DcclHr9AT_clpYH0$*Te>qj))k}|~Yo^=#m^$|%2iELog{5o=E zY+$0QR^g7(UnmxI5OYZOL!vQg`6Fe&lBO3+UM7_WHypMf>~l~Ia(_&sK%kqt_v-`T z$VoHQI(DA$yxkRV2pmti< z+Gm32L;KjPZzQ6)EPu+9J}}X97sev^Dj@JT`f4a(k1 Date: Fri, 18 Dec 2020 14:28:31 +0100 Subject: [PATCH 7/7] telegram --- include/Global.h | 1 + src/Global.cpp | 5 +++-- src/Telegram.cpp | 22 ++++++++++------------ src/Web.cpp | 11 +++++------ 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/include/Global.h b/include/Global.h index b4ca622a..bdd63086 100644 --- a/include/Global.h +++ b/include/Global.h @@ -54,6 +54,7 @@ extern String configSetupJson; //все настройки extern String configLiveJson; //все данные с датчиков (связан с mqtt) extern String configStoreJson; //все данные которые должны сохраняться extern String configOptionJson; //для трансфера +extern String telegramMsgJson; extern String getValue(String& key); // Mqtt diff --git a/src/Global.cpp b/src/Global.cpp index 1cd2a46c..93db61b1 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -10,7 +10,7 @@ WiFiClient espClient; PubSubClient mqtt(espClient); StringCommand sCmd; AsyncWebServer server(80); -OneWire *oneWire; +OneWire* oneWire; DallasTemperature sensors; /* @@ -25,6 +25,7 @@ String configSetupJson = "{}"; String configLiveJson = "{}"; String configStoreJson = "{}"; String configOptionJson = "{}"; +String telegramMsgJson = "{}"; // Mqtt String chipId = ""; @@ -70,7 +71,7 @@ String presetName; String serverIP; // Scenario -int scenario_line_status[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; +int scenario_line_status[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; int lastVersion; boolean busScanFlag = false; diff --git a/src/Telegram.cpp b/src/Telegram.cpp index 6663b20c..af81e785 100644 --- a/src/Telegram.cpp +++ b/src/Telegram.cpp @@ -70,23 +70,21 @@ void telegramMsgParse(String msg) { } void sendTelegramMsg() { + String id = sCmd.next(); String msg = sCmd.next(); - String type = sCmd.next(); msg.replace("#", " "); - if (type == "1") { - static String prevMsg; - if (prevMsg != msg) { - prevMsg = msg; - if (msg != "na") { - myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), msg); - } - SerialPrint("<-", "Telegram", "chat ID: " + String(jsonReadInt(configSetupJson, "chatId")) + ", msg: " + msg); - } - } - else if (type == "2") { + if (id == "often") { myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), msg); SerialPrint("<-", "Telegram", "chat ID: " + String(jsonReadInt(configSetupJson, "chatId")) + ", msg: " + msg); } + else { + String prevMsg = jsonReadStr(telegramMsgJson, id); + if (prevMsg != msg) { + jsonWriteStr(telegramMsgJson, id, msg); + myBot->sendMessage(jsonReadInt(configSetupJson, "chatId"), msg); + SerialPrint("<-", "Telegram", "chat ID: " + String(jsonReadInt(configSetupJson, "chatId")) + ", msg: " + msg); + } + } } bool isTelegramEnabled() { diff --git a/src/Web.cpp b/src/Web.cpp index 6027fcc5..e3ff767e 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -26,12 +26,11 @@ void web_init() { if (request->hasArg(F("addPreset"))) { addPreset2(request->getParam(F("addPreset"))->value().toInt()); - if (FLASH_SIZE_1MB) { - jsonWriteStr(configSetupJson, F("warning1"), F("

Присеты не доступны, модуль на 1mb

")); - } - else { - jsonWriteStr(configSetupJson, F("warning1"), F("

Требуется перезагрузка

")); - } +#ifdef FLASH_SIZE_1MB + jsonWriteStr(configSetupJson, F("warning1"), F("

Присеты не доступны, модуль на 1mb

")); +#else + jsonWriteStr(configSetupJson, F("warning1"), F("

Требуется перезагрузка

")); +#endif request->redirect(F("/?set.device")); }