From b61cfca3ed4bc59c588d5079fe411ef33a0b9ccc Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 11 Oct 2022 22:33:42 +0200 Subject: [PATCH 1/6] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=B0=20=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=BE=D0=B2=20=D1=81=20=D0=B4?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + data_svelte/items.json | 169 +++++++++++++++++++++++++------------- data_svelte/settings.json | 3 +- include/WsServer.h | 2 +- myProfile.json | 4 +- platformio.ini | 69 ++++++++-------- src/EventsAndOrders.cpp | 4 - src/WsServer.cpp | 10 ++- src/modules/API.cpp | 6 +- 9 files changed, 165 insertions(+), 104 deletions(-) diff --git a/.gitignore b/.gitignore index 65bd8853..41f063ef 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ .vscode/c_cpp_properties.json .vscode/launch.json .vscode/ipch +/myProfile_wm.json +/myProfile.json data_svelte/settings.json diff --git a/data_svelte/items.json b/data_svelte/items.json index 01f1ca76..a0144f04 100644 --- a/data_svelte/items.json +++ b/data_svelte/items.json @@ -276,7 +276,58 @@ "num": 20 }, { - "name": "21. GY21 Температура", + "name": "21. Частотомер на ADC, Частота", + "type": "Reading", + "subtype": "FreqMeterF", + "id": "freq", + "widget": "anydataHtz", + "page": "Частотомер", + "descr": "Частота", + "plus": 0, + "multiply": 1, + "round": 1, + "pin-Esp32": 33, + "samples": 512, + "samplingFrequency": 5000, + "int": 5, + "num": 21 + }, + { + "name": "22. Частотомер на ADC, Процент Пульсации", + "type": "Reading", + "subtype": "FreqMeterPcFl", + "id": "pctFlicker", + "widget": "anydataPct", + "page": "Частотомер", + "descr": "Процент Пульсации", + "plus": 0, + "multiply": 1, + "round": 1, + "pin-Esp32": 33, + "samples": 512, + "samplingFrequency": 5000, + "int": 5, + "num": 22 + }, + { + "name": "23. Частотомер на ADC, Индекс Пульсации", + "type": "Reading", + "subtype": "FreqMeterFlIn", + "id": "flickerIndex", + "widget": "anydataDef", + "page": "Частотомер", + "descr": "Индекс Пульсации", + "plus": 0, + "multiply": 1, + "round": 10, + "pin-Esp32": 33, + "samples": 512, + "samplingFrequency": 5000, + "int": 5, + "num": 23 + }, + { + "name": "24. GY21 Температура", "type": "Reading", "subtype": "GY21t", "id": "tmp4", @@ -285,10 +336,10 @@ "descr": "Температура", "round": 1, "int": 15, - "num": 21 + "num": 24 }, { - "name": "22. GY21 Влажность", + "name": "25. GY21 Влажность", "type": "Reading", "subtype": "GY21h", "id": "Hum4", @@ -297,10 +348,10 @@ "descr": "Влажность", "round": 1, "int": 15, - "num": 22 + "num": 25 }, { - "name": "23. HDC1080 Температура", + "name": "26. HDC1080 Температура", "type": "Reading", "subtype": "Hdc1080t", "id": "Temp1080", @@ -310,10 +361,10 @@ "int": 15, "addr": "0x40", "round": 1, - "num": 23 + "num": 26 }, { - "name": "24. HDC1080 Влажность", + "name": "27. HDC1080 Влажность", "type": "Reading", "subtype": "Hdc1080h", "id": "Hum1080", @@ -323,10 +374,10 @@ "int": 15, "addr": "0x40", "round": 1, - "num": 24 + "num": 27 }, { - "name": "25. MAX6675 Температура", + "name": "28. MAX6675 Температура", "type": "Reading", "subtype": "Max6675t", "id": "maxtmp", @@ -337,10 +388,10 @@ "DO": 12, "CS": 13, "CLK": 14, - "num": 25 + "num": 28 }, { - "name": "26. PZEM 004t Напряжение", + "name": "29. PZEM 004t Напряжение", "type": "Reading", "subtype": "Pzem004v", "id": "v", @@ -350,10 +401,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 26 + "num": 29 }, { - "name": "27. PZEM 004t Сила тока", + "name": "30. PZEM 004t Сила тока", "type": "Reading", "subtype": "Pzem004a", "id": "a", @@ -363,10 +414,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 27 + "num": 30 }, { - "name": "28. PZEM 004t Мощность", + "name": "31. PZEM 004t Мощность", "type": "Reading", "subtype": "Pzem004w", "id": "w", @@ -376,10 +427,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 28 + "num": 31 }, { - "name": "29. PZEM 004t Энергия", + "name": "32. PZEM 004t Энергия", "type": "Reading", "subtype": "Pzem004wh", "id": "wh", @@ -389,10 +440,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 29 + "num": 32 }, { - "name": "30. PZEM 004t Частота", + "name": "33. PZEM 004t Частота", "type": "Reading", "subtype": "Pzem004hz", "id": "hz", @@ -402,10 +453,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 30 + "num": 33 }, { - "name": "31. PZEM 004t Косинус", + "name": "34. PZEM 004t Косинус", "type": "Reading", "subtype": "Pzem004pf", "id": "pf", @@ -415,11 +466,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 31 + "num": 34 }, { - "name": "32. Сканер кнопок 433 MHz", - "num": 32, + "name": "35. Сканер кнопок 433 MHz", + "num": 35, "type": "Reading", "subtype": "RCswitch", "id": "rsw", @@ -428,7 +479,7 @@ "pinTx": 12 }, { - "name": "33. Sht20 Температура", + "name": "36. Sht20 Температура", "type": "Reading", "subtype": "Sht20t", "id": "tmp2", @@ -437,10 +488,10 @@ "descr": "Температура", "int": 15, "round": 1, - "num": 33 + "num": 36 }, { - "name": "34. Sht20 Влажность", + "name": "37. Sht20 Влажность", "type": "Reading", "subtype": "Sht20h", "id": "Hum2", @@ -449,10 +500,10 @@ "descr": "Влажность", "int": 15, "round": 1, - "num": 34 + "num": 37 }, { - "name": "35. Sht30 Температура", + "name": "38. Sht30 Температура", "type": "Reading", "subtype": "Sht30t", "id": "tmp30", @@ -461,10 +512,10 @@ "descr": "SHT30 Температура", "int": 15, "round": 1, - "num": 35 + "num": 38 }, { - "name": "36. Sht30 Влажность", + "name": "39. Sht30 Влажность", "type": "Reading", "subtype": "Sht30h", "id": "Hum30", @@ -473,11 +524,11 @@ "descr": "SHT30 Влажность", "int": 15, "round": 1, - "num": 36 + "num": 39 }, { - "name": "37. HC-SR04 Ультразвуковой дальномер", - "num": 37, + "name": "40. HC-SR04 Ультразвуковой дальномер", + "num": 40, "type": "Reading", "subtype": "Sonar", "id": "sonar", @@ -489,7 +540,7 @@ "int": 5 }, { - "name": "38. UART", + "name": "41. UART", "type": "Reading", "subtype": "UART", "page": "", @@ -499,13 +550,13 @@ "tx": 12, "rx": 13, "speed": 9600, - "num": 38 + "num": 41 }, { "header": "Исполнительные устройства" }, { - "name": "39. Кнопка подключенная к пину", + "name": "42. Кнопка подключенная к пину", "type": "Writing", "subtype": "ButtonIn", "id": "btn", @@ -518,10 +569,10 @@ "pinMode": "INPUT", "debounceDelay": 50, "fixState": 0, - "num": 39 + "num": 42 }, { - "name": "40. Управление пином", + "name": "43. Управление пином", "type": "Writing", "subtype": "ButtonOut", "id": "btn", @@ -531,10 +582,10 @@ "int": 0, "inv": 0, "pin": 2, - "num": 40 + "num": 43 }, { - "name": "41. Сервопривод", + "name": "44. Сервопривод", "type": "Writing", "subtype": "IoTServo", "id": "servo", @@ -545,10 +596,10 @@ "pin": 12, "apin": -1, "amap": "0, 4096, 0, 180", - "num": 41 + "num": 44 }, { - "name": "42. Расширитель портов Mcp23017", + "name": "45. Расширитель портов Mcp23017", "type": "Reading", "subtype": "Mcp23017", "id": "Mcp", @@ -558,10 +609,10 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 42 + "num": 45 }, { - "name": "43. MP3 плеер", + "name": "46. MP3 плеер", "type": "Reading", "subtype": "Mp3", "id": "mp3", @@ -571,10 +622,10 @@ "int": 1, "pins": "14,12", "volume": 20, - "num": 43 + "num": 46 }, { - "name": "44. Расширитель портов Pcf8574", + "name": "47. Расширитель портов Pcf8574", "type": "Reading", "subtype": "Pcf8574", "id": "Pcf", @@ -584,25 +635,27 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 44 + "num": 47 }, { - "name": "45. PWM ESP8266", + "name": "48. PWM ESP32", "type": "Writing", - "subtype": "Pwm8266", + "subtype": "Pwm32", "id": "pwm", "widget": "range", "page": "Кнопки", "descr": "PWM", "int": 0, - "pin": 15, + "pin": 2, "freq": 5000, + "ledChannel": 2, + "PWM_resolution": 10, "val": 0, "apin": -1, - "num": 45 + "num": 48 }, { - "name": "46. Телеграм-Лайт", + "name": "49. Телеграм-Лайт", "type": "Writing", "subtype": "TelegramLT", "id": "tg", @@ -611,13 +664,13 @@ "descr": "", "token": "", "chatID": "", - "num": 46 + "num": 49 }, { "header": "Экраны" }, { - "name": "47. LCD экран 2004", + "name": "50. LCD экран 2004", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -629,10 +682,10 @@ "size": "20,4", "coord": "0,0", "id2show": "id датчика", - "num": 47 + "num": 50 }, { - "name": "48. LCD экран 1602", + "name": "51. LCD экран 1602", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -644,6 +697,6 @@ "size": "16,2", "coord": "0,0", "id2show": "id датчика", - "num": 48 + "num": 51 } ] \ No newline at end of file diff --git a/data_svelte/settings.json b/data_svelte/settings.json index bfeb5544..f83115c2 100644 --- a/data_svelte/settings.json +++ b/data_svelte/settings.json @@ -18,5 +18,6 @@ "mqttin": 0, "pinSCL": 0, "pinSDA": 0, - "i2cFreq": 100000 + "i2cFreq": 100000, + "settings_": "" } \ No newline at end of file diff --git a/include/WsServer.h b/include/WsServer.h index ff08d671..89955c13 100644 --- a/include/WsServer.h +++ b/include/WsServer.h @@ -17,5 +17,5 @@ void publishStatusWs(const String& topic, const String& data); void publishChartWs(int num, String& path); void periodicWsSend(); -void sendFileToWsByFrames(const String& filename, const String& header, const String& json, uint8_t client_id, size_t frameSize); +void sendFileToWsByFrames(const String& filename, const String& header, const String& json, int client_id, size_t frameSize); void sendStringToWs(const String& header, String& payload, int client_id); \ No newline at end of file diff --git a/myProfile.json b/myProfile.json index 18e1f5bc..6c54469d 100644 --- a/myProfile.json +++ b/myProfile.json @@ -24,7 +24,7 @@ }, "projectProp": { "platformio": { - "default_envs": "esp8266_4mb", + "default_envs": "esp32_4mb", "data_dir": "data_svelte" } }, @@ -90,7 +90,7 @@ }, { "path": "src/modules/sensors/FreqMeter", - "active": false + "active": true }, { "path": "src/modules/sensors/GY21", diff --git a/platformio.ini b/platformio.ini index 971984a1..cbe86766 100644 --- a/platformio.ini +++ b/platformio.ini @@ -41,7 +41,7 @@ build_src_filter = ${env:esp32_4mb_fromitems.build_src_filter} [platformio] -default_envs = esp8266_4mb +default_envs = esp32_4mb data_dir = data_svelte [common_env_data] @@ -57,6 +57,7 @@ lib_deps = adafruit/Adafruit BMP280 Library beegee-tokyo/DHT sensor library for ESPx milesburton/DallasTemperature@^3.9.1 + kosme/arduinoFFT@^1.5.6 https://github.com/JonasGMorsch/GY-21.git ClosedCube HDC1080 adafruit/MAX6675 library @@ -82,6 +83,7 @@ build_src_filter = + + + + + + + + @@ -103,15 +105,15 @@ build_src_filter = [env:esp32_4mb_fromitems] lib_deps = - Adafruit AHTX0 + https://github.com/enjoyneering/AHTxx.git adafruit/Adafruit BME280 Library adafruit/Adafruit BMP280 Library beegee-tokyo/DHT sensor library for ESPx milesburton/DallasTemperature@^3.9.1 + kosme/arduinoFFT@^1.5.6 https://github.com/JonasGMorsch/GY-21.git ClosedCube HDC1080 adafruit/MAX6675 library - mandulaj/PZEM-004T-v30 rc-switch @ ^2.6.4 robtillaart/SHT2x@^0.1.1 WEMOS SHT3x@1.0.0 @@ -120,35 +122,38 @@ lib_deps = adafruit/Adafruit MCP23017 Arduino Library@^2.1.0 adafruit/Adafruit BusIO @ ^1.13.2 dfrobot/DFRobotDFPlayerMini @ ^1.0.5 + adafruit/Adafruit BusIO @ ^1.13.2 marcoschwartz/LiquidCrystal_I2C@^1.1.4 build_src_filter = - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/EventsAndOrders.cpp b/src/EventsAndOrders.cpp index bb6db4a9..2af00a66 100644 --- a/src/EventsAndOrders.cpp +++ b/src/EventsAndOrders.cpp @@ -27,10 +27,6 @@ void handleOrder() { String id = selectToMarker(order, " "); - //это модификатор для даты графика - // if (id.endsWith("-date")) { - //} - //здесь нужно перебрать все методы execute всех векторов и выполнить те id которых совпали с id события IoTItem* item = findIoTItem(id); if (item) { diff --git a/src/WsServer.cpp b/src/WsServer.cpp index b6f03380..5ec5a937 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -292,7 +292,7 @@ void hexdump(const void* mem, uint32_t len, uint8_t cols = 16) { #endif #endif -void sendFileToWsByFrames(const String& filename, const String& header, const String& json, uint8_t client_id, size_t frameSize) { +void sendFileToWsByFrames(const String& filename, const String& header, const String& json, int client_id, size_t frameSize) { if (header.length() != 6) { SerialPrint("E", "FS", F("wrong header size")); return; @@ -305,8 +305,8 @@ void sendFileToWsByFrames(const String& filename, const String& header, const St return; } - // size_t totalSize = file.size(); - // Serial.println("Send file '" + String(filename) + "', file size: " + String(totalSize)); + size_t totalSize = file.size(); + Serial.println("Send file '" + String(filename) + "', file size: " + String(totalSize)); char buf[32]; sprintf(buf, "%04d", json.length() + 12); @@ -346,9 +346,11 @@ void sendFileToWsByFrames(const String& filename, const String& header, const St continuation = true; } - // Serial.println(String(i) + ") fr sz: " + String(size) + " fin: " + String(fin) + " cnt: " + String(continuation)); + Serial.println(String(i) + ") " + "ws: " + String(client_id) + " fr sz: " + String(size) + " fin: " + String(fin) + " cnt: " + String(continuation)); + if (client_id == -1) { standWebSocket.broadcastBIN(frameBuf, size, fin, continuation); + } else { standWebSocket.sendBIN(client_id, frameBuf, size, fin, continuation); } diff --git a/src/modules/API.cpp b/src/modules/API.cpp index ab864765..f23adb0d 100644 --- a/src/modules/API.cpp +++ b/src/modules/API.cpp @@ -12,6 +12,7 @@ void* getAPI_Bme280(String subtype, String params); void* getAPI_Bmp280(String subtype, String params); void* getAPI_Dht1122(String subtype, String params); void* getAPI_Ds18b20(String subtype, String params); +void* getAPI_FreqMeter(String subtype, String params); void* getAPI_GY21(String subtype, String params); void* getAPI_Hdc1080(String subtype, String params); void* getAPI_Max6675(String subtype, String params); @@ -27,7 +28,7 @@ void* getAPI_IoTServo(String subtype, String params); void* getAPI_Mcp23017(String subtype, String params); void* getAPI_Mp3(String subtype, String params); void* getAPI_Pcf8574(String subtype, String params); -void* getAPI_Pwm8266(String subtype, String params); +void* getAPI_Pwm32(String subtype, String params); void* getAPI_TelegramLT(String subtype, String params); void* getAPI_Lcd2004(String subtype, String params); @@ -45,6 +46,7 @@ if ((tmpAPI = getAPI_Bme280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Bmp280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Dht1122(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Ds18b20(subtype, params)) != nullptr) return tmpAPI; +if ((tmpAPI = getAPI_FreqMeter(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_GY21(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Hdc1080(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Max6675(subtype, params)) != nullptr) return tmpAPI; @@ -60,7 +62,7 @@ if ((tmpAPI = getAPI_IoTServo(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Mcp23017(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Mp3(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Pcf8574(subtype, params)) != nullptr) return tmpAPI; -if ((tmpAPI = getAPI_Pwm8266(subtype, params)) != nullptr) return tmpAPI; +if ((tmpAPI = getAPI_Pwm32(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_TelegramLT(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Lcd2004(subtype, params)) != nullptr) return tmpAPI; return nullptr; From 2c7adf468b248c1e87bb1240f5b267914aa4f1d5 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 11 Oct 2022 23:37:58 +0200 Subject: [PATCH 2/6] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=B0=20=D1=81?= =?UTF-8?q?=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WsServer.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/WsServer.cpp b/src/WsServer.cpp index 5ec5a937..b0833d0d 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -134,23 +134,23 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) if (headerStr == "/sgnittes|") { writeUint8tToString(payload, length, headerLenth, settingsFlashJson); writeFileUint8tByFrames("settings.json", payload, length, headerLenth, 256); - standWebSocket.sendTXT(num, errorsHeapJson); + sendStringToWs("errors", errorsHeapJson, num); addThisDeviceToList(); } //обработка кнопки сохранить настройки mqtt if (headerStr == "/mqtt|") { - standWebSocket.sendTXT(num, settingsFlashJson); //отправляем в ответ новые полученные настройки - handleMqttStatus(false, 8); //меняем статус на неопределенный - mqttReconnect(); //начинаем переподключение - standWebSocket.sendTXT(num, errorsHeapJson); //отправляем что статус неопределен - standWebSocket.sendTXT(num, ssidListHeapJson); + sendStringToWs("settin", settingsFlashJson, num); //отправляем в ответ новые полученные настройки + handleMqttStatus(false, 8); //меняем статус на неопределенный + mqttReconnect(); //начинаем переподключение + sendStringToWs("errors", errorsHeapJson, num); //отправляем что статус неопределен + sendStringToWs("ssidli", ssidListHeapJson, num); } //запуск асинхронного сканирования wifi сетей при нажатии выпадающего списка if (headerStr == "/scan|") { RouterFind(jsonReadStr(settingsFlashJson, F("routerssid"))); - standWebSocket.sendTXT(num, ssidListHeapJson); + sendStringToWs("ssidli", ssidListHeapJson, num); } //----------------------------------------------------------------------// From 6912d5f68d5584be3d12a9897091d86eb872d37c Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Wed, 12 Oct 2022 03:14:55 +0200 Subject: [PATCH 3/6] =?UTF-8?q?=D1=83=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_svelte/items.json | 163 +++++++++++++------------------------- data_svelte/settings.json | 1 + include/Const.h | 2 + include/Global.h | 2 + include/PeriodicTasks.h | 3 - myProfile.json | 5 +- platformio.ini | 4 - src/DeviceList.cpp | 9 ++- src/Global.cpp | 2 + src/Main.cpp | 78 +++++++++--------- src/MqttClient.cpp | 2 +- src/NTP.cpp | 2 + src/PeriodicTasks.cpp | 8 -- src/WsServer.cpp | 18 +++-- src/modules/API.cpp | 2 - src/utils/JsonUtils.cpp | 9 ++- 16 files changed, 126 insertions(+), 184 deletions(-) diff --git a/data_svelte/items.json b/data_svelte/items.json index a0144f04..d0759e6b 100644 --- a/data_svelte/items.json +++ b/data_svelte/items.json @@ -276,58 +276,7 @@ "num": 20 }, { - "name": "21. Частотомер на ADC, Частота", - "type": "Reading", - "subtype": "FreqMeterF", - "id": "freq", - "widget": "anydataHtz", - "page": "Частотомер", - "descr": "Частота", - "plus": 0, - "multiply": 1, - "round": 1, - "pin-Esp32": 33, - "samples": 512, - "samplingFrequency": 5000, - "int": 5, - "num": 21 - }, - { - "name": "22. Частотомер на ADC, Процент Пульсации", - "type": "Reading", - "subtype": "FreqMeterPcFl", - "id": "pctFlicker", - "widget": "anydataPct", - "page": "Частотомер", - "descr": "Процент Пульсации", - "plus": 0, - "multiply": 1, - "round": 1, - "pin-Esp32": 33, - "samples": 512, - "samplingFrequency": 5000, - "int": 5, - "num": 22 - }, - { - "name": "23. Частотомер на ADC, Индекс Пульсации", - "type": "Reading", - "subtype": "FreqMeterFlIn", - "id": "flickerIndex", - "widget": "anydataDef", - "page": "Частотомер", - "descr": "Индекс Пульсации", - "plus": 0, - "multiply": 1, - "round": 10, - "pin-Esp32": 33, - "samples": 512, - "samplingFrequency": 5000, - "int": 5, - "num": 23 - }, - { - "name": "24. GY21 Температура", + "name": "21. GY21 Температура", "type": "Reading", "subtype": "GY21t", "id": "tmp4", @@ -336,10 +285,10 @@ "descr": "Температура", "round": 1, "int": 15, - "num": 24 + "num": 21 }, { - "name": "25. GY21 Влажность", + "name": "22. GY21 Влажность", "type": "Reading", "subtype": "GY21h", "id": "Hum4", @@ -348,10 +297,10 @@ "descr": "Влажность", "round": 1, "int": 15, - "num": 25 + "num": 22 }, { - "name": "26. HDC1080 Температура", + "name": "23. HDC1080 Температура", "type": "Reading", "subtype": "Hdc1080t", "id": "Temp1080", @@ -361,10 +310,10 @@ "int": 15, "addr": "0x40", "round": 1, - "num": 26 + "num": 23 }, { - "name": "27. HDC1080 Влажность", + "name": "24. HDC1080 Влажность", "type": "Reading", "subtype": "Hdc1080h", "id": "Hum1080", @@ -374,10 +323,10 @@ "int": 15, "addr": "0x40", "round": 1, - "num": 27 + "num": 24 }, { - "name": "28. MAX6675 Температура", + "name": "25. MAX6675 Температура", "type": "Reading", "subtype": "Max6675t", "id": "maxtmp", @@ -388,10 +337,10 @@ "DO": 12, "CS": 13, "CLK": 14, - "num": 28 + "num": 25 }, { - "name": "29. PZEM 004t Напряжение", + "name": "26. PZEM 004t Напряжение", "type": "Reading", "subtype": "Pzem004v", "id": "v", @@ -401,10 +350,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 29 + "num": 26 }, { - "name": "30. PZEM 004t Сила тока", + "name": "27. PZEM 004t Сила тока", "type": "Reading", "subtype": "Pzem004a", "id": "a", @@ -414,10 +363,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 30 + "num": 27 }, { - "name": "31. PZEM 004t Мощность", + "name": "28. PZEM 004t Мощность", "type": "Reading", "subtype": "Pzem004w", "id": "w", @@ -427,10 +376,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 31 + "num": 28 }, { - "name": "32. PZEM 004t Энергия", + "name": "29. PZEM 004t Энергия", "type": "Reading", "subtype": "Pzem004wh", "id": "wh", @@ -440,10 +389,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 32 + "num": 29 }, { - "name": "33. PZEM 004t Частота", + "name": "30. PZEM 004t Частота", "type": "Reading", "subtype": "Pzem004hz", "id": "hz", @@ -453,10 +402,10 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 33 + "num": 30 }, { - "name": "34. PZEM 004t Косинус", + "name": "31. PZEM 004t Косинус", "type": "Reading", "subtype": "Pzem004pf", "id": "pf", @@ -466,11 +415,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 34 + "num": 31 }, { - "name": "35. Сканер кнопок 433 MHz", - "num": 35, + "name": "32. Сканер кнопок 433 MHz", + "num": 32, "type": "Reading", "subtype": "RCswitch", "id": "rsw", @@ -479,7 +428,7 @@ "pinTx": 12 }, { - "name": "36. Sht20 Температура", + "name": "33. Sht20 Температура", "type": "Reading", "subtype": "Sht20t", "id": "tmp2", @@ -488,10 +437,10 @@ "descr": "Температура", "int": 15, "round": 1, - "num": 36 + "num": 33 }, { - "name": "37. Sht20 Влажность", + "name": "34. Sht20 Влажность", "type": "Reading", "subtype": "Sht20h", "id": "Hum2", @@ -500,10 +449,10 @@ "descr": "Влажность", "int": 15, "round": 1, - "num": 37 + "num": 34 }, { - "name": "38. Sht30 Температура", + "name": "35. Sht30 Температура", "type": "Reading", "subtype": "Sht30t", "id": "tmp30", @@ -512,10 +461,10 @@ "descr": "SHT30 Температура", "int": 15, "round": 1, - "num": 38 + "num": 35 }, { - "name": "39. Sht30 Влажность", + "name": "36. Sht30 Влажность", "type": "Reading", "subtype": "Sht30h", "id": "Hum30", @@ -524,11 +473,11 @@ "descr": "SHT30 Влажность", "int": 15, "round": 1, - "num": 39 + "num": 36 }, { - "name": "40. HC-SR04 Ультразвуковой дальномер", - "num": 40, + "name": "37. HC-SR04 Ультразвуковой дальномер", + "num": 37, "type": "Reading", "subtype": "Sonar", "id": "sonar", @@ -540,7 +489,7 @@ "int": 5 }, { - "name": "41. UART", + "name": "38. UART", "type": "Reading", "subtype": "UART", "page": "", @@ -550,13 +499,13 @@ "tx": 12, "rx": 13, "speed": 9600, - "num": 41 + "num": 38 }, { "header": "Исполнительные устройства" }, { - "name": "42. Кнопка подключенная к пину", + "name": "39. Кнопка подключенная к пину", "type": "Writing", "subtype": "ButtonIn", "id": "btn", @@ -569,10 +518,10 @@ "pinMode": "INPUT", "debounceDelay": 50, "fixState": 0, - "num": 42 + "num": 39 }, { - "name": "43. Управление пином", + "name": "40. Управление пином", "type": "Writing", "subtype": "ButtonOut", "id": "btn", @@ -582,10 +531,10 @@ "int": 0, "inv": 0, "pin": 2, - "num": 43 + "num": 40 }, { - "name": "44. Сервопривод", + "name": "41. Сервопривод", "type": "Writing", "subtype": "IoTServo", "id": "servo", @@ -596,10 +545,10 @@ "pin": 12, "apin": -1, "amap": "0, 4096, 0, 180", - "num": 44 + "num": 41 }, { - "name": "45. Расширитель портов Mcp23017", + "name": "42. Расширитель портов Mcp23017", "type": "Reading", "subtype": "Mcp23017", "id": "Mcp", @@ -609,10 +558,10 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 45 + "num": 42 }, { - "name": "46. MP3 плеер", + "name": "43. MP3 плеер", "type": "Reading", "subtype": "Mp3", "id": "mp3", @@ -622,10 +571,10 @@ "int": 1, "pins": "14,12", "volume": 20, - "num": 46 + "num": 43 }, { - "name": "47. Расширитель портов Pcf8574", + "name": "44. Расширитель портов Pcf8574", "type": "Reading", "subtype": "Pcf8574", "id": "Pcf", @@ -635,10 +584,10 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 47 + "num": 44 }, { - "name": "48. PWM ESP32", + "name": "45. PWM ESP32", "type": "Writing", "subtype": "Pwm32", "id": "pwm", @@ -652,10 +601,10 @@ "PWM_resolution": 10, "val": 0, "apin": -1, - "num": 48 + "num": 45 }, { - "name": "49. Телеграм-Лайт", + "name": "46. Телеграм-Лайт", "type": "Writing", "subtype": "TelegramLT", "id": "tg", @@ -664,13 +613,13 @@ "descr": "", "token": "", "chatID": "", - "num": 49 + "num": 46 }, { "header": "Экраны" }, { - "name": "50. LCD экран 2004", + "name": "47. LCD экран 2004", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -682,10 +631,10 @@ "size": "20,4", "coord": "0,0", "id2show": "id датчика", - "num": 50 + "num": 47 }, { - "name": "51. LCD экран 1602", + "name": "48. LCD экран 1602", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -697,6 +646,6 @@ "size": "16,2", "coord": "0,0", "id2show": "id датчика", - "num": 51 + "num": 48 } ] \ No newline at end of file diff --git a/data_svelte/settings.json b/data_svelte/settings.json index f83115c2..affb351a 100644 --- a/data_svelte/settings.json +++ b/data_svelte/settings.json @@ -19,5 +19,6 @@ "pinSCL": 0, "pinSDA": 0, "i2cFreq": 100000, + "wg": "group1", "settings_": "" } \ No newline at end of file diff --git a/include/Const.h b/include/Const.h index 37cfccba..53535968 100644 --- a/include/Const.h +++ b/include/Const.h @@ -15,6 +15,8 @@ #define JSON_BUFFER_SIZE 2048 #define WEB_SOCKETS_FRAME_SIZE 2048 +//#define LOOP_DEBUG + //выбор сервера //#define ASYNC_WEB_SERVER //#define ASYNC_WEB_SOCKETS diff --git a/include/Global.h b/include/Global.h index 558ace8f..3f036530 100644 --- a/include/Global.h +++ b/include/Global.h @@ -137,6 +137,8 @@ extern Time_t _time_local; extern Time_t _time_utc; extern bool _time_isTrust; +extern unsigned long loopPeriod; + // extern DynamicJsonDocument settingsFlashJsonDoc; // extern DynamicJsonDocument paramsFlashJsonDoc; // extern DynamicJsonDocument paramsHeapJsonDoc; diff --git a/include/PeriodicTasks.h b/include/PeriodicTasks.h index eee9d1d5..c9a27a9e 100644 --- a/include/PeriodicTasks.h +++ b/include/PeriodicTasks.h @@ -10,8 +10,5 @@ extern void periodicTasksInit(); extern void printGlobalVarSize(); -extern void handleError(String errorId, String errorValue); -extern void handleError(String errorId, int errorValue); - extern String ESP_getResetReason(void); extern String ESP32GetResetReason(uint32_t cpu_no); \ No newline at end of file diff --git a/myProfile.json b/myProfile.json index 6c54469d..13008892 100644 --- a/myProfile.json +++ b/myProfile.json @@ -20,7 +20,8 @@ "mqttin": 0, "pinSCL": 0, "pinSDA": 0, - "i2cFreq": 100000 + "i2cFreq": 100000, + "wg": "group1" }, "projectProp": { "platformio": { @@ -90,7 +91,7 @@ }, { "path": "src/modules/sensors/FreqMeter", - "active": true + "active": false }, { "path": "src/modules/sensors/GY21", diff --git a/platformio.ini b/platformio.ini index cbe86766..847689e4 100644 --- a/platformio.ini +++ b/platformio.ini @@ -57,7 +57,6 @@ lib_deps = adafruit/Adafruit BMP280 Library beegee-tokyo/DHT sensor library for ESPx milesburton/DallasTemperature@^3.9.1 - kosme/arduinoFFT@^1.5.6 https://github.com/JonasGMorsch/GY-21.git ClosedCube HDC1080 adafruit/MAX6675 library @@ -83,7 +82,6 @@ build_src_filter = + + + - + + + + @@ -110,7 +108,6 @@ lib_deps = adafruit/Adafruit BMP280 Library beegee-tokyo/DHT sensor library for ESPx milesburton/DallasTemperature@^3.9.1 - kosme/arduinoFFT@^1.5.6 https://github.com/JonasGMorsch/GY-21.git ClosedCube HDC1080 adafruit/MAX6675 library @@ -137,7 +134,6 @@ build_src_filter = + + + - + + + + diff --git a/src/DeviceList.cpp b/src/DeviceList.cpp index d2f97724..9e5d99c2 100644 --- a/src/DeviceList.cpp +++ b/src/DeviceList.cpp @@ -2,7 +2,8 @@ const String getThisDevice() { String thisDevice = "{}"; - jsonWriteStr_(thisDevice, F("devicelist_"), ""); //метка для парсинга нужна для udp валидации может быть рабочей группой в последствии + jsonWriteStr_(thisDevice, F("devicelist_"), ""); //метка для парсинга + jsonWriteStr_(thisDevice, F("wg"), jsonReadStr(settingsFlashJson, F("wg"))); //рабочая группа jsonWriteStr_(thisDevice, F("ip"), jsonReadStr(settingsFlashJson, F("ip"))); jsonWriteStr_(thisDevice, F("id"), jsonReadStr(settingsFlashJson, F("id"))); jsonWriteStr_(thisDevice, F("name"), jsonReadStr(settingsFlashJson, F("name"))); @@ -52,7 +53,7 @@ void asyncUdpInit() { }); } - //будем отправлять каждые 30 секунд презентацию данного устройства + //будем отправлять каждые 60 секунд презентацию данного устройства ts.add( UDP, 60000, [&](void*) { // UDPP if (isNetworkActive()) { @@ -68,7 +69,9 @@ void asyncUdpInit() { } bool udpPacketValidation(String& data) { - if (data.indexOf("devicelist_") != -1) { + // SerialPrint("i", F("UDP"), data); + String workgroup = jsonReadStr(settingsFlashJson, "wg"); + if (workgroup != "" && data.indexOf(workgroup) != -1) { return true; } else { return false; diff --git a/src/Global.cpp b/src/Global.cpp index 5aa28dea..b05c868e 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -68,6 +68,8 @@ String mqttRootDevice = ""; unsigned long unixTime = 0; unsigned long unixTimeShort = 0; +unsigned long loopPeriod; + bool isTimeSynch = false; Time_t _time_local; Time_t _time_utc; diff --git a/src/Main.cpp b/src/Main.cpp index 16448d34..dce96513 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -116,38 +116,22 @@ void setup() { } void loop() { - // if(millis()%2000==0){ - // //watch->settimeUnix(time(&iotTimeNow)); - // Serial.println(watch->gettime("d-m-Y, H:i:s, M")); - // delay(1); - // } - - //обновление задач таскера - ts.update(); - -//отправка json -#ifdef QUEUE_FROM_STR - if (sendJsonFiles) sendJsonFiles->loop(); +#ifdef LOOP_DEBUG + unsigned long st = millis(); #endif + ts.update(); + #ifdef STANDARD_WEB_SERVER - //обработка web сервера 1 HTTP.handleClient(); #endif #ifdef STANDARD_WEB_SOCKETS - //обработка web сокетов standWebSocket.loop(); #endif - //обновление mqtt mqttLoop(); -#ifdef STANDARD_WEB_SERVER - //обработка web сервера 2 - // HTTP.handleClient(); -#endif - // передаем управление каждому элементу конфигурации для выполнения своих функций for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { (*it)->loop(); @@ -159,33 +143,43 @@ void loop() { } handleOrder(); - handleEvent(); -#ifdef STANDARD_WEB_SERVER - //обработка web сервера 3 - // HTTP.handleClient(); +#ifdef LOOP_DEBUG + loopPeriod = millis() - st; + if (loopPeriod > 2) Serial.println(loopPeriod); #endif - - // сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение) - // currentMillis = millis(); - // if (currentMillis - prevMillis >= 1000) { - // prevMillis = millis(); - // volStrForSave = ""; - // for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { - // if ((*it)->needSave) { - // (*it)->needSave = false; - // volStrForSave = volStrForSave + (*it)->getID() + "=" + (*it)->getValue() + ";"; - // } - // } - // - // if (volStrForSave != "") { - // Serial.print("volStrForSave: "); - // Serial.println(volStrForSave.c_str()); - // } - //} } +//отправка json +//#ifdef QUEUE_FROM_STR +// if (sendJsonFiles) sendJsonFiles->loop(); +//#endif + +// if(millis()%2000==0){ +// //watch->settimeUnix(time(&iotTimeNow)); +// Serial.println(watch->gettime("d-m-Y, H:i:s, M")); +// delay(1); +// } + +// сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение) +// currentMillis = millis(); +// if (currentMillis - prevMillis >= 1000) { +// prevMillis = millis(); +// volStrForSave = ""; +// for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { +// if ((*it)->needSave) { +// (*it)->needSave = false; +// volStrForSave = volStrForSave + (*it)->getID() + "=" + (*it)->getValue() + ";"; +// } +// } +// +// if (volStrForSave != "") { +// Serial.print("volStrForSave: "); +// Serial.println(volStrForSave.c_str()); +// } +//} + // File dir = FileFS.open("/", "r"); // String out; // printDirectory(dir, out); diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 7fa2c7ef..90691b43 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -278,7 +278,7 @@ void publishWidgets() { DeserializationError error = deserializeJson(doc, file); if (error) { SerialPrint("E", F("MQTT"), error.f_str()); - handleError("jse3", 1); + jsonWriteInt(errorsHeapJson, F("jse3"), 1); //Ошибка чтения json файла с виджетами при отправки в mqtt } JsonArray arr = doc.as(); for (JsonVariant value : arr) { diff --git a/src/NTP.cpp b/src/NTP.cpp index 495ff9d2..e2f83178 100644 --- a/src/NTP.cpp +++ b/src/NTP.cpp @@ -13,9 +13,11 @@ void ntpInit() { if (unixTime < MIN_DATETIME) { isTimeSynch = false; // SerialPrint("E", "NTP", "Time not synched"); + jsonWriteInt(errorsHeapJson, F("tme1"), 1); synchTime(); return; } + jsonWriteInt(errorsHeapJson, F("tme1"), 0); breakEpochToTime(unixTime + jsonReadInt(settingsFlashJson, F("timezone")) * 60 * 60, _time_local); breakEpochToTime(unixTime, _time_utc); isTimeSynch = true; diff --git a/src/PeriodicTasks.cpp b/src/PeriodicTasks.cpp index 9885aafc..e44f5ecc 100644 --- a/src/PeriodicTasks.cpp +++ b/src/PeriodicTasks.cpp @@ -31,14 +31,6 @@ void periodicTasksInit() { SerialPrint("i", "Task", "Periodic tasks init"); } -void handleError(String errorId, String errorValue) { - jsonWriteStr_(errorsHeapJson, errorId, errorValue); -} - -void handleError(String errorId, int errorValue) { - jsonWriteInt_(errorsHeapJson, errorId, errorValue); -} - void printGlobalVarSize() { size_t settingsFlashJsonSize = settingsFlashJson.length(); // SerialPrint(F("i"), F("settingsFlashJson"), String(settingsFlashJsonSize)); diff --git a/src/WsServer.cpp b/src/WsServer.cpp index b0833d0d..50ad076b 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -176,10 +176,14 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) // Страница веб интерфейса dev //----------------------------------------------------------------------// if (headerStr == "/dev|") { - // standWebSocket.sendTXT(num, errorsHeapJson); - // standWebSocket.sendTXT(num, settingsFlashJson); - // sendFileToWs("/config.json", num, 1024); - // sendFileToWs("/items.json", num, 1024); + sendStringToWs("errors", errorsHeapJson, num); + sendStringToWs("settin", settingsFlashJson, num); + sendFileToWsByFrames("/config.json", "config", "", num, WEB_SOCKETS_FRAME_SIZE); + sendFileToWsByFrames("/items.json", "itemsj", "", num, WEB_SOCKETS_FRAME_SIZE); + // sendFileToWsByFrames("/layout.json", "layout", "", num, WEB_SOCKETS_FRAME_SIZE); + } + + if (headerStr == "/test|") { } //----------------------------------------------------------------------// @@ -216,8 +220,6 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) SerialPrint("i", F("=>WS"), "Msg from svelte web, WS No: " + String(num) + ", msg: " + msg); } - if (headerStr == "/test|") { - } } break; case WStype_BIN: { @@ -306,7 +308,7 @@ void sendFileToWsByFrames(const String& filename, const String& header, const St } size_t totalSize = file.size(); - Serial.println("Send file '" + String(filename) + "', file size: " + String(totalSize)); + // Serial.println("Send file '" + String(filename) + "', file size: " + String(totalSize)); char buf[32]; sprintf(buf, "%04d", json.length() + 12); @@ -346,7 +348,7 @@ void sendFileToWsByFrames(const String& filename, const String& header, const St continuation = true; } - Serial.println(String(i) + ") " + "ws: " + String(client_id) + " fr sz: " + String(size) + " fin: " + String(fin) + " cnt: " + String(continuation)); + // Serial.println(String(i) + ") " + "ws: " + String(client_id) + " fr sz: " + String(size) + " fin: " + String(fin) + " cnt: " + String(continuation)); if (client_id == -1) { standWebSocket.broadcastBIN(frameBuf, size, fin, continuation); diff --git a/src/modules/API.cpp b/src/modules/API.cpp index f23adb0d..2f6e4f3b 100644 --- a/src/modules/API.cpp +++ b/src/modules/API.cpp @@ -12,7 +12,6 @@ void* getAPI_Bme280(String subtype, String params); void* getAPI_Bmp280(String subtype, String params); void* getAPI_Dht1122(String subtype, String params); void* getAPI_Ds18b20(String subtype, String params); -void* getAPI_FreqMeter(String subtype, String params); void* getAPI_GY21(String subtype, String params); void* getAPI_Hdc1080(String subtype, String params); void* getAPI_Max6675(String subtype, String params); @@ -46,7 +45,6 @@ if ((tmpAPI = getAPI_Bme280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Bmp280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Dht1122(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Ds18b20(subtype, params)) != nullptr) return tmpAPI; -if ((tmpAPI = getAPI_FreqMeter(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_GY21(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Hdc1080(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Max6675(subtype, params)) != nullptr) return tmpAPI; diff --git a/src/utils/JsonUtils.cpp b/src/utils/JsonUtils.cpp index f6da97af..141bd8e6 100644 --- a/src/utils/JsonUtils.cpp +++ b/src/utils/JsonUtils.cpp @@ -318,8 +318,9 @@ String jsonWriteFloat(String& json, String name, float value, bool e) { } void jsonErrorDetected() { - jsonWriteInt(errorsHeapJson, F("jse2"), 1); - int number = jsonReadInt(errorsHeapJson, F("jse2n")); - number++; - jsonWriteInt(errorsHeapJson, F("jse2n"), number); + // пример как отправить ошибку с количеством + // jsonWriteInt(errorsHeapJson, F("jse2"), 1); + // int number = jsonReadInt(errorsHeapJson, F("jse2n")); + // number++; + // jsonWriteInt(errorsHeapJson, F("jse2n"), number); } \ No newline at end of file From 85bf00ac012c55f52cae7835bff691644859b4a9 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Wed, 12 Oct 2022 03:18:15 +0200 Subject: [PATCH 4/6] =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D0=B8=D0=B9=20=D0=B2=D0=B5=D0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_svelte/build/bundle.css.gz | Bin 5492 -> 5489 bytes data_svelte/build/bundle.js.gz | Bin 47064 -> 47660 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data_svelte/build/bundle.css.gz b/data_svelte/build/bundle.css.gz index 55b3f3ce81d2d7b4b9b85d58c04a91aca1292a8c..07b838325628393fb15b33014a7fddd82b1c4112 100644 GIT binary patch delta 5140 zcmZ9Mbx_o8_lIc~L_$J3B&18a<6!|Q>F!=SrN4xv^vZ&O2+|=Sol+w0(kTrtur#}f zlt1Tr$9doR{ddhd*ZJJ{-1p2uai4JmOs_#8XG*X=4u)NTr-QpAzrCLy#u3AQ>cu~Y z;xZ~2ESzlY>hLD z8yP-e#cSjM-Nli^$;;e97zX+$?X_~Q@*9~lW`4&Ub~NTVTT*XW&lfgfDc}XZYCNrm z&8mVKRJnWt*_Mw-W5rP%8VE_#JNhhb^;Gs!|LD_lWlWQWaCF0H|BNKTxyKuR3!`NR z*M0YBwj`a`TLy2~e26pdwjKyb^hGd{$M?A-KZ@6+eW35~X-XQ1c)#mto7GuSZxlcM zym4A8WBOXx_i8F+o6qKaIokoqBSTi}SSiD-9ja@_PiKbM?z7%ZN%i)J22*^wDgsUS zbEz?U)T5R|IU~`ERL<>a+sr!(7V^Q&0shY0anTL_1+}h(X$CO(T%LC|{@43Cis5 zhO2A!#Dl=%6G`Fq9E({3^4CO3-yS=JCdAOQFgdtp3@R#0U%NIv(F8r%cR7(~b=4H* zq~ZI7E5;?0X_3U1u-zCvVY~PmdpK;-xUg}gT0`n($&X7@vZ?zYY;j@$`6@-z*=13a7WXph;(RSm6EQ0K(6+o;~4Q5HiVXUfo7R-d@$Z+4(~KCd-T@I zdDBy`p0CgAMhIe@6tF5jaXg6YR{p^d`}+8$Ko431h-TA>h&I?510?`udOAvG}1& zEjb!EIjDqr#Et@na`zKvIs7g(y9i!ABu}9A`}P>+JR?K8fDS=WWwzv)*CM3l(~dtzN3`Di5DC_bb$i+1fSF!o)o?N7!j@g zd_jf5$d5+zgJ5z7yEA^o?r<5ad195^)d~YC6cyT+ah=WY=aYZlKA>u$4eJovSus5A zIFWDU19mp+5_a7}EP;K(VmTrOIfl7V-M&z&#^H4+UV~kvO6oB*R2Dt18wtc)?fm zY>;*VVNye0 zQ&~_oWZyf5t$A94*8h z_XhVuW1Rd67e%dhE96B`#_){{5V`)WPzF@2j9J1cI?^**o3z7qRHcS`+S6i5IRafW z%(%@8G-T7UH=caJRhw$MKUr*uuHJy(sJ{{mD8|A?xN>epgr5{So2QBLP1qy#LY*Kw zA$z}|6Ctw@`^L#-9?-^&DYn|#3qNX@YFFOF9U8vpTm+q06(%A_>K7aUPM~xf8O6(T zU4jktIeeK=$%hFwDS+P~yLitz>N^uYcJ1g!tJx9W|GpPjc2HETABV1nG;ATwzY)0; zxITn(23J$`81i#*ZC%?m@dPb|`}7c2Y!!&!2I~~PFl>bo89OdZ2rE25lQ;WrN`1>+ z&k*Tb_$Ds(Z56rw-4X>1u7LpA8~yxFRpZw}QX6NK_`I`ii?-s;;hjIni|r2TYrif2 zazFPMr!?k^dZ1_CexjpLpA>Hleh~bR2XGJSoAUK{BY7QUDH-fnZqK{V0(({U=cAR@ zeiNC0$V3%DZ8Xy=Qsz-P2lux^4aKsq#!OU#ebZO|FdybV!po=Wq;~ZN33IF!05Bm(&0VM*r$$B$T#k(k!a7_Vit}20c^f!|a z^~`RzMW%^lljc5&A4$_YyhhVMe0 z^E|Rf9Lj9y#Xs>HTgF()LB+b?K~!Z|m^4o~%h};o-vt3nrTcsUuxc6Sf_xMkD|Ibd z5lIKk-X{zS@k|%k29J&|3K73mAJ&ZgLBG=|?5~00z-Jwa(|dFLkqkctJV17bFnnG~ zIc}FcsWP z9!mbOi<39mT6*A>are%n)G|-CmaE~V*KMmI_Qlx{pa4GMGydx7;740d3+24udq0O@x@^NIzLtT%?edv9cRC-#RA}za!@K>&49QY31Mx-OC z(oDt8StTMy@a@9t=J!Ak_$A)hnkYYKkZgLx%ZpyZ`DwX{*R&FoV8vES5r=>T<&?5H z6jmS1*raU>ubr|qk2A%l^JTV@kCQ&oHj&%U*Hcg1LDR^v;Z4|i6$Lpfq7+c3l0=*i zw>vSfrpqQsSKM3_GtC-)cY9Y9%@e_A(>;DEgpx4q<(_@US!T9$!mzHCEmtBvL&EX} z)tLCD$|~;m6j?uT(jNT6DYul2kvLA&m{l&F6-(0UlM8nzE5Vf<}u5Ao^-IzIw7q5O!Xiam)F zi?{=-qBg2TjJxu3&&5=KD-pFOXcHH>QA)kbBV!h{M^&kKPITY*jy3)o@fAB=DFs>a zNokJEs+2gqXb-fSg_AY(Kzkk_zJ`5Sk&%$xxNly!N52oP=DP|vn+!u&wF(~0ME{7* zaA%2+DnPl~;JBCj-A>u|B$0ff`ML3%h~e5_Y5m-vHWC`pG!YV@c(eNMb5VG!OEb#g z0pU7~V`#7x-4pYRUeLWO)o# z_4$I^?OO9}Rq1UYJpKV7>osJ)ITQNh(qk}h+aiBE4NT`xbbFuT(%pCJw39AVD6UU^ zPN1#Vx@otJEH{}iU^@V32JfSyDXX_VOS(wyM^el2pu>0hSFlwTeJH+*G zDn}a-HX#Vjr^(#oP7}4iZn%7FU9TIwL8K&z^FCWx8qpXq4)ig&S(isdb@%%RzOOVQ zE#A61lvDMJ>%?A^mg^kIs9o8QayZFQImAafvZYf z;;+7#?nwk>YHi}j@R?zSU|(s)GFh|wlmo#`TORrY^$#NVo%!;Sg6?ZWQh>UMBw4a=(QLav*Kcj)EZ8&0Ef7hT%er!11me%)@ik9z7kc(L_^Fy%3o2%c-%P zy(sqwLkjz!`$IXWkqaw^Q0C{=wuKe@cc0vd_TFjw=uR*6%St~|=0#3*YmkW}1@@29 zh(^$7fNZ(Hnfl~`tF zbF=ciL*rSMG%1N&KfK94?U3XcN#<>!qrq2>iMN`d(#lD4 z39>(5b#_j^G2a#j;h6alzCfP8{-qTSG_Ae5AoZ*u4n55itWiwagS_lI3t|RC@XWfM zoQUb%DSuhLTRWl%vfLIupcjBqr8w$`N#Zb}&wp~)F@M!Av&CRBpSpIwA15vnF}3m& zuCO(7dRadE2oh#H81(4#K1)=MUGJ|Dn92=DxU{{!RV(^eY)9 z;2EyY@yjzKKR+0qha15Y^AOjP+UI7Bh$zaMx#H5Ii%{*b?Q@Nq!H_r+wbHgZp4$9% z876k?))h?~%~;(AcY!sQ^uQ@iQhcsZz?LeWr%J&y!LsCHan`FSlFyJIx>MmwxTFhr z^u*R1W`xtpsOmx!T&j=83Qj!@l<=WmsM#YMOjT&-BU&qSYb%+rmW^1wN2Wy^5F_sm zR_8&Xh@Bb*JXyx0j4s55RP}TiotJSsAF4_3%wzHd9Pu+ZXHr{4zla4#-kT8)#|HJc?s|U_UF+1Kem6IgsVT+<)f#nxh5)_W@BYU! z!v3rNnQHmlxc->)-;Do>`ws>lz8>K~>m(`(FO~ew{evh!fmR<^-jh@|9nkg4pE(sTgw(2{|Fl)tm zQm3m!ZKoY_L})m);{IYdQ2kbf1_+=6K{*CWMg(1j8Bar;|7#V^MgCR)OnLlmMDYAi z#{b76hFiO7hg<#rbj@6%zp;Ptj*Wmr>#IEYKijGI-_tbN{;S;24axtj|9OmC_>99X OW*5sSnfnh6jQ<0Orw1tj delta 5150 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 diff --git a/data_svelte/build/bundle.js.gz b/data_svelte/build/bundle.js.gz index fe45ea11fd2ed01aee1ae2914696e70d132662fc..49e8b2f39e4771f9dadf9131a990024d14559937 100644 GIT binary patch delta 45104 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 delta 44537 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 |Mrq$PbynDDzd<>J7!+aZ!QHdd3( z;P~3D5F7@nQ-vf%OAgvLeW*g6xnCn(HKO~Z6nq8d@+5Ovr+u{>NpzV7oRb9U8_)Nl zdxI`CjTE(iSU!kV&*(R+LB*>DySe;uIci|;;#l3vl%>6uK3r1-_rxQdPzRyAWe4j@ zn?Yb#p#1zQTX@mH#kw9rW??8Z@<`IHQdf<9Y+q!lKhmA|`U5=DdaT~MUL4aD1K#;<&%R&RQ4_dArOlh9byub@i+#JLXm zDg~4{=Vt7v4!CGmJ2-ZwV$AbJr%FTvmON3O{9iCfNvAM1~5dKmhiZ;Dyl8aw)x^75*~HxNvQ@=J7eEUDR3KG36nY{fmXil ztiA&!=krW+WTf%VnT;WFRwieSW@h8%m?z&y4(G^3Yd1$W4P3KwVV&=29nXJR`6S|- zD=Y4X=gNoOdV5@AZ_k%qt}kV+(wP~_KV4Z*-TcGaVO7U6V8pMtCHo0or?%B#J8{*w zLYcI|mX2Kded;qxtqI%d=`%lP%YBT*a-iW_JU3gkgr2?ST3^o7w$0oY zZq?KmuUj5lrgWLrarP52P(Xhzzwb+7<>@J$h6K6X3dldqL-M!+Nv!!ssnt%HOX7Tn z4de}CxP*VEnn&Ko@>Q@DjUC!h&e0zgbuuElt_Zy0vXmd9rY9_9&W>>z#QA4beYPl!q$Jo)UxvIQ=V7xfDATWgHkawf7h4R~RiP@<=buXf3(26XoqibUD z&Nv#kP5F?E#9sNC8jTCA&nS%Wo-bF4vA4%&eg()mJzZHno0k)r0&E+>F@+ymy)CaF z+4R6B%OQ9J((5sEb7+4BxQ-wQ3@Z$QFB7G<{_8@2C2;^kK)t^`V`4Wy*Wv;zD`;OS zaDH{`)KGUbVV{__n!Lt5kfGnAY}~)4cvU^dGm4AL`O>-=$F&+(c)^25iuL+$mD{4Y z((SZ+Zp<*Qo3T=VN_>>H>CNx>t!N}Fu`ZMa8CM2}^gVid2@)d=)>*KB@bM*B;h(h) zg*XECJWgT9x0A-*^s0EC#y75k!xnE#q4o6sB!{LIDcZf2?v&~i?!yNA_}x4#vk`|W z_Wk2L<)6_BrH%K-RgI5_>0zCc3NOCzi*_x_l=QD#(WQX~6+{pQ|~suhk+GJe|R~p!ZGjkSP-dG8xae zB0)&;2m)J|PXXE$lo-URI)9otSn_#PC}>aF@Yx39f+M_o;}OT{cH@MDVN3Bq-@p}R zs*U^D@EfFllnI6Za89L>H<;KH^i z5C}DOD_rZ^XVV){VkmTQZ>ozCGoO~Yo+n+XeIrD>Ruc;zdB74PTwAjF0IXnIZ+m;( zcOl|}MQ2NVEcLh)&3!I~q{9tv_<+MGmcZCBBz!z;0(@s>_=;7ejN5ABe(&N!hYffo zgVcLrL88~3mzieO0UHx>!JL9d^2p zZDdrh^T^7=%GGM4B`R7BrGhZCy9P>TJy=%O2>Js`v}y&d$}5L3 z_6}(BzL{PWYo9w~;M9#9_iYUPWb-%+#(S~=&Bcoj^Kgz)z6&AkLNy#Ck6gT70D=!fkHb2&hNJh}GA|E#tD z1g||EkMB0Dzdq$$003TlS-B4vTUsviuUuYk@PbSH$%YkH9)iOSzI;H@7e-~%E+;+` znK?EaylHdmC!l+^Rw!H1QG(Z<-&%K`qfkKPAibo3b-k8zSYq} zm8fR#|4mYc5WuCxV){g=u~W8kMm95i%2;@yHeV<7lDP0wOt-+aI>`l;)s(;Ij6PLA zdL;s9sCXu*r9L*Pr~*`|VNLs&4q>h2=zkQfeKb;zz5z7S%{M+KflY(q44}IJ3i&62 zmF)a~KMbh!v@lf73x3JG;AcBKnzxA4p$!*QlNq3@%k)MBUb4|%G6if44YoYz1Lu@6 z8;l3>KwpQZ1j+>d5}v6gc`rIRlQwF1ii0G}J)oY@Z){P<kUz_oqnfOwi~|QB{~j_~I0wXh11=px zVH0>0kh6t6$UtNA&4v~lY6%lp#hCqh4mR(JoD&c;eZ(Q4G6}%Si;Z_GsDyT!!oe5% zp%W~u{uDH9t^tweTfpE)ZUyj)=9`g!ywme}@V(n-k-KB1t!TPOXxp;=E>d*LhXmeM z72sY|>!|TuF#r`RiSZm0=^4m}Eyt4a9BamNh)e}Bp1YK3NSTUwS8|-YI@3NfC8W@C zNSXF2QxYFa<;+8!X%Cr3WKDiRnf55tC_bP}8Gb_E)eg5;iW3_sgc?*Y(MOhlOxOi= zhdH^ne!7XK49)2rs~!qCnui$38;JNw6N9`)R7yhl9DiIutq^Vm#WP7Qj?T`QZGHWn zOr`%NJ9$`W)kYH1uuX?_+(pBIPOX#lfymnl?mjSE_l17f9-B^o3i~!aVr@WFhbpK1 zfG|?2Pa;ZviN;BGcQ95~_4rPIQCH~k#nIBo8_^O|OFObuU5k>MhP>bE*D4AndaV{J zWS-eKB)9Wtj6`e)=VCW!qaWRn$fly4GC(=gkddxQo>x=%ys8eWDSi}2kO(MmKtOqj zfT{)rRN-d^+Q?kAQR)YBs`HSATrxjV#wk3o@8ALJ^3z)-tE0Og@9QOh%W5YJzp3t! zAAg@IU~YRrYAQ8RjV}c|Ey|bV85Z$JqLqER^nEl%^FuMS`eG{AYJf)ZBR^mHA`cWl zQhT^m_J5A}vn7nPNKrZZAvx=Z(C^my7D^V%Csnh7Zk6&zTywx`a;Tf-ARE2v8``q1 zcIb&;l8nac_w@9m7@5_7J}$WgyrQPQh1@m7xRy^hE=RiBrIq!|sI_^T%hzVp`T4rpq3ki3uX(ZY>X;@adT1i##?}{izpR2ncITvpU@|g+r`s=kVx%JDJsLW*RgJ1vE_5oCZFQVo2@| z+t>M>=J4~N@cn&OcCZ#YXdR*uz}u4f0$Bo1NlIkl$78J@m9niBK{E3&U`eux)Kl!F zi+YM5#3SjUFyWtnCF2;W3|zwSY`5BNDASBlhHU2(`YVPI&sb-eQqsD(7)Cj&(Gy8q z1r)^P{H=_1Oq*3VK>KnFB%E+1cfp`$b$;U-5wvtH9y67H3*QhAoUdHSpneaa9{WLy z6Wxq=(*!yF@MP9~lrKLFt_0kd6F5Cx>H3ByHCaF9dm~io1dQj$0l6#qSXLp~eDf0< z|8aqq7ui2cp zUf4ViP?V?ulrH*NLTBg~L^RcXuy%P@hp^0pFWbvGnLrErK2hJDcFXjS>*pz+>=w>e z05BB z`S@}n*$aBBLB)Lnal}O+Y7lc7%NINuDK;XE4p@oCWc0A-3_wR}j$#}$M__YU+{D?g zm=t#(x%>kIVZe7lCa3t0fm)QYW;2jE;568O(=)GtyZF)pQM+Y}7$5M#gqLS?a;X>L zMtvIH7W0*ruIocGZa0&zaMl)5jI7!}AqQ*_ie-K)m2q5>vC)xCW`CE(-kWUzV=P}ZZ~KP!FB_VvRd0^8_#LxxUNiq6=T3l}BXOgdRC~r16Kg*62R%&g z9CdPuSe|oBaznB%m zuu`ES2#(*vyE>mplQPnAdrn+?xyz(ny13$BQwiejTM%p2HMfv3&KykXYUq@gC-7ZOMtDwuN-o5qwM>=)n(ldHkTRmzS zrKZbIK?LIE3)BRd4^3fH$O3JDyl3JO%|&_pv!I1_cc0XecMD=$a;HqJb3xuZxB0-O z_A^#kZK&w=#H&qab&UuLbL@8@;K7*_Rg8Aa>VM!|Abn_7N)JQpVDzBkU{o+DU^Os$ z-Hy4RaNX`{-kZ+#Rx1N#F9%&S26)YObT=U-oTXkgC=A=VoFnUeCTR_S$Df6uUwHpa zpK#g)!&479c5*|PYI7WMmRh(5O$F}~{q|;OVrIi(u! zc={>J*Kn+LJ*#v(7})m=A?eOVIBPhkJ_DOOF-arSXTT)eQ8isMEa2BVI^tZB$lo{4G^X0d$T2EUP&B;93ZN7u6BY+GY;GlD4 za6KvIf@px5Wz97^RI2P<;Ngfjxjo7-j1Nm6YlAqOnl_G2#d#2%iWP(+L7?JFJ&E8oxP2zl%>A;glvOg&m!Q5y2WgF562A7UV?SO*{8I0qt#BDqY z8r~Sh$92T&2V=IzE~L=WvJ;kIq3QuSfh4VkF5!oPX0r-^GrK{NsmG)F-PiTqK(E!p z3~%`h5zZxWB`a9rr%N-tgW030)U1afir$0L;0A`0(&VPFlsm2&rbXAj&zca!R zx%TG|{$1CPj^aofD2@n#2gtoiHX)nNa-LNCxu*2ig>NlqJLUCP19^?#f*9x{YW6l4 zcYLqXp&$hmu|0>k-+%V4DZg`|r&ovU^oDL(ViV!!a%X_e((V<*)UVCPW0BZU$SZX+ zrPRrP%u>his~)ChmIghy@z@e>0c~6O393~Z7=}eBb5JGIUDtekVn%}WSzd3#qO<(n zgxZWK97fG4aZ>x>PCdVs_!Oy=MoBuPSx;5 zO)8B_!svg%h-GrW?CxYwx>Ult%8TgEQ^m{oMnVY)2$+6XjLsL)Yo((JD$(HNOY>`-h zVYunNF>QDpRm)y(m1eUu>w8l-7fr$#zg- z%5A>2kn_Q7YC%x4ZL{53Sx*G6mNagc4#x8RsZU5H5!sqNILpVl78m933Xsnz!O`)` z&C^?_i&yqU!`!zP$+JqowU`_nZnS!Tt(z)1swuR%haXxP$+qW$ecD3#p4u|sM#b4x zd`{^Y>-M&nxj|&?rF15APw(y$&a)(esx8M3o~6S+rd?MP+gabLL!O1W{Gd~jEi0ve zoAeS>6rh8)eEpqXA!-X-?IbXyffj#=4bq#oJ(8n?h4Ld}kdwfHqXz0ZvEhb)1vYI& zjaF>BiH#>SPKEB&81cpg=nSG3+(o)lXqE_x_RS5Xu$_U^k{pQNB@-J@WSr3@qfA6y zQX#iXU_?zKzUS_(nRu6$O`UmREFW7(G9!rvra)@@1+uxjL`t4q$g{K32!c@jm;;#@ zK~d^wg#24!myMc$t%|wqRKYrbnU^Y&8%v7jKxDQw8VD@DL#R|9@Xm!pr&8|zbf7vH zeo&QaRf>tUP)T~li|W|CkfO!>HA(oh_G{nnKuL??uBBW=G_wA}d7*(nLoXrcaPm!e zA0d_Ybh`u|FrC(`W78{1_g!y(XJQuW(Jjj=9PbnHyX(jqoXVh>wdQkwOj_N zT@PoC-EFkkN}_enl&D(#+DVu=xdE#g{v_GF6zr`-ADOecXf@0xPu2s8T8IEOpODJ? zJbm%h($=`Rds0cl6~7f_&vCaS6hcDWB$g84;i^|pJBc}#t5EWq2S!9{Ni_FFB9*3Y zloKiZe%gnVnpKe3Md31k=a-}IGOOMfSE3BstGRKWIEob{86q|V!7LY7RtaroAP%E= zG(F=|a=Ee={O9rxE&YsH^Gp&!#P!YMqFOtELIeBKPd$#Xm#S)HC&uS?qGR2;puKVI zvMaNE@GPeR-z0H+Te#LbBbOg^Yc{5|V{J-1u#CQ<%1u_Zg*BLeP0qY~TQbOK-WPee zFL-B7*%*1SF)%8j%{psi)@jT{YgYo-WHK7$2+c>s8f2u<_Mkzkj^^~clcja^1$OHN zHYUvk!YBT=fneZfxM2OJTocQ>(P-V}mzxSdJPr%(7I-SxjMAH(VZoPGr>AQH$yIx|h<+ zp)&W`qTu$V>cuS81}m)Q%52qkU$xLekcNG$lK6?~$-zk$EN=_$6RS#G$ZjmW*&W*4 zu`;=w?yfqNQdZLwKe3TItja7$z_m~8r@9)JznEO#4* zGJ{d%&TQ2UO@NB)O5#zvC9hbwiC|69r!(0Z2EtcW-0n2M!oO~%=X}K_08Ulq1d3LQ zY!$zM3EdLG>woUh8ClNtHjLBsd?1MR>0BmwDlWa zT>(@m8Clz6K}(J1?*f+5FZ#M2;-#MZWgln8|52M~;A|P;ZH+mf{-KUE4Q(1qz|Nod zwV;buz0_^b`!>%7Z(M_m-R9;+Iw@dN$Jbhac^33p)UDbuYz95flA?27Dn+Yvq1T0) z_?f6SdZtKk-^AD>`GWVY*zc$Fz~n@V#pal@39=AU15vt9cnTjWaf-Wc5%BYT?>8Bx z?`nRHt-c%RO(RrqXw2^Rxi=F&{)Jvnn^M6k#|5#5a z57U@jg7zMy>{A-Q&ihooN2yR&i@keD$kN_sDtH}wx6?E6#4_g#wWmDoykPi$ez0E5 zO$*9!CO(+Pis#xb)ATcG^nwjHdrwmFz_cu*9w91I-)Q)~wksri;COTxyXy`{@xje| z@9yEPN0RX_a2iO{N8kP7hwr=p!CtGoa&2X`br!hiO{yx}%cB=(r~w^opGD|knnpS5 zldmdQJ@R;&rz#WG8Vv+95p2>4f41A+5 z4e#C@cY1&V)Ln`2(!LZ>{^p9n_DimowJUhf0H-IQgXPAHe**D zPFi_U5oeig?p3je+)ffQ8VIo2uJY;6B(%?Xc@>n$yz;Ay95u|!`ebqOZDg`Q&x*4m zk06GOT;7uJ0w@XzfSEWJJL0);rFS0;#6V{r>^k99yinFJ7z32!0hku5vKoWPf}hK3-6%P&0C%AFWLNFU zRkOHw;_T;*^6|cEl@w&GaZ-iU%oq9KSJCmET+x2#3ch%XJSPU0s^}1_9p(q=* zE+kfxw7Gi?J9!Tj$1N8qW?|_D_3>7BZJTrI8fRx-mzix_f73Ev1EsQfI{{*pBrpa2 zH82wM%j+w^EQ7LdKYOhf4hzOLnlw@`z^@$QAXN3_O40M|yh!-Ey6w$;jr#;%B^$A} ztyi+O+JPp6va;>9I)}%tGcYpDF{FlL5X?L@?v}|O34B2W zh0x4iDOW}q5#u4XadA-wFs1c|>)1ul^ zTbq+#voVQeV^VyGUFQAplasuLqBDxd@`0$(S3%@n93p|%Ehx{oOwd^^v6qMzYjmh0JhZh4H3Vt91~2Ub`JsRViiM+Cnf;^ zZSfDY;H3Y;QOfOF4co3(#OLi`))w6@G`@(O;~orutFnk3EL5!%;Te`sh~+YV8HbiMABwM9eCEVyb~#!*VT z?6j85>PWvFd=7~_8~IIDjTV+{|nTO7S8P2g(%I4yJ1mRGM_<;Wq(;IIWolZOVnmkm@jtvw^bbntAaIF`9> z6;-)h^aGfu9{@h!Y=xIO9kRD6jy;lzJM!nQ{CNbQGT;Gj$6L=C7WN^fPe}r^25upU zTHl6U+XH3|ELYPdUgIJ0GY{wBX9|JM!bSF|2u?$0qLFTaw=E>6V}`-Ze~yZMMnzq? ztp5>kiRN9fSKZvCwk(v^|0*a&Z`^I7dUKC@b1#@Q3%2dEW-yt+hfaiUFn!c zt(6im?d^?lZ$(G0Ov{I!R}XLogxt$Yb6|>$B+GIXz?pn5k!IUNh+e;ZB;^2xpiat;}JK1qvoZw2}q$2!#KrU?4ceoVe_OR+x|!HaBRA6k znSkzwoN3QZIYLV7Z$E5F0pug5sWa$p70}xNAqVF{)>Yo=*Vhs_p^lnU;d zg3m8jF!=}2m{il4RG(n+Q+cE&_ef1*NezdF@@J2J03GsY$D<4uSI?j|*;)H$ zr0t>VJ%g%)GpZHy_ey;8!Q2u2FgosX?3~y(bFnQ~93WASn*)cMW2F9Y;x5G$s#2|5 z1~9_pw1w(xhwaksxs=Zrg(x*PJh&J(+`|=~j}3VY0s1>Ke^bmAlCF_Ds9Ei}t?ue} zoU+L&N$z6o8e751TotU_3a;Ukey;}=9lMBF7tQ6Vvo>NlDJgBe{Lagtz5L~?&%XM? z%iq5I!^@xH>cvXbNYLYoZtT|2ks|OV@7UB88&4n0gYr<|Q@Qe>hGZ)bs<>tkdUrzk zBl9nDj6*(le@{vTkhwc{X=+aLDZK=Ev(!iU6i%Sq^csD9JB@g;N_1b##u5VOPeujl zly~vJ6jM`BUy!(TC3T1iIrl)E$cZ?Z#%nZQ-z;?FH8+mhDC>qNBit*&0z$Oh4K6wX zajNzMWT#Fjf#DpDm=YV6kswwqo-q^G&-&d(?4l2`K?luVl*K%eax5}ZsHWTP9{Le| z90{L9f}NhsTpoQO!k;cGRB*>#RExqA6}t{OdZ|G?i`7D4Pz9j6AJN~HL$s4#YBv^Q z7*P|e0h+rN7ur_&T}1);(m4zDNt3H;&lk@b25~FNPe|f6nd2_!0FzPDiFh*o5tET? zF$v#QRmyK6@zAcb%WF3Q2L}xODS_pmlL>7;K~Hv;hz4~r<%>?5YnQQ2XEU~w$umjN z{d1P?`n*eb?ah{MKmE^Kx@-TrOLzC2rMoe6>E3L)4*oNi>pyg59-WhjZ6^Ueldx@E z0fdtcZean3lW%TTe*nupiXIfu!F&Ow&t84@8qygoxht_|1;dTAn(m`)t$_xBO@O3Y9#`ivC{IQIKqea`@EU%z1+uaToemxEq_&^9Uo zaL%q6_-2hyJw(hs=~ck5vr#MO3$QB3G4j*9@ZA^Ng-=s)hj$^@6e#Atf1Vrht5?m9 z_|-Lh((ih3BmUmGD!L{s+Ujs!*Hx&?p&P2^e|H8oe`cPV*E+H;x8SGeDtL9W;9LJ~ zxBDM!zK0VdGq`Ejo8N1`XlymGyC0as?q<{K{?V&1)1@Zr{4DDKT~nPOno?&H);U@9 zlT(U@+6Cbf>8m`%XMTLi@r743@v}^*9jrp_zz_vDq3h}+43s_sJ_G}XtBp``T&Cjm zf9>8teiW)mf-jjoGHh<@9~!QA80Vc{UA=zo20pvnO{av^oDy<V>)opjwUpCq z$&}ng*HUm_R@WM8DW=zw$XW``DUX^r3C@a>QArpzn!S~9Se%TStYlKBfHofg&GaRb z`Ykv%@wVjq8cvxOG>gM}59IGqS-UA+e@JpaK?sYU3mB%QJ@4!*L}%1cZY;`I_;S*F z3ra06dR4alQMi5l@Fdz$RgsB{RRneWO$FIH@FXhDR)SY6DPhZW`SAf_Wt>ShVk;x6 zVr3k)3nm9w(%{@4X}v#Y3v{lGayji1i|ce~vKuodb|k>OJ`ApfFlhVa0^ynq zgl@}k0)-!OCq;WK!Bmq4S5y##oVr;yr2f-c)HAJ0Ln+AXm8pO^btO ziCHTvkJ<2Wm2w8Px|m^_Pg)_5vB^@8@Zk!pJVl_pk_)#B@r`o_hifdw$39jvhe@#SNdlh?; zT>%^k&O(3J_%Gelgqxr)wS{&)Z0S9a>9FNwIBYEAOn5+FM101iac{KpP5O~FkPA$& z$VfY@lhDkn-We_L3{RG;19@iUCs8=lkSxZ^*M0`-( z5l_Xt#rws3#b?B)#aj|2R@5|j*yMeTO}f_=Hc5OuLM?tcX7>>9nxr5f_K^C!h=PDX z^ZES4OhGK&maW`Sf31xDRxBlx+1{zLJ)4s4qY?vlRJI3Gvb`sA?+?1$l4kgspYXx) z-R2rv2}Ry>M%U4t_Mi^Zbp2lKtEgSph>~pF|8YI(0G7o?rqLVcpydqM^{obM>|)mu zCk{;Fn7)(`uJF?9T^^l&m!{Jadmou9p1JjJa^gLc_`prPf6a*xO=4O{Py7S#2RX+b zH^);y$GbVl#}^kr&YR@@*wt2=>Edy1_?vhX0kJMcNG2&lF}0@g^qTC0Ay_o4{rj=# z6HL&iR{3mtl}McI+|ksU9?Yug!DLPMrq=XuYRa9al-UGQxneoUhQm=RsbwV&K`rr< z;=}Q%(nKbKf2N4|B|^??Hgt$)YKZ0>fO`;)m3_q{e7URSQQRZ?0Y0QgpQ&tw&1LGQ z{JBRzK$n#1fy%@#(tA%&C7S@Q z;4R`40)(&mg-pC<`Gv&r3wmi57yX4=5o*731!{!9;O5-xPgGjFI`X~qW-oBM&yZ6O2M15nv; zWofEte^g2FeEgoac%sE+!qS2M$NL{wS~R#$j+rP3i3bU6-tRIC?+3H+anhKfaU-3X z1ugG-FUz~0ObWN2hEeZzg<&!o4$_E=J^I``3xF--$P~hH4T>bAf;PS6rQ-E@ZKJSVbQCv!6fL{BpYXw zAhIYz@N@Y0`IdKLWA}BMM<96(1y-^=Ps{f{x_38z$IZH2U~C_Ur=eRn>wS|13bBu< zf0sXoH2$wQufT!v!sC3w`L7}K`-XF7grU^$VCM82>i+yi{s7yjpP?A;Rpu@9eH8dD z?5kjng%*E3S22*@>#bWC&5A$et#^pAH1*-x-zkPC6CknafyAZ;36BS=Mg!sje9q*? zHgO~jmZYbr*kAU=S!g-YxsXyQ$&x9-f49|>4L9FitOf^s*NFxv4ZWo2`&pef9R8;= z5_4=H$PzUtfG?Vr$wNBOizL8_rom_zhOSoJyuy4HdQe$pS9xZe3ftlO;J{go{J0Y{*~0&qO)#$%C=!9A#I;wL7)VViDaQ+-tBqJql%-cLOCu zT6rwEqhz=lZw5++vtj3xwvI`9e|p~t1{3u=qUcSEK9K};$0ML0@+F27l!%B0n1@7f z+_HF%y+)en!A?FrhCYYhwdx{kmmj0Jg$Oj^GE3<9`k6W)%*&;-)(PVtE9&&QVb3 zPhb84gyOGsr~m5nO?Jg!f0kGC1Fmaq{IY~z()N(9T(!LX?#n-&Ut{3LWv9+H6)GBI zM`5g{KFMH^9@dB^O`dF!(3)O(|HJzqZ22D5u$5ES_gagdWq3GB$WvT_qwJlqH zriOd|nZCg$b(Q#MB!33{V||11&z}4_(!yiVpvrCY0#1Ql-7e>IL8xlz|AorJC4 z;JC4y4clki$fH9QryaR(o_QOm&ZnyQek>JlovY%z_D@vt&HlR-eC5QZId<$%u={`i z@{d3!?3`wKExL#gaU%CfH$`yK7q&SG$ zm!otUuc8=*DNbZce}P_GP^j|2`Hg&+i8MZyy0JW?R~%Dv414M0aKYhfkmgC56_1YV zUSd_0NAx*}I|wFtewOR)ja^kb0g&1$iu&EvVQ=Uqkk@@X)_s7|RCf_e3Xx7%Z$)%z@B~pFcsbAeoSw^wN%4jo*d_J zVYe&}7UTlkE?GZFG|O;FTf+HYR@4VAvAZHO$JvIQ`iPVr>+%E_UWBMuDt>$k-mxMM z@|&L+7qfg~f31B6q&~pxS=6C$2I{F-%JguQU|3fcui$QQF*!KgXtizZO^zMaUgRx~ z+@nY*HflwWACI?^<_}@`n|_1kB67reSB@DfA8MjT6(;^O)2eu8!bD}K-nSj zlfO|g9lP}QevG+)oIlR>{)lh2mJ(s>5cVx{zQB0bsMv`Bv+C80{EUJ3d4>)Bd?jZG z>UB}B98?dnpYFpqdzw>`_PIHjb>B!aUd7|r@vs=M%IwMjP*A7u9;FnDS_uHdq|u?+ zd*8aYf9|qXqaXS3T~&qLeh5eWI{JQ@?#4KZtRPoDDiUlhp>$$_njQC4a@#xAmFZFO z%vMK8*6)$~o^_4M7ad?)OlM2_ZeMu{)D*B493^kb4wyzvzP|zJ$EH&8PLn`>YIg9r z{xEX54|P6owHm#DSwtEbQ`m&IXgSz5Fsv{sf1Jgvd@y$lt!{|H@+hih z0g2sW^!d_(ePF5O?5B3ywP{sAl#J4{j?!F88_jz{KEZU~W-`kMF}&Qvm^V<#=s0&YAJyL(tE01p1Zn zn1qPmAe$`B4wU|i!_5~K-tp>l^Pj}tf6*e%EV;+Fz$8o1Z(-47T&eb*PN@Q-DN`3D z$PNKmy>Nzzt#mNNSvLS>e*dJ36DHSn1k~SZD`244!^KvjPN^d$N*{+Q*J5;}5 zt=wvkWHofKts2XpM8-R9nP13eqyovsfz{*VyTaw+SB2%@uL_rU??}t8HR15<>%y|= z*Ultkx3%0A%iV3)8l}kRu-I6=f9e{MtgbmmB(|m`|1UG)80D{P!tn#(H{77$nD|XN zoMRMA`0@`6AIsj#nv5=n`2`I*rnYeJLysOcwQ!KXwpqtf{(rL$*Q}#^b#1kK{rU}< zWxR$thbsNf^~Llx%s6D}8|&8=)BiQ|jlZ{dWxH`SRrsE#7=|d!D3!$He=Uj4U?q+T z4t5-{9SD&X&C<3z9#2oYYrG`!1v?T*NC*juRlo(e?ECTx@CrN$-#Jy)wM@^r?U+S~ z|Bt7uYdLkQx|UOCtIp_jY%;U@vMT8)`d-@Txhgt?3YE}v4RlU@ALa9*)9^A&>oukfmv3$W6a-?r%aG|e_#9C@7Z}K(_x6JmYdC(l7%xb?6P3y@k)I~tF$|Cyguso zODI2xjmbKkVij6755#k^EuM)-LZUSiZ9#3=c|+}ZeQ}f=)rE+qrwox2mDI%O<*hcB zxi&>2n+@dxhN!SCBg++h>+vcOHt4Au479l1bId*}mMtoEf1a*YC2R$W6*LrH z;$nlPF!?b~17D$Sp53le-Q=#7Yxkx302=DLpN5yg95}&Jwg1qL^a@(7Q2AXUDjQtc zeOtr2i^@|@UAC#4POuaz;U_tccjJmu8~EGr6bdi7k|!4O!wIS{X+G4X8fr$<;T1z! zu}~g6!BVI?y`~WRe>j7DW8u7Z`{rYux@uED9J{epfg?3)+oN!OdN!r}qf z^V|a8cCmQIsR@>eM6v|q5l2YrO62f*p4_nNi<@vk$?bVddsr3Hw6BG?bf3vML98hl zs+Xn{?<<(mHAaQ^6>w6g2*abxVpw4L(Jh5xZ#;$vMHsGMe-^{_Q4H^w!mvFa!_6WL zA6^baM~`S~heS3qO0z8Px++Btty1)`UZF?1w+1v?RH;)_ zyse6Zd{K`Le|{)EYfv*(eBBf$DngZdYKkwb;-Glc<0U_omNf{VQX9%)?V(WzLns*B zs+w1(z7pMtIA-06X-sj{Lr)E@Vd7X$ z!co&4_1Y~t!%^FA)GS9y>6YXR#riT-YU2}QlB-Ue@rKA?_#vZbtY*g+vWA0=Gq2ms zb|fKlIJBUa=IW%4ql)!)ld@P#&CtPpP`Z-z)KY2n)D~*=#`H4kQz@OA31K9StR&pX%o_Dc7aaDBW2FcK!UAey-~0vwW^vf5nSO`Y937mr4O9^Ogj)(Wt=%8x=4!$2aXX>h+T2!p7;ee@FB7-n)5!2^wde ze~J~ijg$TzO*@>(M%i;1DO=~TQa){&DT~&s)Ky2TMsroO93H-wa%r!>P>mWhe&nFP zkdxImcE7){+h?VKM@;}F+nq->d1aiFA1TfNe!pQj>wgVDqCJv^+!Ho8D!hEp21}ta z!oc~QJt7;9h1C*e(8W5UHucmAmcrqOe@d%VRn`VLj{&pcR<xPX~raVX-8*kCCfLRO1rrhMAM zS#>M?6sJCLSQ>b{G)H3$7ecQd>HwuJRNJjAA}w@UUf6F$cDP`Ihg}YGo=R`ee|b6S zIWN=R8!NKiJjPm?yK4dWsyDIz_g|V|ZGG;l^b#+!)31pcIBj<1t(> z!f^Al7;cVYxLgXu`{OZuScKu@%VLOvA%-iZFnlr|!`DR^u3i>H6bv!^bSVtqjK}c7 zrI{IIAe%b&)(LXvybOESY0KPoe`;0d*J@op>hSKo$;Ta4a?gM`QXoJ;s7IS0im3s5 zfl=|(9A#bY;0aVS<@1D+|4df@OBrW?dlc(>iM0vFoI3wfUzMZzzy3vA{Eg3pQ~MctNe7Sy6o z{Nc9@j>pttMqV8pmiP4Ye@H*K^z*)czSPer`uTDFe50SA($5DNE$SG&?a}E+eeYK4 z&{)dS1^xFlXadm?E+@f_o-FSs!EWri0FKCE3lhdyw`A0+*tZHh9dF#y>x)+ZJmZ#` zf1z>9|E~Y~lfLUVIg6x(!fWPuuxGv0%&{vWh8e%6)?_5fQ;8tR;^xC>>?EzCTx&Dtf?2)WcRVMHJNSfLiu?QyGV)c?1C7f zug+)14&U#4tXS5-OqT7@g1gxw(6dOX+)}LlAZM|;Tws~|yp%wxyq(7}2&T5|CMf7scQq7~=h~5NKl%v;NuY6m< zC@prtR|#Fwv91sq;Z^Bc?tLi-3%74qZ0HYZF{YyLNLBop{> zxzMc2nk{P=cZ6qVY|qTtp6B~6D^R|$F7T|kyT~#ofB0?B^IO+eZwKnJ#`Awmtm*lG zAJfTm4qN-+{de!^-Zu!z>AW0_aaQ@wz>{z@KBbIy@SAKc@ziF+jmea&@CzfiI|w}3 z%T&rvB?G%Fmc4A7ljd%LW2!_HUN1E)_|RKp=jL z6>?!iFp*hwU)_hfKB^Lb-_wX+CsqfD3nt$0JMICWD))fvzI(uR*F7M?gt}zlU?aa(eV79NEEl-_r^?*Hg~oN|u3$l5IIiMO?{7&6Pl90XX99%X#R- zPih6-qZ$pQ8HX?UU)6CC$KEb&;kCDmvmH`oB6k2;5bwKsRE{E=v^-z z<6STE);DJ{3>_pL6~^`otl7#6X3p>BoI}6JG?D7;Ja(c&YR4+1^5aOk$QK7#8P{lK z>=>S|)pI-w^c;7@L8z=aKj*6o^4ehB*WE8x41d(?0rUdb*?rx*=e}+|cVCAPuOA=? zIZLNz(^V8VJ@I_k**ejIZuL)%?>b%pmzS1rsa7n2%;FVBs9|gS6F8uMYs*StvP^3e z6KQQY2}Y~+O#)Z2qUKi+IBxaY^|zB;;-Medc~0ALtGC`<58Uca9#Wq*FpAvjK_gTT zuYYcBR7LPW?Lce({pXg)G9sxM6bUJ)8=$vGJ@YkIzA+K#l|N7qRaTQNI7aHjc0Dbe z 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 From 051550ad47d0b28004b56ce8ffc0c1e9b3b10518 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 13 Oct 2022 20:55:01 +0200 Subject: [PATCH 5/6] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B8=D0=BD=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data_svelte/build/bundle.css.gz | Bin 5489 -> 5489 bytes data_svelte/build/bundle.js.gz | Bin 47660 -> 47837 bytes src/WsServer.cpp | 4 ++++ 3 files changed, 4 insertions(+) diff --git a/data_svelte/build/bundle.css.gz b/data_svelte/build/bundle.css.gz index 07b838325628393fb15b33014a7fddd82b1c4112..d1b51f4558c68f0e7ea7ca003db9fc18f2026330 100644 GIT binary patch delta 16 XcmeyU^-+smzMF$%Vw}fD_AF5VGuj1a delta 16 XcmeyU^-+smzMF$1UDRzOdzL5wF!TiR diff --git a/data_svelte/build/bundle.js.gz b/data_svelte/build/bundle.js.gz index 49e8b2f39e4771f9dadf9131a990024d14559937..982ec4265ec98055c4ced4d5479f68ffc4fcb353 100644 GIT binary patch delta 14229 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

o9aS>*#h1V@uF@aOQ5ClW?sc(|@I04N+D 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 delta 14026 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 diff --git a/src/WsServer.cpp b/src/WsServer.cpp index 50ad076b..e2bde5f7 100644 --- a/src/WsServer.cpp +++ b/src/WsServer.cpp @@ -220,6 +220,10 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) SerialPrint("i", F("=>WS"), "Msg from svelte web, WS No: " + String(num) + ", msg: " + msg); } + if (headerStr == "/tst|") { + standWebSocket.sendTXT(num, "/tstr|"); + } + } break; case WStype_BIN: { From 0080854a5363fbf6e40223a6cc26d625c717d2c2 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Thu, 13 Oct 2022 21:07:52 +0200 Subject: [PATCH 6/6] 8266 --- data_svelte/items.json | 8 +++----- myProfile.json | 2 +- platformio.ini | 2 +- src/modules/API.cpp | 4 ++-- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/data_svelte/items.json b/data_svelte/items.json index d0759e6b..01f1ca76 100644 --- a/data_svelte/items.json +++ b/data_svelte/items.json @@ -587,18 +587,16 @@ "num": 44 }, { - "name": "45. PWM ESP32", + "name": "45. PWM ESP8266", "type": "Writing", - "subtype": "Pwm32", + "subtype": "Pwm8266", "id": "pwm", "widget": "range", "page": "Кнопки", "descr": "PWM", "int": 0, - "pin": 2, + "pin": 15, "freq": 5000, - "ledChannel": 2, - "PWM_resolution": 10, "val": 0, "apin": -1, "num": 45 diff --git a/myProfile.json b/myProfile.json index 13008892..83945fc4 100644 --- a/myProfile.json +++ b/myProfile.json @@ -25,7 +25,7 @@ }, "projectProp": { "platformio": { - "default_envs": "esp32_4mb", + "default_envs": "esp8266_4mb", "data_dir": "data_svelte" } }, diff --git a/platformio.ini b/platformio.ini index 847689e4..25ee3a54 100644 --- a/platformio.ini +++ b/platformio.ini @@ -41,7 +41,7 @@ build_src_filter = ${env:esp32_4mb_fromitems.build_src_filter} [platformio] -default_envs = esp32_4mb +default_envs = esp8266_4mb data_dir = data_svelte [common_env_data] diff --git a/src/modules/API.cpp b/src/modules/API.cpp index 2f6e4f3b..ab864765 100644 --- a/src/modules/API.cpp +++ b/src/modules/API.cpp @@ -27,7 +27,7 @@ void* getAPI_IoTServo(String subtype, String params); void* getAPI_Mcp23017(String subtype, String params); void* getAPI_Mp3(String subtype, String params); void* getAPI_Pcf8574(String subtype, String params); -void* getAPI_Pwm32(String subtype, String params); +void* getAPI_Pwm8266(String subtype, String params); void* getAPI_TelegramLT(String subtype, String params); void* getAPI_Lcd2004(String subtype, String params); @@ -60,7 +60,7 @@ if ((tmpAPI = getAPI_IoTServo(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Mcp23017(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Mp3(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Pcf8574(subtype, params)) != nullptr) return tmpAPI; -if ((tmpAPI = getAPI_Pwm32(subtype, params)) != nullptr) return tmpAPI; +if ((tmpAPI = getAPI_Pwm8266(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_TelegramLT(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Lcd2004(subtype, params)) != nullptr) return tmpAPI; return nullptr;