diff --git a/data_svelte/items.json b/data_svelte/items.json index b14eb20e..969ff47f 100644 --- a/data_svelte/items.json +++ b/data_svelte/items.json @@ -757,7 +757,7 @@ "id": "impulse", "widget": "anydataDef", "page": "Кнопки", - "descr": "Количество нажаний", + "descr": "Количество нажатий", "needSave": 0, "int": 300, "inv": 1, @@ -820,7 +820,7 @@ "subtype": "Lcd2004", "id": "Lcd", "widget": "inputTxt", - "page": "Экраны", + "page": "screens", "descr": "LCD Экран", "addr": "0x27", "size": "20,4", @@ -836,7 +836,7 @@ "subtype": "Lcd2004", "id": "Lcd", "widget": "inputTxt", - "page": "Экраны", + "page": "screens", "descr": "LCD Экран", "addr": "0x27", "size": "16,2", @@ -845,5 +845,25 @@ "prefix": "", "postfix": "", "num": 55 + }, + { + "global": 0, + "name": "56. 7 сегментный дисплей TM16XX", + "type": "Writing", + "subtype": "TM16XX", + "id": "tm", + "widget": "inputTxt", + "page": "screens", + "descr": "Экран", + "round": 0, + "chip": 1637, + "numDigits": 4, + "DIO": "13", + "CLK": "14", + "STB": "12", + "intensity": "5", + "on": "1", + "id2show": "", + "num": 56 } ] \ No newline at end of file diff --git a/data_svelte/myProfile.json b/data_svelte/myProfile.json index de8ef3fd..ed4bcb39 100644 --- a/data_svelte/myProfile.json +++ b/data_svelte/myProfile.json @@ -126,11 +126,11 @@ "active": false }, { - "path": "src/modules/sensors/Ds2423", + "path": "src/modules/sensors/Emon", "active": false }, { - "path": "src/modules/sensors/Emon", + "path": "src/modules/sensors/ExampleModule", "active": false }, { @@ -165,6 +165,10 @@ "path": "src/modules/sensors/Ina219", "active": false }, + { + "path": "src/modules/sensors/Ina226", + "active": false + }, { "path": "src/modules/sensors/IoTWiegand", "active": false @@ -314,6 +318,10 @@ { "path": "src/modules/exec/Thermostat", "active": false + }, + { + "path": "src/modules/sensors/Ds2423", + "active": false } ], "screens": [ @@ -333,6 +341,10 @@ "path": "src/modules/display/Smi2_m", "active": true }, + { + "path": "src/modules/display/TM16XX", + "active": true + }, { "path": "src/modules/display/Ws2812b", "active": false diff --git a/data_svelte_lite/items.json b/data_svelte_lite/items.json index b8a7410e..b3894185 100644 --- a/data_svelte_lite/items.json +++ b/data_svelte_lite/items.json @@ -4,7 +4,7 @@ "num": 0 }, { - "header": "Виртуальные элементы" + "header": "virtual_elments" }, { "global": 0, @@ -189,7 +189,7 @@ "num": 12 }, { - "header": "Сенсоры" + "header": "sensors" }, { "name": "13. Acs712 Ток", @@ -197,7 +197,7 @@ "subtype": "Acs712", "id": "amp", "widget": "anydataAmp", - "page": "Сенсоры", + "page": "sensors", "descr": "Ток", "round": 3, "pin": 39, @@ -216,7 +216,7 @@ "subtype": "AnalogAdc", "id": "t", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "Температура", "map": "1,1024,1,100", "plus": 0, @@ -234,7 +234,7 @@ "subtype": "Bme280t", "id": "Tmp3", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "Температура", "int": 15, "addr": "0x77", @@ -248,7 +248,7 @@ "subtype": "Bme280p", "id": "Press3", "widget": "anydataMm", - "page": "Сенсоры", + "page": "sensors", "descr": "Давление", "int": 15, "addr": "0x77", @@ -262,7 +262,7 @@ "subtype": "Bme280h", "id": "Hum3", "widget": "anydataHum", - "page": "Сенсоры", + "page": "sensors", "descr": "Влажность", "int": 15, "addr": "0x77", @@ -276,7 +276,7 @@ "subtype": "Bme280dp", "id": "Dew3", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "Точка росы", "int": 15, "addr": "0x77", @@ -290,7 +290,7 @@ "subtype": "Bmp280t", "id": "tmp3", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "280 Температура", "int": 15, "addr": "0x77", @@ -304,7 +304,7 @@ "subtype": "Bmp280p", "id": "Press3", "widget": "anydataMm", - "page": "Сенсоры", + "page": "sensors", "descr": "280 Давление", "int": 15, "addr": "0x77", @@ -318,7 +318,7 @@ "subtype": "Ds18b20", "id": "dstmp", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "DS Температура", "int": 15, "pin": 2, @@ -471,7 +471,7 @@ "subtype": "Sht20t", "id": "tmp2", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "Температура", "int": 15, "round": 1, @@ -484,7 +484,7 @@ "subtype": "Sht20h", "id": "Hum2", "widget": "anydataHum", - "page": "Сенсоры", + "page": "sensors", "descr": "Влажность", "int": 15, "round": 1, @@ -497,7 +497,7 @@ "subtype": "Sht30t", "id": "tmp30", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "SHT30 Температура", "int": 15, "round": 1, @@ -510,7 +510,7 @@ "subtype": "Sht30h", "id": "Hum30", "widget": "anydataHum", - "page": "Сенсоры", + "page": "sensors", "descr": "SHT30 Влажность", "int": 15, "round": 1, @@ -524,7 +524,7 @@ "subtype": "Sonar", "id": "sonar", "widget": "anydataTmp", - "page": "Сенсоры", + "page": "sensors", "descr": "Расстояние (см)", "pinTrig": 5, "pinEcho": 4, @@ -546,7 +546,7 @@ "num": 36 }, { - "header": "Исполнительные устройства" + "header": "executive_devices" }, { "global": 0, @@ -658,7 +658,7 @@ "num": 43 }, { - "header": "Экраны" + "header": "screens" }, { "global": 0, diff --git a/data_svelte_lite/myProfile.json b/data_svelte_lite/myProfile.json index 24d8a8db..74f9bad7 100644 --- a/data_svelte_lite/myProfile.json +++ b/data_svelte_lite/myProfile.json @@ -29,7 +29,7 @@ } }, "modules": { - "Виртуальные элементы": [ + "virtual_elments": [ { "path": "src/modules/virtual/Cron", "active": true @@ -63,7 +63,7 @@ "active": false } ], - "Сенсоры": [ + "sensors": [ { "path": "src/modules/sensors/Acs712", "active": true @@ -193,7 +193,7 @@ "active": true } ], - "Исполнительные устройства": [ + "executive_devices": [ { "path": "src/modules/exec/ButtonIn", "active": true @@ -267,7 +267,7 @@ "active": false } ], - "Экраны": [ + "screens": [ { "path": "src/modules/display/DwinI", "active": false diff --git a/myProfile.json b/myProfile.json index c5e68598..ed4bcb39 100644 --- a/myProfile.json +++ b/myProfile.json @@ -125,10 +125,6 @@ "path": "src/modules/sensors/DS2401", "active": false }, - { - "path": "src/modules/sensors/Ds2423", - "active": false - }, { "path": "src/modules/sensors/Emon", "active": false @@ -322,6 +318,10 @@ { "path": "src/modules/exec/Thermostat", "active": false + }, + { + "path": "src/modules/sensors/Ds2423", + "active": false } ], "screens": [ @@ -341,6 +341,10 @@ "path": "src/modules/display/Smi2_m", "active": true }, + { + "path": "src/modules/display/TM16XX", + "active": true + }, { "path": "src/modules/display/Ws2812b", "active": false diff --git a/platformio.ini b/platformio.ini index de3940b4..010d464d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -412,6 +412,8 @@ lib_deps = adafruit/Adafruit BusIO @ ^1.13.2 https://github.com/robotclass/RobotClass_LiquidCrystal_I2C marcoschwartz/LiquidCrystal_I2C@^1.1.4 + https://github.com/maxint-rd/TM16xx + adafruit/Adafruit GFX Library @ ^1.11.5 build_src_filter = + + @@ -448,6 +450,7 @@ build_src_filter = + + + + + [env:esp32_4mb_fromitems] lib_deps = @@ -505,7 +508,6 @@ build_src_filter = + + - [env:esp32s2_4mb_fromitems] lib_deps = build_src_filter = diff --git a/src/modules/API.cpp b/src/modules/API.cpp index e4f040c1..f40b7c13 100644 --- a/src/modules/API.cpp +++ b/src/modules/API.cpp @@ -35,6 +35,7 @@ void* getAPI_Pcf8574(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); +void* getAPI_TM16XX(String subtype, String params); void* getAPI(String subtype, String params) { void* tmpAPI; @@ -73,5 +74,6 @@ if ((tmpAPI = getAPI_Pcf8574(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; +if ((tmpAPI = getAPI_TM16XX(subtype, params)) != nullptr) return tmpAPI; return nullptr; } \ No newline at end of file diff --git a/src/modules/display/DwinI/modinfo.json b/src/modules/display/DwinI/modinfo.json index 116fda53..c98f526a 100644 --- a/src/modules/display/DwinI/modinfo.json +++ b/src/modules/display/DwinI/modinfo.json @@ -1,23 +1,22 @@ -{ - "menuSection": "Экраны", - - "configItem": [{ - "global": 0, - "name": "LCD Dwin экран", - "type": "Reading", - "subtype": "DwinI", - "id": "dwin", - "widget": "", - "page": "", - "descr": "", - - "int": 15, - "TX": 17, - "RX": 16, - "line": 2, - "speed": 115200 - }], - +{ + "menuSection": "screens", + "configItem": [ + { + "global": 0, + "name": "LCD Dwin экран", + "type": "Reading", + "subtype": "DwinI", + "id": "dwin", + "widget": "", + "page": "", + "descr": "", + "int": 15, + "TX": 17, + "RX": 16, + "line": 2, + "speed": 115200 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -41,21 +40,13 @@ } ] }, - "defActive": false, - "usedLibs": { - "esp32_4mb": [ - ], - "esp8266_4mb": [ - ], - "esp8266_1mb": [ - ], - "esp8266_1mb_ota": [ - ], - "esp8285_1mb": [ - ], - "esp8285_1mb_ota": [ - ] + "esp32_4mb": [], + "esp8266_4mb": [], + "esp8266_1mb": [], + "esp8266_1mb_ota": [], + "esp8285_1mb": [], + "esp8285_1mb_ota": [] } } \ No newline at end of file diff --git a/src/modules/display/Lcd2004/modinfo.json b/src/modules/display/Lcd2004/modinfo.json index 0cc656ef..67f5cfa1 100644 --- a/src/modules/display/Lcd2004/modinfo.json +++ b/src/modules/display/Lcd2004/modinfo.json @@ -1,40 +1,38 @@ -{ - "menuSection": "Экраны", - - "configItem": [{ - "global": 0, - "name": "LCD экран 2004", - "type": "Reading", - "subtype": "Lcd2004", - "id": "Lcd", - "widget": "inputTxt", - "page": "Экраны", - "descr": "LCD Экран", - - "addr": "0x27", - "size": "20,4", - "coord": "0,0", - "id2show": "", - "prefix": "", - "postfix": "" - }, - { - "name": "LCD экран 1602", - "type": "Reading", - "subtype": "Lcd2004", - "id": "Lcd", - "widget": "inputTxt", - "page": "Экраны", - "descr": "LCD Экран", - - "addr": "0x27", - "size": "16,2", - "coord": "0,0", - "id2show": "", - "prefix": "", - "postfix": "" - }], - +{ + "menuSection": "screens", + "configItem": [ + { + "global": 0, + "name": "LCD экран 2004", + "type": "Reading", + "subtype": "Lcd2004", + "id": "Lcd", + "widget": "inputTxt", + "page": "screens", + "descr": "LCD Экран", + "addr": "0x27", + "size": "20,4", + "coord": "0,0", + "id2show": "", + "prefix": "", + "postfix": "" + }, + { + "name": "LCD экран 1602", + "type": "Reading", + "subtype": "Lcd2004", + "id": "Lcd", + "widget": "inputTxt", + "page": "screens", + "descr": "LCD Экран", + "addr": "0x27", + "size": "16,2", + "coord": "0,0", + "id2show": "", + "prefix": "", + "postfix": "" + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -84,33 +82,41 @@ { "name": "x", "descr": "Устанавливает первую координату", - "params": ["Номер строки первого символа"] + "params": [ + "Номер строки первого символа" + ] }, { "name": "y", "descr": "Устанавливает вторую координату", - "params": ["Номер столбца первого символа"] + "params": [ + "Номер столбца первого символа" + ] }, { "name": "prefix", "descr": "Задает приставку слева от значения", - "params": ["Строка"] + "params": [ + "Строка" + ] }, { "name": "postfix", "descr": "Задает приставку справа от значения", - "params": ["Строка"] + "params": [ + "Строка" + ] }, { "name": "id2show", "descr": "Задает ИД элемента, значение которого хотим отображать на экране", - "params": ["Имя элемента конфигурации"] + "params": [ + "Имя элемента конфигурации" + ] } ] }, - "defActive": true, - "usedLibs": { "esp32_4mb": [ "https://github.com/robotclass/RobotClass_LiquidCrystal_I2C", diff --git a/src/modules/display/NextionUpload/modinfo.json b/src/modules/display/NextionUpload/modinfo.json index a97f2343..a3a7efa5 100644 --- a/src/modules/display/NextionUpload/modinfo.json +++ b/src/modules/display/NextionUpload/modinfo.json @@ -1,6 +1,5 @@ { - "menuSection": "Экраны", - + "menuSection": "screens", "configItem": [ { "global": 0, @@ -17,7 +16,6 @@ "NEXT_RX": 17 } ], - "about": { "authorName": "AVAKS", "authorContact": "https://t.me/@avaks_dev", @@ -36,15 +34,25 @@ "url": "файл прошивки" } }, - "defActive": false, - "usedLibs": { - "esp32_4mb": ["https://github.com/avaksru/ESPNexUpload.git"], - "esp8266_4mb": ["https://github.com/avaksru/ESPNexUpload.git"], - "esp8266_1mb": ["https://github.com/avaksru/ESPNexUpload.git"], - "esp8266_1mb_ota": ["https://github.com/avaksru/ESPNexUpload.git"], - "esp8285_1mb": ["https://github.com/avaksru/ESPNexUpload.git"], - "esp8285_1mb_ota": ["https://github.com/avaksru/ESPNexUpload.git"] + "esp32_4mb": [ + "https://github.com/avaksru/ESPNexUpload.git" + ], + "esp8266_4mb": [ + "https://github.com/avaksru/ESPNexUpload.git" + ], + "esp8266_1mb": [ + "https://github.com/avaksru/ESPNexUpload.git" + ], + "esp8266_1mb_ota": [ + "https://github.com/avaksru/ESPNexUpload.git" + ], + "esp8285_1mb": [ + "https://github.com/avaksru/ESPNexUpload.git" + ], + "esp8285_1mb_ota": [ + "https://github.com/avaksru/ESPNexUpload.git" + ] } -} +} \ No newline at end of file diff --git a/src/modules/display/Smi2_m/modinfo.json b/src/modules/display/Smi2_m/modinfo.json index 360e6374..00daaa94 100644 --- a/src/modules/display/Smi2_m/modinfo.json +++ b/src/modules/display/Smi2_m/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Экраны", + "menuSection": "screens", "configItem": [ { "global": 0, diff --git a/src/modules/display/TM16XX/modinfo.json b/src/modules/display/TM16XX/modinfo.json index 9c6461ed..d42f585d 100644 --- a/src/modules/display/TM16XX/modinfo.json +++ b/src/modules/display/TM16XX/modinfo.json @@ -1,27 +1,26 @@ -{ - "menuSection": "Экраны", - - "configItem": [{ - "global": 0, - "name": "7 сегментный дисплей TM16XX", - "type": "Writing", - "subtype": "TM16XX", - "id": "tm", - "widget": "inputTxt", - "page": "Экраны", - "descr": "Экран", - "round": 0, - - "chip": 1637, - "numDigits": 4, - "DIO": "13", - "CLK": "14", - "STB": "12", - "intensity": "5", - "on": "1", - "id2show": "" - }], - +{ + "menuSection": "screens", + "configItem": [ + { + "global": 0, + "name": "7 сегментный дисплей TM16XX", + "type": "Writing", + "subtype": "TM16XX", + "id": "tm", + "widget": "inputTxt", + "page": "screens", + "descr": "Экран", + "round": 0, + "chip": 1637, + "numDigits": 4, + "DIO": "13", + "CLK": "14", + "STB": "12", + "intensity": "5", + "on": "1", + "id2show": "" + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -74,28 +73,34 @@ { "name": "x", "descr": "Устанавливает первую координату", - "params": ["Номер строки первого символа"] + "params": [ + "Номер строки первого символа" + ] }, { "name": "y", "descr": "Устанавливает вторую координату", - "params": ["Номер столбца первого символа"] + "params": [ + "Номер столбца первого символа" + ] }, { "name": "descr", "descr": "Задает приставку слева от значения", - "params": ["Строка"] + "params": [ + "Строка" + ] }, { "name": "id2show", "descr": "Задает ИД элемента, значение которого хотим отображать на экране", - "params": ["Имя элемента конфигурации"] + "params": [ + "Имя элемента конфигурации" + ] } ] }, - "defActive": true, - "usedLibs": { "esp32_4mb": [ "https://github.com/maxint-rd/TM16xx", diff --git a/src/modules/display/Ws2812b/modinfo.json b/src/modules/display/Ws2812b/modinfo.json index 6ff7dd56..4c219ba2 100644 --- a/src/modules/display/Ws2812b/modinfo.json +++ b/src/modules/display/Ws2812b/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Экраны", + "menuSection": "screens", "configItem": [ { "global": 0, diff --git a/src/modules/exec/ButtonIn/modinfo.json b/src/modules/exec/ButtonIn/modinfo.json index 690ace99..cea43ea4 100644 --- a/src/modules/exec/ButtonIn/modinfo.json +++ b/src/modules/exec/ButtonIn/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Исполнительные устройства", + "menuSection": "executive_devices", "configItem": [ { "global": 0, diff --git a/src/modules/exec/ButtonOut/modinfo.json b/src/modules/exec/ButtonOut/modinfo.json index 35e4d5c7..7a8ddc37 100644 --- a/src/modules/exec/ButtonOut/modinfo.json +++ b/src/modules/exec/ButtonOut/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Исполнительные устройства", + "menuSection": "executive_devices", "configItem": [ { "global": 0, diff --git a/src/modules/exec/Buzzer/modinfo.json b/src/modules/exec/Buzzer/modinfo.json index d3ec13f4..44dcdf97 100644 --- a/src/modules/exec/Buzzer/modinfo.json +++ b/src/modules/exec/Buzzer/modinfo.json @@ -1,29 +1,29 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Пассивный звуковой извещатель", - "type": "Writing", - "subtype": "Buzzer", - "id": "buzzer", - "widget": "toggle", - "page": "Кнопки", - "descr": "Buzzer", - "int": 4000, - "pin": 14, - "freq": 2000, - "duration": 1000, - "beatLevel": 4, - "tempo": 120, - "tempoCorrection": 1, - "pauseBetween": 0, - "transpose": 0, - "cycle": 0, - "indication": 1, - "val": 0 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Пассивный звуковой извещатель", + "type": "Writing", + "subtype": "Buzzer", + "id": "buzzer", + "widget": "toggle", + "page": "Кнопки", + "descr": "Buzzer", + "int": 4000, + "pin": 14, + "freq": 2000, + "duration": 1000, + "beatLevel": 4, + "tempo": 120, + "tempoCorrection": 1, + "pauseBetween": 0, + "transpose": 0, + "cycle": 0, + "indication": 1, + "val": 0 + } + ], "about": { "authorName": "Alex K", "authorContact": "https://t.me/cmche", @@ -43,11 +43,11 @@ "int": "Количество миллисекунд между повторами одиночного сигнала", "pin": "Управляемый пин", "freq": "Частота сигнала, Hz", - "duration": "Длительность сигнала, ms", + "duration": "Длительность сигнала, ms", "beatLevel": "Долей в такте", - "tempo": "Оригинальный темп мелодии, bpm", - "tempoCorrection": "Коррекция темпа мелодии", - "pauseBetween": "Дополнительная пауза между нот, в долях от длительности ноты", + "tempo": "Оригинальный темп мелодии, bpm", + "tempoCorrection": "Коррекция темпа мелодии", + "pauseBetween": "Дополнительная пауза между нот, в долях от длительности ноты", "transpose": "Транспонирование на количество полутонов. +/-12 - для повышения/понижения на октаву", "cycle": "Повтор мелодии/серии сигналов", "indication": "Индикация в виджет, что идет сигнал, играет мелодия", @@ -57,17 +57,30 @@ { "name": "tone", "descr": "Проигрывание одиночного сигнала (без индикации)", - "params": ["Частота", "Длительность (ms)"] + "params": [ + "Частота", + "Длительность (ms)" + ] }, { "name": "tones", "descr": "Проигрывание серии сигналов, до 128", - "params": ["Частота 1-го сигнала", "Длительность 1-го сигнала (ms)","Частота 2-го сигала", "Длительность 2-го сигнала", "....итд"] + "params": [ + "Частота 1-го сигнала", + "Длительность 1-го сигнала (ms)", + "Частота 2-го сигала", + "Длительность 2-го сигнала", + "....итд" + ] }, { "name": "melody", "descr": "Проигрывание мелодии, до 256 нот. Кодировка 'YYX.ZZZ'. Научная нотация: YY - обозначение ноты (C,CS,D,DS,E,F,FS,G,GS,A,AS,B), X - номер октавы (0-9), ZZZ - длительность в тысячных долях такта (0-999). Обязательно в двойных кавычках. 'AS4.50' - Ля# 4-й октавы, 1/2 такта. На Github лежит Excel файл для перекодировки.", - "params": ["Код 1-ой ноты","Код 2-й ноты"," и тд"] + "params": [ + "Код 1-ой ноты", + "Код 2-й ноты", + " и тд" + ] }, { "name": "notone", @@ -76,15 +89,19 @@ }, { "name": "melodySetting", - "descr": "Перенастройка параметров мелодии: Долей в такте - (обычно 4), Оригинальный темп -(40-208 bpm), Коррекция темпа - в k раз быстрее/медленнее, Пауза между нот (стакато) - доля от длительности, Коррекция тональности (транспонирование) - в k раз выше/ниже, Повтор 1/0. Чтобы не изменялось значение вбить любой текст в ковычках ", - "params": ["Долей в такте", "Оригинальный темп", "Коррекция темпа", "Пауза между нот", "Коррекция тональности", "Повтор мелодии/серии сигналов"] + "descr": "Перенастройка параметров мелодии: Долей в такте - (обычно 4), Оригинальный темп -(40-208 bpm), Коррекция темпа - в k раз быстрее/медленнее, Пауза между нот (стакато) - доля от длительности, Коррекция тональности (транспонирование) - в k раз выше/ниже, Повтор 1/0. Чтобы не изменялось значение вбить любой текст в ковычках ", + "params": [ + "Долей в такте", + "Оригинальный темп", + "Коррекция темпа", + "Пауза между нот", + "Коррекция тональности", + "Повтор мелодии/серии сигналов" + ] } - ] }, - "defActive": true, - "usedLibs": { "esp32_4mb": [], "esp8266_4mb": [], @@ -94,5 +111,5 @@ "esp8285_1mb_ota": [], "esp8266_2mb": [], "esp8266_2mb_ota": [] - } -} + } +} \ No newline at end of file diff --git a/src/modules/exec/Enconder/modinfo.json b/src/modules/exec/Enconder/modinfo.json index ce92fb01..c495b1b8 100644 --- a/src/modules/exec/Enconder/modinfo.json +++ b/src/modules/exec/Enconder/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Исполнительные устройства", + "menuSection": "executive_devices", "configItem": [ { "global": 0, @@ -12,8 +12,7 @@ "descr": "Громкость", "needSave": 0, "val": "0", - "round" : 0, - + "round": 0, "step": 1, "stepOnPress": 5, "pins": "4,5,2" @@ -37,7 +36,7 @@ "moduleDesc": "модуль для работы с Энкодером. Кнопочный вариант совместим с модулями Multitouch и ButtonIn", "retInfo": "Значение счетчика", "propInfo": { - "step" : "Размер шага Энкодера, может принимать значение 0.0001 или 1000", + "step": "Размер шага Энкодера, может принимать значение 0.0001 или 1000", "stepOnPress": "Размер шага Энкодера при нажатой кнопке, 0 - отключает учет", "pins": "Подключеные пины (CLK, DT, SW)" } diff --git a/src/modules/exec/EspCam/modinfo.json b/src/modules/exec/EspCam/modinfo.json index 429beddf..a0e01934 100644 --- a/src/modules/exec/EspCam/modinfo.json +++ b/src/modules/exec/EspCam/modinfo.json @@ -1,22 +1,21 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Camera OV2640 (ESPcam)", - "type": "Reading", - "subtype": "EspCam", - "id": "EspCam", - "widget": "", - "page": "", - "descr": "", - - "int": 60, - "useLed": 0, - "ticker": 0, - "webTicker": 0 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Camera OV2640 (ESPcam)", + "type": "Reading", + "subtype": "EspCam", + "id": "EspCam", + "widget": "", + "page": "", + "descr": "", + "int": 60, + "useLed": 0, + "ticker": 0, + "webTicker": 0 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -45,7 +44,9 @@ { "name": "ledOn", "descr": "Включить подсветку", - "params": ["Яркость 0-255"] + "params": [ + "Яркость 0-255" + ] }, { "name": "ledOff", @@ -54,9 +55,7 @@ } ] }, - "defActive": false, - "usedLibs": { "esp32_4mb": [ "espressif/esp32-camera @ ^2.0.0" diff --git a/src/modules/exec/Ftp/modinfo.json b/src/modules/exec/Ftp/modinfo.json index 50392527..1f6d86d2 100644 --- a/src/modules/exec/Ftp/modinfo.json +++ b/src/modules/exec/Ftp/modinfo.json @@ -1,46 +1,41 @@ { - "menuSection": "Исполнительные устройства", - "configItem": [ - { - "global": 0, - "name": "FTP сервер", - "type": "Reading", - "subtype": "ftp", - "id": "ftp", - "widget": "nil", - "page": "", - "descr": "FTP сервер", - "login": "admin", - "pass": "admin" - - - } - - - ], - "about": { - "authorName": "Bubnov Mikhail", - "authorContact": "https://t.me/Mit4bmw", - "authorGit": "https://github.com/Mit4el", - "specialThanks": "", - "moduleName": "FTPModule", - "moduleVersion": "0.1", - "usedRam": { - "esp32_4mb": 15, - "esp8266_4mb": 15 - }, - "title": "FTP-сервер", - "moduleDesc": "Запускает FTP-сервер на плате esp", - "propInfo": { - "login": "Логин FTP сервера", - "pass": "Пароль FTP сервера" - } - }, - "defActive": false, - "usedLibs": { - "esp32_4mb": [], - "esp32s2_4mb": [], - "esp8266_4mb": [] - } -} - + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "FTP сервер", + "type": "Reading", + "subtype": "ftp", + "id": "ftp", + "widget": "nil", + "page": "", + "descr": "FTP сервер", + "login": "admin", + "pass": "admin" + } + ], + "about": { + "authorName": "Bubnov Mikhail", + "authorContact": "https://t.me/Mit4bmw", + "authorGit": "https://github.com/Mit4el", + "specialThanks": "", + "moduleName": "FTPModule", + "moduleVersion": "0.1", + "usedRam": { + "esp32_4mb": 15, + "esp8266_4mb": 15 + }, + "title": "FTP-сервер", + "moduleDesc": "Запускает FTP-сервер на плате esp", + "propInfo": { + "login": "Логин FTP сервера", + "pass": "Пароль FTP сервера" + } + }, + "defActive": false, + "usedLibs": { + "esp32_4mb": [], + "esp32s2_4mb": [], + "esp8266_4mb": [] + } +} \ No newline at end of file diff --git a/src/modules/exec/HttpGet/modinfo.json b/src/modules/exec/HttpGet/modinfo.json index 0c97357e..2c483c06 100644 --- a/src/modules/exec/HttpGet/modinfo.json +++ b/src/modules/exec/HttpGet/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Исполнительные устройства", + "menuSection": "executive_devices", "configItem": [ { "global": 0, @@ -41,7 +41,8 @@ "name": "post", "descr": "Отправить http запрос методом POST.", "params": [ - "URL","message" + "URL", + "message" ] } ] diff --git a/src/modules/exec/IoTServo/modinfo.json b/src/modules/exec/IoTServo/modinfo.json index b9a16e1b..a5494760 100644 --- a/src/modules/exec/IoTServo/modinfo.json +++ b/src/modules/exec/IoTServo/modinfo.json @@ -1,22 +1,21 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Сервопривод", - "type": "Writing", - "subtype": "IoTServo", - "id": "servo", - "widget": "range", - "page": "servo", - "descr": "угол", - - "int": 1, - "pin": 12, - "apin": -1, - "amap": "0, 4096, 0, 180" - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Сервопривод", + "type": "Writing", + "subtype": "IoTServo", + "id": "servo", + "widget": "range", + "page": "servo", + "descr": "угол", + "int": 1, + "pin": 12, + "apin": -1, + "amap": "0, 4096, 0, 180" + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -41,13 +40,13 @@ { "name": "rotate", "descr": "Повернуть привод на значение", - "params": ["Числовое значение"] + "params": [ + "Числовое значение" + ] } ] }, - "defActive": true, - "usedLibs": { "esp32_4mb": [ "https://github.com/RoboticsBrno/ServoESP32" diff --git a/src/modules/exec/Mcp23008/modinfo.json b/src/modules/exec/Mcp23008/modinfo.json index d04c12f7..2f322ce3 100644 --- a/src/modules/exec/Mcp23008/modinfo.json +++ b/src/modules/exec/Mcp23008/modinfo.json @@ -1,21 +1,20 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Расширитель портов Mcp23008", - "type": "Reading", - "subtype": "Mcp23008", - "id": "Mcp", - "widget": "", - "page": "", - "descr": "", - - "int": "0", - "addr": "0x20", - "index": 1 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Расширитель портов Mcp23008", + "type": "Reading", + "subtype": "Mcp23008", + "id": "Mcp", + "widget": "", + "page": "", + "descr": "", + "int": "0", + "addr": "0x20", + "index": 1 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -35,9 +34,7 @@ "index": "Значения от 1 до 4, где при выборе 1 будет нумерация pin 100-115, при выборе 2 200-215 и т.д." } }, - "defActive": false, - "usedLibs": { "esp32_4mb": [ "adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0", diff --git a/src/modules/exec/Mcp23017/modinfo.json b/src/modules/exec/Mcp23017/modinfo.json index ad20b6ca..88659ccb 100644 --- a/src/modules/exec/Mcp23017/modinfo.json +++ b/src/modules/exec/Mcp23017/modinfo.json @@ -1,21 +1,20 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Расширитель портов Mcp23017", - "type": "Reading", - "subtype": "Mcp23017", - "id": "Mcp", - "widget": "", - "page": "", - "descr": "", - - "int": "0", - "addr": "0x20", - "index": 1 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Расширитель портов Mcp23017", + "type": "Reading", + "subtype": "Mcp23017", + "id": "Mcp", + "widget": "", + "page": "", + "descr": "", + "int": "0", + "addr": "0x20", + "index": 1 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -35,9 +34,7 @@ "index": "Значения от 1 до 4, где при выборе 1 будет нумерация pin 100-115, при выборе 2 200-215 и т.д." } }, - "defActive": true, - "usedLibs": { "esp32_4mb": [ "adafruit/Adafruit MCP23017 Arduino Library@^2.1.0", diff --git a/src/modules/exec/Mp3/modinfo.json b/src/modules/exec/Mp3/modinfo.json index efd4f6f8..381bd309 100644 --- a/src/modules/exec/Mp3/modinfo.json +++ b/src/modules/exec/Mp3/modinfo.json @@ -1,21 +1,20 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "MP3 плеер", - "type": "Reading", - "subtype": "Mp3", - "id": "mp3", - "widget": "", - "page": "", - "descr": "", - - "int": 1, - "pins": "14,12", - "volume": 20 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "MP3 плеер", + "type": "Reading", + "subtype": "Mp3", + "id": "mp3", + "widget": "", + "page": "", + "descr": "", + "int": 1, + "pins": "14,12", + "volume": 20 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -59,12 +58,17 @@ { "name": "volume", "descr": "Установить громкость", - "params": ["Значение громкости"] + "params": [ + "Значение громкости" + ] }, { "name": "playFolder", "descr": "Проиграть файл из папки", - "params": ["Номер папки", "Номер файла"] + "params": [ + "Номер папки", + "Номер файла" + ] }, { "name": "play", @@ -83,9 +87,7 @@ } ] }, - "defActive": true, - "usedLibs": { "esp32_4mb": [ "dfrobot/DFRobotDFPlayerMini @ ^1.0.5" diff --git a/src/modules/exec/Multitouch/modinfo.json b/src/modules/exec/Multitouch/modinfo.json index a9e103d7..d9d2f31a 100644 --- a/src/modules/exec/Multitouch/modinfo.json +++ b/src/modules/exec/Multitouch/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Исполнительные устройства", + "menuSection": "executive_devices", "configItem": [ { "global": 0, @@ -52,4 +52,4 @@ "esp8266_2mb": [], "esp8266_2mb_ota": [] } -} +} \ No newline at end of file diff --git a/src/modules/exec/MySensors/modinfo.json b/src/modules/exec/MySensors/modinfo.json index b611a1d7..252c70d1 100644 --- a/src/modules/exec/MySensors/modinfo.json +++ b/src/modules/exec/MySensors/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Исполнительные устройства", + "menuSection": "executive_devices", "configItem": [ { "global": 0, diff --git a/src/modules/exec/Pcf8574/modinfo.json b/src/modules/exec/Pcf8574/modinfo.json index c3bfd7f4..c706ed46 100644 --- a/src/modules/exec/Pcf8574/modinfo.json +++ b/src/modules/exec/Pcf8574/modinfo.json @@ -1,20 +1,20 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Расширитель портов Pcf8574", - "type": "Reading", - "subtype": "Pcf8574", - "id": "Pcf", - "widget": "", - "page": "", - "descr": "", - "int": "0", - "addr": "0x20", - "index": 1 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Расширитель портов Pcf8574", + "type": "Reading", + "subtype": "Pcf8574", + "id": "Pcf", + "widget": "", + "page": "", + "descr": "", + "int": "0", + "addr": "0x20", + "index": 1 + } + ], "about": { "authorName": "Serghei Crasnicov", "authorContact": "https://t.me/Serghei63", @@ -29,9 +29,7 @@ "index": "Значения от 1 до 4, где при выборе 1 будет нумерация pin 100-115, при выборе 2 200-215 и т.д." } }, - "defActive": true, - "usedLibs": { "esp32_4mb": [ "adafruit/Adafruit BusIO @ ^1.13.2" diff --git a/src/modules/exec/Pwm32/modinfo.json b/src/modules/exec/Pwm32/modinfo.json index dda8786b..e8a685b8 100644 --- a/src/modules/exec/Pwm32/modinfo.json +++ b/src/modules/exec/Pwm32/modinfo.json @@ -1,24 +1,24 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "PWM ESP32", - "type": "Writing", - "subtype": "Pwm32", - "id": "pwm", - "widget": "range", - "page": "Кнопки", - "descr": "PWM", - "int": 0, - "pin": 2, - "freq": 5000, - "ledChannel": 2, - "PWM_resolution": 10, - "val": 0, - "apin": -1 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "PWM ESP32", + "type": "Writing", + "subtype": "Pwm32", + "id": "pwm", + "widget": "range", + "page": "Кнопки", + "descr": "PWM", + "int": 0, + "pin": 2, + "freq": 5000, + "ledChannel": 2, + "PWM_resolution": 10, + "val": 0, + "apin": -1 + } + ], "about": { "authorName": "Avaks", "authorContact": "https://t.me/Avaks", @@ -42,9 +42,7 @@ "freq": "Частота" } }, - "defActive": true, - "usedLibs": { "esp32_4mb": [] } diff --git a/src/modules/exec/Pwm8266/modinfo.json b/src/modules/exec/Pwm8266/modinfo.json index dfd53149..f446db57 100644 --- a/src/modules/exec/Pwm8266/modinfo.json +++ b/src/modules/exec/Pwm8266/modinfo.json @@ -1,22 +1,22 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "PWM ESP8266", - "type": "Writing", - "subtype": "Pwm8266", - "id": "pwm", - "widget": "range", - "page": "Кнопки", - "descr": "PWM", - "int": 0, - "pin": 15, - "freq": 5000, - "val": 0, - "apin": -1 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "PWM ESP8266", + "type": "Writing", + "subtype": "Pwm8266", + "id": "pwm", + "widget": "range", + "page": "Кнопки", + "descr": "PWM", + "int": 0, + "pin": 15, + "freq": 5000, + "val": 0, + "apin": -1 + } + ], "about": { "authorName": "Avaks", "authorContact": "https://t.me/Avaks", @@ -38,9 +38,7 @@ "freq": "Частота" } }, - "defActive": true, - "usedLibs": { "esp8266_4mb": [], "esp8266_1mb": [], diff --git a/src/modules/exec/SDcard/modinfo.json b/src/modules/exec/SDcard/modinfo.json index ef917963..eea8b9c2 100644 --- a/src/modules/exec/SDcard/modinfo.json +++ b/src/modules/exec/SDcard/modinfo.json @@ -1,19 +1,18 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "SD карта", - "type": "Writing", - "subtype": "SDcard", - "id": "sd", - "widget": "", - "page": "", - "descr": "", - - "int": 1 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "SD карта", + "type": "Writing", + "subtype": "SDcard", + "id": "sd", + "widget": "", + "page": "", + "descr": "", + "int": 1 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -31,9 +30,7 @@ "int": "Не используется." } }, - "defActive": false, - "usedLibs": { "esp32_4mb": [ "espressif/esp32-camera @ ^2.0.0" diff --git a/src/modules/exec/SysExt/modinfo.json b/src/modules/exec/SysExt/modinfo.json index 3f4313dc..bb978bff 100644 --- a/src/modules/exec/SysExt/modinfo.json +++ b/src/modules/exec/SysExt/modinfo.json @@ -1,18 +1,18 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Доп. функции системы", - "type": "Reading", - "subtype": "SysExt", - "id": "SysExt", - "widget": "", - "page": "", - "descr": "", - "int": 15 - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Доп. функции системы", + "type": "Reading", + "subtype": "SysExt", + "id": "SysExt", + "widget": "", + "page": "", + "descr": "", + "int": 15 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -30,9 +30,7 @@ "int": "Не используется" } }, - "defActive": false, - "usedLibs": { "esp32_4mb": [], "esp8266_4mb": [] diff --git a/src/modules/exec/Telegram/modinfo.json b/src/modules/exec/Telegram/modinfo.json index b28a2478..a5f6bda1 100644 --- a/src/modules/exec/Telegram/modinfo.json +++ b/src/modules/exec/Telegram/modinfo.json @@ -1,23 +1,22 @@ -{ - "menuSection": "Исполнительные устройства", - - "configItem": [{ - "global": 0, - "name": "Телеграм-Бот", - "type": "Writing", - "subtype": "Telegram", - "id": "tg", - "widget": "", - "page": "", - "descr": "", - "int": 10, - - "token": "", - "autos": 1, - "receiveMsg": 0, - "chatID": "" - }], - +{ + "menuSection": "executive_devices", + "configItem": [ + { + "global": 0, + "name": "Телеграм-Бот", + "type": "Writing", + "subtype": "Telegram", + "id": "tg", + "widget": "", + "page": "", + "descr": "", + "int": 10, + "token": "", + "autos": 1, + "receiveMsg": 0, + "chatID": "" + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", @@ -38,21 +37,23 @@ "chatID": "ИД диалога с контактом. Необходим для отправки сообщений именно вам." }, "funcInfo": [ - { + { "name": "sendMsg", "descr": "Отправить сообщение без повторений.", - "params": ["Сообщение, может быть строкой, числом или ИД другого элемента для получения значения"] + "params": [ + "Сообщение, может быть строкой, числом или ИД другого элемента для получения значения" + ] }, - { + { "name": "sendOftenMsg", "descr": "Отправить сообщение в любом случае, даж если отправляли такое ранее.", - "params": ["Сообщение, может быть строкой, числом или ИД другого элемента для получения значения"] + "params": [ + "Сообщение, может быть строкой, числом или ИД другого элемента для получения значения" + ] } - ] + ] }, - "defActive": false, - "usedLibs": { "esp32_4mb": [ "CTBot @2.1.9" diff --git a/src/modules/exec/TelegramLT/modinfo.json b/src/modules/exec/TelegramLT/modinfo.json index 49c44966..a94a0ca3 100644 --- a/src/modules/exec/TelegramLT/modinfo.json +++ b/src/modules/exec/TelegramLT/modinfo.json @@ -1,6 +1,5 @@ { - "menuSection": "Исполнительные устройства", - + "menuSection": "executive_devices", "configItem": [ { "global": 0, @@ -15,7 +14,6 @@ "chatID": "" } ], - "about": { "authorName": "AVAKS", "authorContact": "https://t.me/@avaks_dev", @@ -51,9 +49,7 @@ } ] }, - "defActive": true, - "usedLibs": { "esp32_4mb": [], "esp32s2_4mb": [], @@ -65,4 +61,4 @@ "esp8266_2mb": [], "esp8266_2mb_ota": [] } -} +} \ No newline at end of file diff --git a/src/modules/exec/Thermostat/modinfo.json b/src/modules/exec/Thermostat/modinfo.json index 9c356ea3..925e0df3 100644 --- a/src/modules/exec/Thermostat/modinfo.json +++ b/src/modules/exec/Thermostat/modinfo.json @@ -1,6 +1,5 @@ { - "menuSection": "Исполнительные устройства", - + "menuSection": "executive_devices", "configItem": [ { "global": 0, @@ -73,7 +72,6 @@ "outside_id": "" } ], - "about": { "authorName": "AVAKS", "authorContact": "https://t.me/@avaks_dev", @@ -106,28 +104,34 @@ { "name": "enable", "descr": "включить / выключить термостатирование (режим AUTO) применим к PID и Гистере́зис ", - "params": ["thermostat.enable(1) - вкл, thermostat.enable(0) - выкл, "] + "params": [ + "thermostat.enable(1) - вкл, thermostat.enable(0) - выкл, " + ] }, { "name": "KP", "descr": "Пропорциональный коэффициент PID .", - "params": ["thermostat.KP(1) - задает значение коэффициента"] + "params": [ + "thermostat.KP(1) - задает значение коэффициента" + ] }, { "name": "KI", "descr": "Интегральный коэффициент PID .", - "params": ["thermostat.KI(1) - задает значение коэффициента"] + "params": [ + "thermostat.KI(1) - задает значение коэффициента" + ] }, { "name": "KD", "descr": "Дифференциальный коэффициент PID .", - "params": ["thermostat.KD(1) - задает значение коэффициента"] + "params": [ + "thermostat.KD(1) - задает значение коэффициента" + ] } ] }, - "defActive": false, - "usedLibs": { "esp32_4mb": [], "esp8266_4mb": [], @@ -138,4 +142,4 @@ "esp8266_2mb": [], "esp8266_2mb_ota": [] } -} +} \ No newline at end of file diff --git a/src/modules/sensors/A02Distance/modinfo.json b/src/modules/sensors/A02Distance/modinfo.json index bc6a494a..24b0ba12 100644 --- a/src/modules/sensors/A02Distance/modinfo.json +++ b/src/modules/sensors/A02Distance/modinfo.json @@ -1,9 +1,9 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "name": "A02 Дальность", - "type": "Reading", + "type": "Reading", "subtype": "A02Distance", "id": "dist", "widget": "anydataCm", diff --git a/src/modules/sensors/Acs712/modinfo.json b/src/modules/sensors/Acs712/modinfo.json index ec03c837..42c0b23b 100644 --- a/src/modules/sensors/Acs712/modinfo.json +++ b/src/modules/sensors/Acs712/modinfo.json @@ -1,9 +1,9 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "name": "Acs712 Ток", - "type": "Reading", + "type": "Reading", "subtype": "Acs712", "id": "amp", "widget": "anydataAmp", @@ -13,10 +13,10 @@ "pin": 39, "int": 5, "rms": 1, - "vref": 5000, + "vref": 5000, "sens": 100, - "adczero" : 512, - "btn-setZero": "nil" + "adczero": 512, + "btn-setZero": "nil" } ], "about": { @@ -34,14 +34,14 @@ "rms": "1 - подсчет средне-квадратического тока (переменный), 0 - подсчет средне-арифмитического тока (постоянный)", "vref": "Vref (мВ) - Опороное наряжение питания Acs712, по умолчанию = 5000мВ", "sens": "Чувствительность датчика тока: 5A = 185mВ/A , 20A = 100mВ/A , 30A = 66mВ/A ", - "adczero" : "Переменная калибровки нулевого значения отсчетов АЦП при нулевой нагрузке. Для ESP8266 - 512, Для ESP32 -2048, это 2.5В = 0А (1,65 с делителем) для Acs712 20A и 30A при стабильном токе 5В", - "btn-setZero": "Кнопка калибровки нулевого значения отсчетов АЦП при нулевой нагрузке. Нагрузка в момент калибровки должна быть отключена! После перезагрузки будет установлено в значение по умолчанию adczero. Для сохранение смотрим лог, и изменияем adczero" + "adczero": "Переменная калибровки нулевого значения отсчетов АЦП при нулевой нагрузке. Для ESP8266 - 512, Для ESP32 -2048, это 2.5В = 0А (1,65 с делителем) для Acs712 20A и 30A при стабильном токе 5В", + "btn-setZero": "Кнопка калибровки нулевого значения отсчетов АЦП при нулевой нагрузке. Нагрузка в момент калибровки должна быть отключена! После перезагрузки будет установлено в значение по умолчанию adczero. Для сохранение смотрим лог, и изменияем adczero" } }, "defActive": true, "usedLibs": { "esp32_4mb": [], - "esp32s2_4mb": [], + "esp32s2_4mb": [], "esp8266_4mb": [], "esp8266_1mb": [], "esp8266_1mb_ota": [], diff --git a/src/modules/sensors/Ads1115/modinfo.json b/src/modules/sensors/Ads1115/modinfo.json index 6395fbff..d859db77 100644 --- a/src/modules/sensors/Ads1115/modinfo.json +++ b/src/modules/sensors/Ads1115/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/AhtXX/modinfo.json b/src/modules/sensors/AhtXX/modinfo.json index 7b180bec..43d1a2f9 100644 --- a/src/modules/sensors/AhtXX/modinfo.json +++ b/src/modules/sensors/AhtXX/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -12,7 +12,7 @@ "descr": "AHTXX Температура", "int": 15, "addr": "0x38", - "shtType":1, + "shtType": 1, "round": 1 }, { @@ -26,7 +26,7 @@ "descr": "AHTXX Влажность", "int": 15, "addr": "0x38", - "shtType":1, + "shtType": 1, "round": 1 } ], diff --git a/src/modules/sensors/AnalogAdc/modinfo.json b/src/modules/sensors/AnalogAdc/modinfo.json index a9a55c17..a28e901a 100644 --- a/src/modules/sensors/AnalogAdc/modinfo.json +++ b/src/modules/sensors/AnalogAdc/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/BH_1750/modinfo.json b/src/modules/sensors/BH_1750/modinfo.json index 832e4c5c..0843f2e7 100644 --- a/src/modules/sensors/BH_1750/modinfo.json +++ b/src/modules/sensors/BH_1750/modinfo.json @@ -1,19 +1,19 @@ -{ - "menuSection": "Сенсоры", - - "configItem": [{ - "global": 0, - "name": "Cенсор освещенность Bh1750", - "type": "Reading", - "subtype": "Bh1750", - "id": "Bh1750", - "widget": "anydata", - "page": "Сенсоры", - "descr": "Освещённость", - "round": 1, - "int": 15 - }], - +{ + "menuSection": "sensors", + "configItem": [ + { + "global": 0, + "name": "Cенсор освещенность Bh1750", + "type": "Reading", + "subtype": "Bh1750", + "id": "Bh1750", + "widget": "anydata", + "page": "Сенсоры", + "descr": "Освещённость", + "round": 1, + "int": 15 + } + ], "about": { "authorName": "Ilya Belyakov", "authorContact": "https://t.me/Biveraxe", diff --git a/src/modules/sensors/Ble/modinfo.json b/src/modules/sensors/Ble/modinfo.json index fda2ea7a..0a231625 100644 --- a/src/modules/sensors/Ble/modinfo.json +++ b/src/modules/sensors/Ble/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "name": "bluetooth сканер", @@ -42,7 +42,10 @@ "esp32_4mb": 1261449, "esp8266_4mb": 0 }, - "subTypes": ["BleSens", "BleScan"], + "subTypes": [ + "BleSens", + "BleScan" + ], "title": "Сканер Bluetooth", "moduleDesc": "Позволяет получить данные с Bluetooth часов и термометров Mijia, Xiaomi, Cleargrass, ...", "propInfo": { @@ -61,4 +64,4 @@ "https://github.com/avaksru/decoder.git" ] } -} +} \ No newline at end of file diff --git a/src/modules/sensors/Bme280/modinfo.json b/src/modules/sensors/Bme280/modinfo.json index 5bb6f9b2..4f11d152 100644 --- a/src/modules/sensors/Bme280/modinfo.json +++ b/src/modules/sensors/Bme280/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Bmp280/modinfo.json b/src/modules/sensors/Bmp280/modinfo.json index ddbf7079..608d5c18 100644 --- a/src/modules/sensors/Bmp280/modinfo.json +++ b/src/modules/sensors/Bmp280/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/DS2401/modinfo.json b/src/modules/sensors/DS2401/modinfo.json index 8364b4f0..a7db4500 100644 --- a/src/modules/sensors/DS2401/modinfo.json +++ b/src/modules/sensors/DS2401/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Dht1122/modinfo.json b/src/modules/sensors/Dht1122/modinfo.json index 7e5dc5be..604c0a2c 100644 --- a/src/modules/sensors/Dht1122/modinfo.json +++ b/src/modules/sensors/Dht1122/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Ds18b20/modinfo.json b/src/modules/sensors/Ds18b20/modinfo.json index 9a4519a4..a5423121 100644 --- a/src/modules/sensors/Ds18b20/modinfo.json +++ b/src/modules/sensors/Ds18b20/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Ds2423/modinfo.json b/src/modules/sensors/Ds2423/modinfo.json index e5cd9f75..866af40a 100644 --- a/src/modules/sensors/Ds2423/modinfo.json +++ b/src/modules/sensors/Ds2423/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "executive_devices", "configItem": [ { "global": 0, @@ -14,7 +14,7 @@ "multiply": 1, "pin": 4, "index": 0, - "addr": "", + "addr": "", "int": 10, "round": 0, "needSave": 0 diff --git a/src/modules/sensors/Emon/modinfo.json b/src/modules/sensors/Emon/modinfo.json index e254359f..03b1f832 100644 --- a/src/modules/sensors/Emon/modinfo.json +++ b/src/modules/sensors/Emon/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/ExampleModule/modinfo.json b/src/modules/sensors/ExampleModule/modinfo.json index 083b37a3..e605d2fa 100644 --- a/src/modules/sensors/ExampleModule/modinfo.json +++ b/src/modules/sensors/ExampleModule/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -24,9 +24,9 @@ "page": "Сенсоры", "descr": "Давление", "int": 15, - "pin": "32", + "pin": "32", "round": 1, - "btn-Example": 100 + "btn-Example": 100 } ], "about": { @@ -46,31 +46,37 @@ "propInfo": { "pin": "Аналоговый GPIO номер, к которому подключен датчик.", "int": "Количество секунд между опросами датчика", - "btn-Example": "Кнопка Example. В поле указать ......" + "btn-Example": "Кнопка Example. В поле указать ......" }, "funcInfo": [ { "name": "expampleFunc", "descr": "Пример функции вызываемой из сценария. Принимает Id другого модуля и смотрит его значение", - "params": ["ID стороннего модуля"] + "params": [ + "ID стороннего модуля" + ] }, { "name": "expample2", "descr": "Второй Пример функции вызываемой из сценария.", - "params": ["Описание педедаваемого параметра", - "параметр 2"] + "params": [ + "Описание педедаваемого параметра", + "параметр 2" + ] }, { "name": "expampleAny", "descr": "Третий Пример функции вызываемой из сценария. С неограниченным числом параметров", - "params": ["Описание педедаваемых параметров"] + "params": [ + "Описание педедаваемых параметров" + ] } - ] + ] }, "defActive": false, "usedLibs": { "esp32_4mb": [], - "esp32s2_4mb": [], + "esp32s2_4mb": [], "esp8266_4mb": [], "esp8266_1mb": [], "esp8266_1mb_ota": [], diff --git a/src/modules/sensors/ExternalMQTT/modinfo.json b/src/modules/sensors/ExternalMQTT/modinfo.json index 02c41fb3..92304416 100644 --- a/src/modules/sensors/ExternalMQTT/modinfo.json +++ b/src/modules/sensors/ExternalMQTT/modinfo.json @@ -1,6 +1,5 @@ { - "menuSection": "Сенсоры", - + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -20,7 +19,6 @@ "int": 60 } ], - "about": { "authorName": "AVAKS", "authorContact": "https://t.me/@avaks_dev", @@ -44,9 +42,7 @@ "sensor": "Тип сенсора: температура / влажность / время / ... " } }, - "defActive": false, - "usedLibs": { "esp32_4mb": [], "esp8266_4mb": [], @@ -57,4 +53,4 @@ "esp8266_2mb": [], "esp8266_2mb_ota": [] } -} +} \ No newline at end of file diff --git a/src/modules/sensors/FreqMeter/modinfo.json b/src/modules/sensors/FreqMeter/modinfo.json index 91eb8c82..b1680a47 100644 --- a/src/modules/sensors/FreqMeter/modinfo.json +++ b/src/modules/sensors/FreqMeter/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/GY21/modinfo.json b/src/modules/sensors/GY21/modinfo.json index affd1e44..12928240 100644 --- a/src/modules/sensors/GY21/modinfo.json +++ b/src/modules/sensors/GY21/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Hdc1080/modinfo.json b/src/modules/sensors/Hdc1080/modinfo.json index 5b27c795..b9154665 100644 --- a/src/modules/sensors/Hdc1080/modinfo.json +++ b/src/modules/sensors/Hdc1080/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Hx710/modinfo.json b/src/modules/sensors/Hx710/modinfo.json index 985c4457..c6a9ca16 100644 --- a/src/modules/sensors/Hx710/modinfo.json +++ b/src/modules/sensors/Hx710/modinfo.json @@ -1,22 +1,22 @@ -{ - "menuSection": "Сенсоры", - - "configItem": [{ - "name": "HX710 Cенсор давления", - "type": "Reading", - "subtype": "Hx710", - "id": "hxp", - "widget": "anydataDef", - "page": "Давление", - "descr": "HX press", - "int": 15, - "plus": 0, - "multiply": 1, - "round": 1, - "data": 14, - "clock": 15 - }], - +{ + "menuSection": "sensors", + "configItem": [ + { + "name": "HX710 Cенсор давления", + "type": "Reading", + "subtype": "Hx710", + "id": "hxp", + "widget": "anydataDef", + "page": "Давление", + "descr": "HX press", + "int": 15, + "plus": 0, + "multiply": 1, + "round": 1, + "data": 14, + "clock": 15 + } + ], "about": { "authorName": "Serghei Crasnicov", "authorContact": "https://t.me/Serghei63", @@ -44,9 +44,7 @@ } ] }, - "defActive": false, - "usedLibs": { "esp32_4mb": [ "https://github.com/kurimawxx00/hx710B_pressure_sensor" diff --git a/src/modules/sensors/Hx711/modinfo.json b/src/modules/sensors/Hx711/modinfo.json index 4627711a..43e4b7fd 100644 --- a/src/modules/sensors/Hx711/modinfo.json +++ b/src/modules/sensors/Hx711/modinfo.json @@ -1,24 +1,24 @@ -{ - "menuSection": "Сенсоры", - - "configItem": [{ - "name": "HX711 Cенсор весов", - "type": "Reading", - "subtype": "Hx711", - "id": "hx", - "widget": "anydataDef", - "page": "Весы", - "descr": "HX вес", - "int": 15, - "map": "1024,1024,1,100", - "plus": 0, - "multiply": 1, - "round": 1, - "data": 3, - "clock": 2, - "chan": 2 - }], - +{ + "menuSection": "sensors", + "configItem": [ + { + "name": "HX711 Cенсор весов", + "type": "Reading", + "subtype": "Hx711", + "id": "hx", + "widget": "anydataDef", + "page": "Весы", + "descr": "HX вес", + "int": 15, + "map": "1024,1024,1,100", + "plus": 0, + "multiply": 1, + "round": 1, + "data": 3, + "clock": 2, + "chan": 2 + } + ], "about": { "authorName": "Serghei Crasnicov", "authorContact": "https://t.me/Serghei63", @@ -48,7 +48,9 @@ { "name": "sleepMode", "descr": "Перевести в режим сна", - "params": ["=1 режим сна, =0 проснуться"] + "params": [ + "=1 режим сна, =0 проснуться" + ] }, { "name": "read", @@ -57,9 +59,7 @@ } ] }, - "defActive": false, - "usedLibs": { "esp32_4mb": [ "GyverHX711@1.2" diff --git a/src/modules/sensors/Impulse/modinfo.json b/src/modules/sensors/Impulse/modinfo.json index e35ecf29..ee92191f 100644 --- a/src/modules/sensors/Impulse/modinfo.json +++ b/src/modules/sensors/Impulse/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Ina219/modinfo.json b/src/modules/sensors/Ina219/modinfo.json index c89e95b2..7e35d23e 100644 --- a/src/modules/sensors/Ina219/modinfo.json +++ b/src/modules/sensors/Ina219/modinfo.json @@ -1,139 +1,135 @@ { - "menuSection": "Сенсоры", - - "configItem": [{ - "global": 0, - "name": "INA219 Tок", - "type": "Reading", - "subtype": "Ina219curr", - "id": "ina219_A", - "widget": "anydataAmp", - "page": "INA 219", - "descr": "Сила тока", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA219 Напряжение", - "type": "Reading", - "subtype": "Ina219voltage", - "id": "ina219_V", - "widget": "anydataVlt", - "page": "INA 219", - "descr": "Напряжения", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA219 Мощность", - "type": "Reading", - "subtype": "Ina219power", - "id": "ina219_W", - "widget": "anydataWt", - "page": "INA 219", - "descr": "Мощность", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA219 Шунт", - "type": "Reading", - "subtype": "Ina219shuntvoltage", - "id": "ina219_Vsh", - "widget": "anydataVlt", - "page": "INA 219", - "descr": "Напряжение шунта", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA219 Настройки", - "type": "Reading", - "subtype": "Ina219setting", - "id": "ina219_set", - "widget": "nil", - "page": "", - "descr": "", - "addr": "0x40", - "shunt": 0.1, - "maxV": 3.2, - "adjClbr": 0, - "resol": 4, - "btn-getClbr":"nil" - }], - - "about": { - "authorName": "Serghei Crasnicov", - "authorContact": "https://t.me/Serghei63", - "authorGit": "https://github.com/Serghei63", - "specialThanks": "Дмитрий, Serg, v2.0 - Mitchel @Mit4bmw", - "moduleName": "Ina219", - "moduleVersion": "2.0", - "usedRam": { - "esp32_4mb": 15, - "esp8266_4mb": 15 - }, - "subTypes": [ - "Ina219curr", - "Ina219voltage", - "Ina219power", - "Ina219shuntvoltage", - "Ina219setting" - ], - "title": "Милливатметр постоянного тока", - "moduleDesc": "Измеряет постоянный ток до 3.2 ампера, напряжение до 26 вольт и мощность на нагрузке. Модуль INA219 Настройки - для изменении настроек нужен постоянно в конфигурации, должен стоять перед рдугими модулями с тем же адресом, без него работает на значенях по умолчанию", - "propInfo": { - "int": "Количество секунд между опросами датчика.", - "addr": "Адрес датчика на шине, обычно 0x40. Если оставить поле пустым, то запуститься сканер I2C и подключение к адресу 0x40", - "shunt": "Сопротивление шунта, штатно 0.1Ом. Изменить если его перепаяли", - "maxV": "Максимальный ожидаемый ток, штатно 3.2А, для указаного шунта", - "adjClbr": "Задать смещение (подкрутить) калибровочное значение на указанное значение. -20 = Уменьшить калибровочное значение на 20", - "resol": "Установка режима усреднения для измерения напряжения и тока, рекомендуется для повышения стабильности показаний на шумной нагрузке. Варианты 1(без усреднения),2,4,8,16,32,64,128", - "btn-getClbr": "Кнопка запроса текущей калибровки, выводится в лог" - }, - "funcInfo": [ - { - "name": "sleep", - "descr": "INA219 Настройки. Установка / снятие режима сна датчика INA219", - "params": ["1- вкл сна/ 0-выкл сна"] - } - ] + "menuSection": "sensors", + "configItem": [ + { + "global": 0, + "name": "INA219 Tок", + "type": "Reading", + "subtype": "Ina219curr", + "id": "ina219_A", + "widget": "anydataAmp", + "page": "INA 219", + "descr": "Сила тока", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 }, - - "defActive": false, - - "usedLibs": { - "esp32_4mb": [ - "https://github.com/GyverLibs/GyverINA" - ], - "esp32s2_4mb": [ - "https://github.com/GyverLibs/GyverINA" - ], - - "esp8266_4mb": [ - "https://github.com/GyverLibs/GyverINA" - ], - "esp8266_16mb": [ - "https://github.com/GyverLibs/GyverINA" - ] + { + "global": 0, + "name": "INA219 Напряжение", + "type": "Reading", + "subtype": "Ina219voltage", + "id": "ina219_V", + "widget": "anydataVlt", + "page": "INA 219", + "descr": "Напряжения", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 + }, + { + "global": 0, + "name": "INA219 Мощность", + "type": "Reading", + "subtype": "Ina219power", + "id": "ina219_W", + "widget": "anydataWt", + "page": "INA 219", + "descr": "Мощность", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 + }, + { + "global": 0, + "name": "INA219 Шунт", + "type": "Reading", + "subtype": "Ina219shuntvoltage", + "id": "ina219_Vsh", + "widget": "anydataVlt", + "page": "INA 219", + "descr": "Напряжение шунта", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 + }, + { + "global": 0, + "name": "INA219 Настройки", + "type": "Reading", + "subtype": "Ina219setting", + "id": "ina219_set", + "widget": "nil", + "page": "", + "descr": "", + "addr": "0x40", + "shunt": 0.1, + "maxV": 3.2, + "adjClbr": 0, + "resol": 4, + "btn-getClbr": "nil" } - - } - - \ No newline at end of file + ], + "about": { + "authorName": "Serghei Crasnicov", + "authorContact": "https://t.me/Serghei63", + "authorGit": "https://github.com/Serghei63", + "specialThanks": "Дмитрий, Serg, v2.0 - Mitchel @Mit4bmw", + "moduleName": "Ina219", + "moduleVersion": "2.0", + "usedRam": { + "esp32_4mb": 15, + "esp8266_4mb": 15 + }, + "subTypes": [ + "Ina219curr", + "Ina219voltage", + "Ina219power", + "Ina219shuntvoltage", + "Ina219setting" + ], + "title": "Милливатметр постоянного тока", + "moduleDesc": "Измеряет постоянный ток до 3.2 ампера, напряжение до 26 вольт и мощность на нагрузке. Модуль INA219 Настройки - для изменении настроек нужен постоянно в конфигурации, должен стоять перед рдугими модулями с тем же адресом, без него работает на значенях по умолчанию", + "propInfo": { + "int": "Количество секунд между опросами датчика.", + "addr": "Адрес датчика на шине, обычно 0x40. Если оставить поле пустым, то запуститься сканер I2C и подключение к адресу 0x40", + "shunt": "Сопротивление шунта, штатно 0.1Ом. Изменить если его перепаяли", + "maxV": "Максимальный ожидаемый ток, штатно 3.2А, для указаного шунта", + "adjClbr": "Задать смещение (подкрутить) калибровочное значение на указанное значение. -20 = Уменьшить калибровочное значение на 20", + "resol": "Установка режима усреднения для измерения напряжения и тока, рекомендуется для повышения стабильности показаний на шумной нагрузке. Варианты 1(без усреднения),2,4,8,16,32,64,128", + "btn-getClbr": "Кнопка запроса текущей калибровки, выводится в лог" + }, + "funcInfo": [ + { + "name": "sleep", + "descr": "INA219 Настройки. Установка / снятие режима сна датчика INA219", + "params": [ + "1- вкл сна/ 0-выкл сна" + ] + } + ] + }, + "defActive": false, + "usedLibs": { + "esp32_4mb": [ + "https://github.com/GyverLibs/GyverINA" + ], + "esp32s2_4mb": [ + "https://github.com/GyverLibs/GyverINA" + ], + "esp8266_4mb": [ + "https://github.com/GyverLibs/GyverINA" + ], + "esp8266_16mb": [ + "https://github.com/GyverLibs/GyverINA" + ] + } +} \ No newline at end of file diff --git a/src/modules/sensors/Ina226/modinfo.json b/src/modules/sensors/Ina226/modinfo.json index a2f00e1c..98b68d5e 100644 --- a/src/modules/sensors/Ina226/modinfo.json +++ b/src/modules/sensors/Ina226/modinfo.json @@ -1,139 +1,135 @@ { - "menuSection": "Сенсоры", - - "configItem": [{ - "global": 0, - "name": "INA226 Tок", - "type": "Reading", - "subtype": "Ina226curr", - "id": "ina226_A", - "widget": "anydataAmp", - "page": "INA 226", - "descr": "Сила тока", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA226 Напряжение", - "type": "Reading", - "subtype": "Ina226voltage", - "id": "ina226_V", - "widget": "anydataVlt", - "page": "INA 226", - "descr": "Напряжения", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA226 Мощность", - "type": "Reading", - "subtype": "Ina226power", - "id": "ina226_W", - "widget": "anydataWt", - "page": "INA 226", - "descr": "Мощность", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA226 Шунт", - "type": "Reading", - "subtype": "Ina226shuntvoltage", - "id": "ina226_Vsh", - "widget": "anydataVlt", - "page": "INA 226", - "descr": "Напряжение шунта", - "addr": "0x40", - "plus": 0, - "multiply": 1, - "round": 3, - "int": 10 - }, - { - "global": 0, - "name": "INA226 Настройки", - "type": "Reading", - "subtype": "Ina226setting", - "id": "ina226_set", - "widget": "nil", - "page": "", - "descr": "", - "addr": "0x40", - "shunt": 0.1, - "maxV": 3.2, - "adjClbr": 0, - "resol": 4, - "btn-getClbr":"nil" - }], - - "about": { - "authorName": "Serghei Crasnicov", - "authorContact": "https://t.me/Serghei63", - "authorGit": "https://github.com/Serghei63", - "specialThanks": "v2.0 - Mitchel @Mit4bmw", - "moduleName": "Ina226", - "moduleVersion": "2.0", - "usedRam": { - "esp32_4mb": 15, - "esp8266_4mb": 15 - }, - "subTypes": [ - "Ina226curr", - "Ina226voltage", - "Ina226power", - "Ina226shuntvoltage", - "Ina226setting" - ], - "title": "Милливатметр постоянного тока", - "moduleDesc": "Стандартные значения для модуля INA226 (Сопротивление шунта - 0.1 Ом, Максимальный ожидаемый ток - 0.8 А, Адрес на шине I2c - 0x40). Модуль INA226 Настройки - для изменении настроек нужен постоянно в конфигурации, должен стоять перед рдугими модулями с тем же адресом, без него работает на значенях по умолчанию", - "propInfo": { - "int": "Количество секунд между опросами датчика.", - "addr": "Адрес датчика на шине, обычно 0x40. Если оставить поле пустым, то запуститься сканер I2C и подключение к адресу 0x40", - "shunt": "Сопротивление шунта, штатно 0.1Ом. Изменить если его перепаяли", - "maxV": "Максимальный ожидаемый ток, штатно 0.8А, для указаного шунта", - "adjClbr": "Задать смещение (подкрутить) калибровочное значение на указанное значение. -20 = Уменьшить калибровочное значение на 20", - "resol": "Установка режима усреднения (колическва замеров) для измерения напряжения и тока, рекомендуется для повышения стабильности показаний на шумной нагрузке. Пропорционально увеличивает время оцифровки. Варианты 0(без усреднения), от 1 до 7 - соответстввует 4,16,64,128,256,512,1024", - "btn-getClbr": "Кнопка запроса текущей калибровки, выводится в лог" - }, - "funcInfo": [ - { - "name": "sleep", - "descr": "INA226 Настройки. Установка / снятие режима сна датчика INA226", - "params": ["1- вкл сна/ 0-выкл сна"] - } - ] + "menuSection": "sensors", + "configItem": [ + { + "global": 0, + "name": "INA226 Tок", + "type": "Reading", + "subtype": "Ina226curr", + "id": "ina226_A", + "widget": "anydataAmp", + "page": "INA 226", + "descr": "Сила тока", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 }, - - "defActive": false, - - "usedLibs": { - "esp32_4mb": [ - "https://github.com/GyverLibs/GyverINA" - ], - "esp32s2_4mb": [ - "https://github.com/GyverLibs/GyverINA" - ], - - "esp8266_4mb": [ - "https://github.com/GyverLibs/GyverINA" - ], - "esp8266_16mb": [ - "https://github.com/GyverLibs/GyverINA" - ] + { + "global": 0, + "name": "INA226 Напряжение", + "type": "Reading", + "subtype": "Ina226voltage", + "id": "ina226_V", + "widget": "anydataVlt", + "page": "INA 226", + "descr": "Напряжения", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 + }, + { + "global": 0, + "name": "INA226 Мощность", + "type": "Reading", + "subtype": "Ina226power", + "id": "ina226_W", + "widget": "anydataWt", + "page": "INA 226", + "descr": "Мощность", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 + }, + { + "global": 0, + "name": "INA226 Шунт", + "type": "Reading", + "subtype": "Ina226shuntvoltage", + "id": "ina226_Vsh", + "widget": "anydataVlt", + "page": "INA 226", + "descr": "Напряжение шунта", + "addr": "0x40", + "plus": 0, + "multiply": 1, + "round": 3, + "int": 10 + }, + { + "global": 0, + "name": "INA226 Настройки", + "type": "Reading", + "subtype": "Ina226setting", + "id": "ina226_set", + "widget": "nil", + "page": "", + "descr": "", + "addr": "0x40", + "shunt": 0.1, + "maxV": 3.2, + "adjClbr": 0, + "resol": 4, + "btn-getClbr": "nil" } - - } - - \ No newline at end of file + ], + "about": { + "authorName": "Serghei Crasnicov", + "authorContact": "https://t.me/Serghei63", + "authorGit": "https://github.com/Serghei63", + "specialThanks": "v2.0 - Mitchel @Mit4bmw", + "moduleName": "Ina226", + "moduleVersion": "2.0", + "usedRam": { + "esp32_4mb": 15, + "esp8266_4mb": 15 + }, + "subTypes": [ + "Ina226curr", + "Ina226voltage", + "Ina226power", + "Ina226shuntvoltage", + "Ina226setting" + ], + "title": "Милливатметр постоянного тока", + "moduleDesc": "Стандартные значения для модуля INA226 (Сопротивление шунта - 0.1 Ом, Максимальный ожидаемый ток - 0.8 А, Адрес на шине I2c - 0x40). Модуль INA226 Настройки - для изменении настроек нужен постоянно в конфигурации, должен стоять перед рдугими модулями с тем же адресом, без него работает на значенях по умолчанию", + "propInfo": { + "int": "Количество секунд между опросами датчика.", + "addr": "Адрес датчика на шине, обычно 0x40. Если оставить поле пустым, то запуститься сканер I2C и подключение к адресу 0x40", + "shunt": "Сопротивление шунта, штатно 0.1Ом. Изменить если его перепаяли", + "maxV": "Максимальный ожидаемый ток, штатно 0.8А, для указаного шунта", + "adjClbr": "Задать смещение (подкрутить) калибровочное значение на указанное значение. -20 = Уменьшить калибровочное значение на 20", + "resol": "Установка режима усреднения (колическва замеров) для измерения напряжения и тока, рекомендуется для повышения стабильности показаний на шумной нагрузке. Пропорционально увеличивает время оцифровки. Варианты 0(без усреднения), от 1 до 7 - соответстввует 4,16,64,128,256,512,1024", + "btn-getClbr": "Кнопка запроса текущей калибровки, выводится в лог" + }, + "funcInfo": [ + { + "name": "sleep", + "descr": "INA226 Настройки. Установка / снятие режима сна датчика INA226", + "params": [ + "1- вкл сна/ 0-выкл сна" + ] + } + ] + }, + "defActive": false, + "usedLibs": { + "esp32_4mb": [ + "https://github.com/GyverLibs/GyverINA" + ], + "esp32s2_4mb": [ + "https://github.com/GyverLibs/GyverINA" + ], + "esp8266_4mb": [ + "https://github.com/GyverLibs/GyverINA" + ], + "esp8266_16mb": [ + "https://github.com/GyverLibs/GyverINA" + ] + } +} \ No newline at end of file diff --git a/src/modules/sensors/IoTWiegand/modinfo.json b/src/modules/sensors/IoTWiegand/modinfo.json index ff7457e2..9b592590 100644 --- a/src/modules/sensors/IoTWiegand/modinfo.json +++ b/src/modules/sensors/IoTWiegand/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Max6675/modinfo.json b/src/modules/sensors/Max6675/modinfo.json index 69a61a32..d99c587d 100644 --- a/src/modules/sensors/Max6675/modinfo.json +++ b/src/modules/sensors/Max6675/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Mhz19/modinfo.json b/src/modules/sensors/Mhz19/modinfo.json index dc2ca89e..78f18b3d 100644 --- a/src/modules/sensors/Mhz19/modinfo.json +++ b/src/modules/sensors/Mhz19/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -78,7 +78,9 @@ "defActive": false, "usedLibs": { "esp32_4mb": [], - "esp32s2_4mb": ["plerup/EspSoftwareSerial"], + "esp32s2_4mb": [ + "plerup/EspSoftwareSerial" + ], "esp8266_4mb": [] } } \ No newline at end of file diff --git a/src/modules/sensors/Ntc/modinfo.json b/src/modules/sensors/Ntc/modinfo.json index 3237fc97..c2730bf6 100644 --- a/src/modules/sensors/Ntc/modinfo.json +++ b/src/modules/sensors/Ntc/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -13,17 +13,14 @@ "needSave": 0, "val": "0", "int": 15, - "pin": "35", - "R1":"10000", - "R0":"10000", - "Beta":"3950.0", - "T0":"25", - "Vs":"3.3", - "round" : 1 - + "pin": "35", + "R1": "10000", + "R0": "10000", + "Beta": "3950.0", + "T0": "25", + "Vs": "3.3", + "round": 1 } - - ], "about": { "authorName": "Serghei Crasnicov", @@ -44,11 +41,11 @@ "retInfo": "", "propInfo": { "pin": "Аналоговый пин (для esp8266 = 0, для esp32 алаоговый gpio, например 35)", - "R1":"Сопротивление подтягивающего резистора, должен быть равен сопротивлению термистера", - "Vs":"Напряжение питания датчика, Для точности измерить и ввести своё, по умолчанию 3.3В", - "R0":"Сопротивление термистора при температуре То, например 10 КОм при 25С", - "T0":"Базовая температура, температура измерения сопротивление термистора (Rterm), обычно 25С", - "Beta":"Beta термистора" + "R1": "Сопротивление подтягивающего резистора, должен быть равен сопротивлению термистера", + "Vs": "Напряжение питания датчика, Для точности измерить и ввести своё, по умолчанию 3.3В", + "R0": "Сопротивление термистора при температуре То, например 10 КОм при 25С", + "T0": "Базовая температура, температура измерения сопротивление термистора (Rterm), обычно 25С", + "Beta": "Beta термистора" } }, "defActive": false, @@ -62,4 +59,4 @@ "esp8266_2mb": [], "esp8266_2mb_ota": [] } -} +} \ No newline at end of file diff --git a/src/modules/sensors/Pzem004t/modinfo.json b/src/modules/sensors/Pzem004t/modinfo.json index 697015f9..17eeda70 100644 --- a/src/modules/sensors/Pzem004t/modinfo.json +++ b/src/modules/sensors/Pzem004t/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/RCswitch/modinfo.json b/src/modules/sensors/RCswitch/modinfo.json index dae2a245..ed549042 100644 --- a/src/modules/sensors/RCswitch/modinfo.json +++ b/src/modules/sensors/RCswitch/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/RTC/modinfo.json b/src/modules/sensors/RTC/modinfo.json index 3ecef7f7..67c40768 100644 --- a/src/modules/sensors/RTC/modinfo.json +++ b/src/modules/sensors/RTC/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -18,7 +18,7 @@ "ticker": 0, "int": 5, "btn-setUTime": "0", - "btn-setSysTime": "nil" + "btn-setSysTime": "nil" } ], "about": { @@ -51,19 +51,37 @@ { "name": "getTime", "descr": "Получить строковое значение времени по указанному формату.", - "params": ["Формат как у функции date() в PHP"] + "params": [ + "Формат как у функции date() в PHP" + ] } ] }, "defActive": true, "usedLibs": { - "esp32_4mb": ["https://github.com/tremaru/iarduino_RTC"], - "esp8266_4mb": ["https://github.com/tremaru/iarduino_RTC"], - "esp8266_1mb": ["https://github.com/tremaru/iarduino_RTC"], - "esp8266_1mb_ota": ["https://github.com/tremaru/iarduino_RTC"], - "esp8285_1mb": ["https://github.com/tremaru/iarduino_RTC"], - "esp8285_1mb_ota": ["https://github.com/tremaru/iarduino_RTC"], - "esp8266_2mb": ["https://github.com/tremaru/iarduino_RTC"], - "esp8266_2mb_ota": ["https://github.com/tremaru/iarduino_RTC"] + "esp32_4mb": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8266_4mb": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8266_1mb": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8266_1mb_ota": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8285_1mb": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8285_1mb_ota": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8266_2mb": [ + "https://github.com/tremaru/iarduino_RTC" + ], + "esp8266_2mb_ota": [ + "https://github.com/tremaru/iarduino_RTC" + ] } } \ No newline at end of file diff --git a/src/modules/sensors/S8/modinfo.json b/src/modules/sensors/S8/modinfo.json index 6f702b87..55dbe2fe 100644 --- a/src/modules/sensors/S8/modinfo.json +++ b/src/modules/sensors/S8/modinfo.json @@ -1,19 +1,19 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { - "name": "(S8) Cенсор качества воздуха", - "num": 3, - "type": "Reading", - "subtype": "S8co", - "id": "s8co", - "widget": "anydataPpm", - "page": "Сенсоры", - "descr": "S8_CO2", - "int": 15, - "round": 1, - "rxPin": 13, - "txPin": 15 + "name": "(S8) Cенсор качества воздуха", + "num": 3, + "type": "Reading", + "subtype": "S8co", + "id": "s8co", + "widget": "anydataPpm", + "page": "Сенсоры", + "descr": "S8_CO2", + "int": 15, + "round": 1, + "rxPin": 13, + "txPin": 15 } ], "about": { @@ -35,9 +35,7 @@ }, "defActive": true, "usedLibs": { - "esp32_4mb": [ - ], - "esp8266_4mb": [ - ] + "esp32_4mb": [], + "esp8266_4mb": [] } } \ No newline at end of file diff --git a/src/modules/sensors/Scd40/modinfo.json b/src/modules/sensors/Scd40/modinfo.json index 4ccceeac..601723b0 100644 --- a/src/modules/sensors/Scd40/modinfo.json +++ b/src/modules/sensors/Scd40/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, @@ -14,7 +14,7 @@ "round": 0, "lowPeriodic": 1, "autoCalibration": 1, - "btn-Recalibration": 0 + "btn-Recalibration": 0 }, { "global": 0, @@ -61,13 +61,11 @@ "title": "Датчик температуры и влажности Scd40", "moduleDesc": "Позволяет получить значения температуры и влажности с Scd40.", "propInfo": { - "int": "Количество секунд между опросами библиотеки (датчик опрашивается библиотекой по своему таймеру, см. lowPeriodic).", "offset": "Смещение температуры представляет собой разницу между температурой, измеренной SCD4x, и фактической температурой окружающей среды температура. По умолчанию смещение температуры в библиотеке/датчике установлено на 4°C.", "lowPeriodic": "Медленные режим опроса датчика библиотекой. 0-каждые 5сек, 1-каждые 30сек", "autoCalibration": "Автоматическая калибровка, по умолчанию включена AutomaticSelfCalibration, 0 - выключена", - "btn-Recalibration": "Кнопка принудительной калибровки. В поле указать Целевая концентрация CO₂ в миллионных долях. Перед калибровкой необходимо находтся в течение > 3 минут в среде с однородной и постоянной концентрацией CO₂. Выдает в лог Значение коррекции FRC в co₂ ppm" - + "btn-Recalibration": "Кнопка принудительной калибровки. В поле указать Целевая концентрация CO₂ в миллионных долях. Перед калибровкой необходимо находтся в течение > 3 минут в среде с однородной и постоянной концентрацией CO₂. Выдает в лог Значение коррекции FRC в co₂ ppm" } }, "defActive": false, diff --git a/src/modules/sensors/Sds011/modinfo.json b/src/modules/sensors/Sds011/modinfo.json index 8fd8eb80..fda19ac2 100644 --- a/src/modules/sensors/Sds011/modinfo.json +++ b/src/modules/sensors/Sds011/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Sgp30/modinfo.json b/src/modules/sensors/Sgp30/modinfo.json index 94c59309..0857dc39 100644 --- a/src/modules/sensors/Sgp30/modinfo.json +++ b/src/modules/sensors/Sgp30/modinfo.json @@ -1,31 +1,31 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { - "global": 0, - "name": "SGP30 Cенсор качества воздуха", - "num": 3, - "type": "Reading", - "subtype": "Sgp30t", - "id": "sgp30t", - "widget": "anydatappm", - "page": "Сенсоры", - "descr": "TVOC", - "int": 30, - "round": 1 + "global": 0, + "name": "SGP30 Cенсор качества воздуха", + "num": 3, + "type": "Reading", + "subtype": "Sgp30t", + "id": "sgp30t", + "widget": "anydatappm", + "page": "Сенсоры", + "descr": "TVOC", + "int": 30, + "round": 1 }, { - "global": 0, - "name": "SGP30 Cенсор газа", - "num": 4, - "type": "Reading", - "subtype": "Sgp30e", - "id": "sgp30e", - "widget": "anydatappm", - "page": "Сенсоры", - "descr": "eCO2", - "int": 30, - "round": 1 + "global": 0, + "name": "SGP30 Cенсор газа", + "num": 4, + "type": "Reading", + "subtype": "Sgp30e", + "id": "sgp30e", + "widget": "anydatappm", + "page": "Сенсоры", + "descr": "eCO2", + "int": 30, + "round": 1 } ], "about": { diff --git a/src/modules/sensors/Sht20/modinfo.json b/src/modules/sensors/Sht20/modinfo.json index 39b07e6d..5051007c 100644 --- a/src/modules/sensors/Sht20/modinfo.json +++ b/src/modules/sensors/Sht20/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Sht30/modinfo.json b/src/modules/sensors/Sht30/modinfo.json index 47e42933..9c065c41 100644 --- a/src/modules/sensors/Sht30/modinfo.json +++ b/src/modules/sensors/Sht30/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/Sonar/modinfo.json b/src/modules/sensors/Sonar/modinfo.json index 8c79734a..0e02af75 100644 --- a/src/modules/sensors/Sonar/modinfo.json +++ b/src/modules/sensors/Sonar/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/sensors/UART/modinfo.json b/src/modules/sensors/UART/modinfo.json index 1e63b4e1..b7c5e5b3 100644 --- a/src/modules/sensors/UART/modinfo.json +++ b/src/modules/sensors/UART/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "name": "UART", @@ -44,22 +44,31 @@ { "name": "println", "descr": "Отправить в UART строку текста и признак завершения строки (перевод строки).", - "params": ["Строка текста"] + "params": [ + "Строка текста" + ] }, { "name": "print", "descr": "Отправить в UART строку текста.", - "params": ["Строка текста"] + "params": [ + "Строка текста" + ] }, { "name": "printHex", "descr": "Отправить в UART HEX-строку.", - "params": ["HEX-строка."] + "params": [ + "HEX-строка." + ] }, { "name": "printFFF", "descr": "Отправить в UART текстовую строку и hex метку 3 байта 0xFF0xFF0xFF.", - "params": ["Строка текста", "1 - обернуть строку в кавычки, 0 - отправить без кавычек"] + "params": [ + "Строка текста", + "1 - обернуть строку в кавычки, 0 - отправить без кавычек" + ] } ] }, diff --git a/src/modules/sensors/ld2410/modinfo.json b/src/modules/sensors/ld2410/modinfo.json index 78b06bc4..f9e4a314 100644 --- a/src/modules/sensors/ld2410/modinfo.json +++ b/src/modules/sensors/ld2410/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Сенсоры", + "menuSection": "sensors", "configItem": [ { "global": 0, diff --git a/src/modules/virtual/Cron/modinfo.json b/src/modules/virtual/Cron/modinfo.json index f6a3f89f..9d04995e 100644 --- a/src/modules/virtual/Cron/modinfo.json +++ b/src/modules/virtual/Cron/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { "global": 0, diff --git a/src/modules/virtual/GoogleSheet/modinfo.json b/src/modules/virtual/GoogleSheet/modinfo.json index 8a8f47ee..4c046fdb 100644 --- a/src/modules/virtual/GoogleSheet/modinfo.json +++ b/src/modules/virtual/GoogleSheet/modinfo.json @@ -1,19 +1,19 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { - "global": 0, + "global": 0, "name": "GoogleSheet", - "type": "Reading", + "type": "Reading", "subtype": "GoogleSheet", "id": "sheet", "widget": "nil", "page": "", "descr": "", "int": 5, - "logid": "", - "scid": "", - "shname": "Logger" + "logid": "", + "scid": "", + "shname": "Logger" } ], "about": { @@ -33,8 +33,8 @@ "propInfo": { "int": "Интервал логирования в минутах", "logid": "ID величины которую будем логировать", - "scid": "Идентификатор развертывания Google Apps (script id)", - "shname": "Наименование листа в таблице (sheet name)" + "scid": "Идентификатор развертывания Google Apps (script id)", + "shname": "Наименование листа в таблице (sheet name)" }, "retInfo": "", "funcInfo": [ @@ -43,7 +43,7 @@ "descr": "Использовать не чаще раз в минуту! Логирование элементов в GoogleSheet, ID элементов указывать через запятую, от одного до N (проверено на 16шт). В данной функции поиск элементов идет по их значению, если несколько элементов с одинаковым значение, может быть не правильно указан его id в Таблице.", "params": [ "id Идентификатор 1-го элеменета", - "id Идентификатор N-го элеменета" + "id Идентификатор N-го элеменета" ] }, { diff --git a/src/modules/virtual/Loging/modinfo.json b/src/modules/virtual/Loging/modinfo.json index e39018e3..82f402a0 100644 --- a/src/modules/virtual/Loging/modinfo.json +++ b/src/modules/virtual/Loging/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { "global": 0, diff --git a/src/modules/virtual/LogingDaily/modinfo.json b/src/modules/virtual/LogingDaily/modinfo.json index 9c17af4b..2cc66708 100644 --- a/src/modules/virtual/LogingDaily/modinfo.json +++ b/src/modules/virtual/LogingDaily/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { "global": 0, diff --git a/src/modules/virtual/Timer/modinfo.json b/src/modules/virtual/Timer/modinfo.json index be4abb02..aa67ab1c 100644 --- a/src/modules/virtual/Timer/modinfo.json +++ b/src/modules/virtual/Timer/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { "global": 0, @@ -58,12 +58,16 @@ { "name": "int", "descr": "Можно изменить шаг тиков.", - "params": ["Число в секундах"] + "params": [ + "Число в секундах" + ] }, { "name": "setInitCountDown", "descr": "Меняем начальное значение счетчика, устанавливаемое после сброса.", - "params": ["Число в секундах"] + "params": [ + "Число в секундах" + ] } ] }, diff --git a/src/modules/virtual/VButton/modinfo.json b/src/modules/virtual/VButton/modinfo.json index ab78d4d0..3a7f584b 100644 --- a/src/modules/virtual/VButton/modinfo.json +++ b/src/modules/virtual/VButton/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { "global": 0, diff --git a/src/modules/virtual/Variable/modinfo.json b/src/modules/virtual/Variable/modinfo.json index feb0370a..ded7b61f 100644 --- a/src/modules/virtual/Variable/modinfo.json +++ b/src/modules/virtual/Variable/modinfo.json @@ -1,5 +1,5 @@ { - "menuSection": "Виртуальные элементы", + "menuSection": "virtual_elments", "configItem": [ { "global": 0, diff --git a/src/modules/virtual/VariableColor/modinfo.json b/src/modules/virtual/VariableColor/modinfo.json index 59fd429b..45396f25 100644 --- a/src/modules/virtual/VariableColor/modinfo.json +++ b/src/modules/virtual/VariableColor/modinfo.json @@ -1,49 +1,47 @@ { - "menuSection": "Виртуальные элементы", - "configItem": [ - { - "global": 0, - "name": "Цветной текст", - "type": "Reading", - "subtype": "VariableColor", - "id": "color", - "needSave": 0, - "widget": "anydataDef", - "page": "Вывод", - "descr": "Цветной текст", - "val": "...", - "round": 0 - } - ], - "about": { - "authorName": "AVAKS", - "authorContact": "https://t.me/@avaks_dev", - "authorGit": "https://github.com/avaksru", - "specialThanks": "", - "moduleName": "VariableColor", - "moduleVersion": "1", - "usedRam": { - "esp32_4mb": 15, - "esp8266_4mb": 15 - }, - "title": "Цветной текст", - "moduleDesc": "Текст с возможностью динамического изменения цвета", - "propInfo": { - "val": "Значение при старте" - } - }, - - "defActive": true, - - "usedLibs": { - "esp32_4mb": [], - "esp32s2_4mb": [], - "esp8266_4mb": [], - "esp8266_1mb": [], - "esp8266_1mb_ota": [], - "esp8285_1mb": [], - "esp8285_1mb_ota": [], - "esp8266_2mb": [], - "esp8266_2mb_ota": [] - } + "menuSection": "virtual_elments", + "configItem": [ + { + "global": 0, + "name": "Цветной текст", + "type": "Reading", + "subtype": "VariableColor", + "id": "color", + "needSave": 0, + "widget": "anydataDef", + "page": "Вывод", + "descr": "Цветной текст", + "val": "...", + "round": 0 + } + ], + "about": { + "authorName": "AVAKS", + "authorContact": "https://t.me/@avaks_dev", + "authorGit": "https://github.com/avaksru", + "specialThanks": "", + "moduleName": "VariableColor", + "moduleVersion": "1", + "usedRam": { + "esp32_4mb": 15, + "esp8266_4mb": 15 + }, + "title": "Цветной текст", + "moduleDesc": "Текст с возможностью динамического изменения цвета", + "propInfo": { + "val": "Значение при старте" + } + }, + "defActive": true, + "usedLibs": { + "esp32_4mb": [], + "esp32s2_4mb": [], + "esp8266_4mb": [], + "esp8266_1mb": [], + "esp8266_1mb_ota": [], + "esp8285_1mb": [], + "esp8285_1mb_ota": [], + "esp8266_2mb": [], + "esp8266_2mb_ota": [] + } } \ No newline at end of file diff --git a/src/modules/virtual/Weather/modinfo.json b/src/modules/virtual/Weather/modinfo.json index 9b315192..d1d5ac0c 100644 --- a/src/modules/virtual/Weather/modinfo.json +++ b/src/modules/virtual/Weather/modinfo.json @@ -1,6 +1,5 @@ { - "menuSection": "Виртуальные элементы", - + "menuSection": "virtual_elments", "configItem": [ { "global": 0, @@ -19,7 +18,6 @@ "val": "..." } ], - "about": { "authorName": "AVAKS", "authorContact": "https://t.me/@avaks_dev", @@ -39,9 +37,7 @@ "int": "Интервал запроса погоды в часах" } }, - "defActive": false, - "usedLibs": { "esp32_4mb": [], "esp32s2_4mb": [], @@ -53,4 +49,4 @@ "esp8266_2mb": [], "esp8266_2mb_ota": [] } -} +} \ No newline at end of file diff --git a/webConfigMyProfile/build/bundle.js b/webConfigMyProfile/build/bundle.js index b0ced366..bfe7e3b3 100644 --- a/webConfigMyProfile/build/bundle.js +++ b/webConfigMyProfile/build/bundle.js @@ -1,5 +1,616 @@ -var app=function(){"use strict";function t(){}const e=t=>t;function n(t,e){for(const n in e)t[n]=e[n];return t}function o(t){return t()}function r(){return Object.create(null)}function l(t){t.forEach(o)}function i(t){return"function"==typeof t}function s(t,e){return t!=t?e==e:t!==e||t&&"object"==typeof t||"function"==typeof t}function c(t,e,n,o){if(t){const r=a(t,e,n,o);return t[0](r)}}function a(t,e,o,r){return t[1]&&r?n(o.ctx.slice(),t[1](r(e))):o.ctx}function u(t,e,n,o){if(t[2]&&o){const r=t[2](o(n));if(void 0===e.dirty)return r;if("object"==typeof r){const t=[],n=Math.max(e.dirty.length,r.length);for(let o=0;o32){const e=[],n=t.ctx.length/32;for(let t=0;twindow.performance.now():()=>Date.now(),m=p?t=>requestAnimationFrame(t):t;const g=new Set;function v(t){g.forEach((e=>{e.c(t)||(g.delete(e),e.f())})),0!==g.size&&m(v)}function $(t){let e;return 0===g.size&&m(v),{promise:new Promise((n=>{g.add(e={c:t,f:n})})),abort(){g.delete(e)}}}function b(t,e){t.appendChild(e)}function y(t){if(!t)return document;const e=t.getRootNode?t.getRootNode():t.ownerDocument;return e&&e.host?e:t.ownerDocument}function x(t){const e=S("style");return function(t,e){b(t.head||t,e),e.sheet}(y(t),e),e.sheet}function _(t,e,n){t.insertBefore(e,n||null)}function w(t){t.parentNode.removeChild(t)}function k(t,e){for(let n=0;nt.removeEventListener(e,n,o)}function P(t,e,n){null==n?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}function q(t,e){e=""+e,t.wholeText!==e&&(t.data=e)}function M(t,e){t.value=null==e?"":e}function I(t,e,n,o){null===n?t.style.removeProperty(e):t.style.setProperty(e,n,o?"important":"")}function T(t,e){for(let n=0;n>>0}(u)}_${s}`,d=y(t),{stylesheet:p,rules:h}=G.get(d)||function(t,e){const n={stylesheet:x(e),rules:{}};return G.set(t,n),n}(d,t);h[f]||(h[f]=!0,p.insertRule(`@keyframes ${f} ${u}`,p.cssRules.length));const m=t.style.animation||"";return t.style.animation=`${m?`${m}, `:""}${f} ${o}ms linear ${r}ms 1 both`,U+=1,f}function A(t,e){const n=(t.style.animation||"").split(", "),o=n.filter(e?t=>t.indexOf(e)<0:t=>-1===t.indexOf("__svelte")),r=n.length-o.length;r&&(t.style.animation=o.join(", "),U-=r,U||m((()=>{U||(G.forEach((t=>{const{ownerNode:e}=t.stylesheet;e&&w(e)})),G.clear())})))}function F(n,o,r,l){if(!o)return t;const i=n.getBoundingClientRect();if(o.left===i.left&&o.right===i.right&&o.top===i.top&&o.bottom===i.bottom)return t;const{delay:s=0,duration:c=300,easing:a=e,start:u=h()+s,end:f=u+c,tick:d=t,css:p}=r(n,{from:o,to:i},l);let m,g=!0,v=!1;function b(){p&&A(n,m),g=!1}return $((t=>{if(!v&&t>=u&&(v=!0),v&&t>=f&&(d(1,0),b()),!g)return!1;if(v){const e=0+1*a((t-u)/c);d(e,1-e)}return!0})),p&&(m=D(n,0,1,c,s,a,p)),s||(v=!0),d(0,1),b}function L(t){const e=getComputedStyle(t);if("absolute"!==e.position&&"fixed"!==e.position){const{width:n,height:o}=e,r=t.getBoundingClientRect();t.style.position="absolute",t.style.width=n,t.style.height=o,J(t,r)}}function J(t,e){const n=t.getBoundingClientRect();if(e.left!==n.left||e.top!==n.top){const o=getComputedStyle(t),r="none"===o.transform?"":o.transform;t.style.transform=`${r} translate(${e.left-n.left}px, ${e.top-n.top}px)`}}function V(t){B=t}function z(){if(!B)throw new Error("Function called outside component initialization");return B}const K=[],H=[],Q=[],W=[],X=Promise.resolve();let Y=!1;function Z(t){Q.push(t)}function tt(t){W.push(t)}const et=new Set;let nt,ot=0;function rt(){const t=B;do{for(;ot{nt=null}))),nt}function st(t,e,n){t.dispatchEvent(R(`${e?"intro":"outro"}${n}`))}const ct=new Set;let at;function ut(){at={r:0,c:[],p:at}}function ft(){at.r||l(at.c),at=at.p}function dt(t,e){t&&t.i&&(ct.delete(t),t.i(e))}function pt(t,e,n,o){if(t&&t.o){if(ct.has(t))return;ct.add(t),at.c.push((()=>{ct.delete(t),o&&(n&&t.d(1),o())})),t.o(e)}else o&&o()}const ht={duration:0};function mt(n,o,r){let l,s,c=o(n,r),a=!1,u=0;function f(){l&&A(n,l)}function d(){const{delay:o=0,duration:r=300,easing:i=e,tick:d=t,css:p}=c||ht;p&&(l=D(n,0,1,r,o,i,p,u++)),d(0,1);const m=h()+o,g=m+r;s&&s.abort(),a=!0,Z((()=>st(n,!0,"start"))),s=$((t=>{if(a){if(t>=g)return d(1,0),st(n,!0,"end"),f(),a=!1;if(t>=m){const e=i((t-m)/r);d(e,1-e)}}return a}))}let p=!1;return{start(){p||(p=!0,A(n),i(c)?(c=c(),it().then(d)):d())},invalidate(){p=!1},end(){a&&(f(),a=!1)}}}function gt(n,o,r){let s,c=o(n,r),a=!0;const u=at;function f(){const{delay:o=0,duration:r=300,easing:i=e,tick:f=t,css:d}=c||ht;d&&(s=D(n,1,0,r,o,i,d));const p=h()+o,m=p+r;Z((()=>st(n,!1,"start"))),$((t=>{if(a){if(t>=m)return f(0,1),st(n,!1,"end"),--u.r||l(u.c),!1;if(t>=p){const e=i((t-p)/r);f(1-e,e)}}return a}))}return u.r+=1,i(c)?it().then((()=>{c=c(),f()})):f(),{end(t){t&&c.tick&&c.tick(1,0),a&&(s&&A(n,s),a=!1)}}}function vt(t,e){t.f(),function(t,e){pt(t,1,1,(()=>{e.delete(t.key)}))}(t,e)}function $t(t,e,n,o,r,l,i,s,c,a,u,f){let d=t.length,p=l.length,h=d;const m={};for(;h--;)m[t[h].key]=h;const g=[],v=new Map,$=new Map;for(h=p;h--;){const t=f(r,l,h),s=n(t);let c=i.get(s);c?o&&c.p(t,e):(c=a(s,t),c.c()),v.set(s,g[h]=c),s in m&&$.set(s,Math.abs(h-m[s]))}const b=new Set,y=new Set;function x(t){dt(t,1),t.m(s,u),i.set(t.key,t),u=t.first,p--}for(;d&&p;){const e=g[p-1],n=t[d-1],o=e.key,r=n.key;e===n?(u=e.first,d--,p--):v.has(r)?!i.has(o)||b.has(o)?x(e):y.has(r)?d--:$.get(o)>$.get(r)?(y.add(o),x(e)):(b.add(r),d--):(c(n,i),d--)}for(;d--;){const e=t[d];v.has(e.key)||c(e,i)}for(;p;)x(g[p-1]);return g}function bt(t,e,n){const o=t.$$.props[e];void 0!==o&&(t.$$.bound[o]=n,n(t.$$.ctx[o]))}function yt(t){t&&t.c()}function xt(t,e,n,r){const{fragment:s,on_mount:c,on_destroy:a,after_update:u}=t.$$;s&&s.m(e,n),r||Z((()=>{const e=c.map(o).filter(i);a?a.push(...e):l(e),t.$$.on_mount=[]})),u.forEach(Z)}function _t(t,e){const n=t.$$;null!==n.fragment&&(l(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function wt(t,e){-1===t.$$.dirty[0]&&(K.push(t),Y||(Y=!0,X.then(rt)),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const r=o.length?o[0]:n;return d.ctx&&s(d.ctx[t],d.ctx[t]=r)&&(!d.skip_bound&&d.bound[t]&&d.bound[t](r),p&&wt(e,t)),n})):[],d.update(),p=!0,l(d.before_update),d.fragment=!!i&&i(d.ctx),n.target){if(n.hydrate){const t=function(t){return Array.from(t.childNodes)}(n.target);d.fragment&&d.fragment.l(t),t.forEach(w)}else d.fragment&&d.fragment.c();n.intro&&dt(e.$$.fragment),xt(e,n.target,n.anchor,n.customElement),rt()}V(f)}class St{$destroy(){_t(this,1),this.$destroy=t}$on(t,e){const n=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return n.push(e),()=>{const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}$set(t){var e;this.$$set&&(e=t,0!==Object.keys(e).length)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}function jt(t){const e=t-1;return e*e*e+1}function Ot(t){return--t*t*t*t*t+1} -/*! ***************************************************************************** +var app = (function () { + "use strict"; + function t() {} + const e = (t) => t; + function n(t, e) { + for (const n in e) t[n] = e[n]; + return t; + } + function o(t) { + return t(); + } + function r() { + return Object.create(null); + } + function l(t) { + t.forEach(o); + } + function i(t) { + return "function" == typeof t; + } + function s(t, e) { + return t != t + ? e == e + : t !== e || (t && "object" == typeof t) || "function" == typeof t; + } + function c(t, e, n, o) { + if (t) { + const r = a(t, e, n, o); + return t[0](r); + } + } + function a(t, e, o, r) { + return t[1] && r ? n(o.ctx.slice(), t[1](r(e))) : o.ctx; + } + function u(t, e, n, o) { + if (t[2] && o) { + const r = t[2](o(n)); + if (void 0 === e.dirty) return r; + if ("object" == typeof r) { + const t = [], + n = Math.max(e.dirty.length, r.length); + for (let o = 0; o < n; o += 1) t[o] = e.dirty[o] | r[o]; + return t; + } + return e.dirty | r; + } + return e.dirty; + } + function f(t, e, n, o, r, l) { + if (r) { + const i = a(e, n, o, l); + t.p(i, r); + } + } + function d(t) { + if (t.ctx.length > 32) { + const e = [], + n = t.ctx.length / 32; + for (let t = 0; t < n; t++) e[t] = -1; + return e; + } + return -1; + } + const p = "undefined" != typeof window; + let h = p ? () => window.performance.now() : () => Date.now(), + m = p ? (t) => requestAnimationFrame(t) : t; + const g = new Set(); + function v(t) { + g.forEach((e) => { + e.c(t) || (g.delete(e), e.f()); + }), + 0 !== g.size && m(v); + } + function $(t) { + let e; + return ( + 0 === g.size && m(v), + { + promise: new Promise((n) => { + g.add((e = { c: t, f: n })); + }), + abort() { + g.delete(e); + }, + } + ); + } + function b(t, e) { + t.appendChild(e); + } + function y(t) { + if (!t) return document; + const e = t.getRootNode ? t.getRootNode() : t.ownerDocument; + return e && e.host ? e : t.ownerDocument; + } + function x(t) { + const e = S("style"); + return ( + (function (t, e) { + b(t.head || t, e), e.sheet; + })(y(t), e), + e.sheet + ); + } + function _(t, e, n) { + t.insertBefore(e, n || null); + } + function w(t) { + t.parentNode.removeChild(t); + } + function k(t, e) { + for (let n = 0; n < t.length; n += 1) t[n] && t[n].d(e); + } + function S(t) { + return document.createElement(t); + } + function j(t) { + return document.createTextNode(t); + } + function O() { + return j(" "); + } + function C() { + return j(""); + } + function N(t, e, n, o) { + return t.addEventListener(e, n, o), () => t.removeEventListener(e, n, o); + } + function P(t, e, n) { + null == n + ? t.removeAttribute(e) + : t.getAttribute(e) !== n && t.setAttribute(e, n); + } + function q(t, e) { + (e = "" + e), t.wholeText !== e && (t.data = e); + } + function M(t, e) { + t.value = null == e ? "" : e; + } + function I(t, e, n, o) { + null === n + ? t.style.removeProperty(e) + : t.style.setProperty(e, n, o ? "important" : ""); + } + function T(t, e) { + for (let n = 0; n < t.options.length; n += 1) { + const o = t.options[n]; + if (o.__value === e) return void (o.selected = !0); + } + t.selectedIndex = -1; + } + function E(t) { + const e = t.querySelector(":checked") || t.options[0]; + return e && e.__value; + } + function R(t, e, { bubbles: n = !1, cancelable: o = !1 } = {}) { + const r = document.createEvent("CustomEvent"); + return r.initCustomEvent(t, n, o, e), r; + } + const G = new Map(); + let B, + U = 0; + function D(t, e, n, o, r, l, i, s = 0) { + const c = 16.666 / o; + let a = "{\n"; + for (let t = 0; t <= 1; t += c) { + const o = e + (n - e) * l(t); + a += 100 * t + `%{${i(o, 1 - o)}}\n`; + } + const u = a + `100% {${i(n, 1 - n)}}\n}`, + f = `__svelte_${(function (t) { + let e = 5381, + n = t.length; + for (; n--; ) e = ((e << 5) - e) ^ t.charCodeAt(n); + return e >>> 0; + })(u)}_${s}`, + d = y(t), + { stylesheet: p, rules: h } = + G.get(d) || + (function (t, e) { + const n = { stylesheet: x(e), rules: {} }; + return G.set(t, n), n; + })(d, t); + h[f] || + ((h[f] = !0), p.insertRule(`@keyframes ${f} ${u}`, p.cssRules.length)); + const m = t.style.animation || ""; + return ( + (t.style.animation = `${ + m ? `${m}, ` : "" + }${f} ${o}ms linear ${r}ms 1 both`), + (U += 1), + f + ); + } + function A(t, e) { + const n = (t.style.animation || "").split(", "), + o = n.filter( + e ? (t) => t.indexOf(e) < 0 : (t) => -1 === t.indexOf("__svelte") + ), + r = n.length - o.length; + r && + ((t.style.animation = o.join(", ")), + (U -= r), + U || + m(() => { + U || + (G.forEach((t) => { + const { ownerNode: e } = t.stylesheet; + e && w(e); + }), + G.clear()); + })); + } + function F(n, o, r, l) { + if (!o) return t; + const i = n.getBoundingClientRect(); + if ( + o.left === i.left && + o.right === i.right && + o.top === i.top && + o.bottom === i.bottom + ) + return t; + const { + delay: s = 0, + duration: c = 300, + easing: a = e, + start: u = h() + s, + end: f = u + c, + tick: d = t, + css: p, + } = r(n, { from: o, to: i }, l); + let m, + g = !0, + v = !1; + function b() { + p && A(n, m), (g = !1); + } + return ( + $((t) => { + if ((!v && t >= u && (v = !0), v && t >= f && (d(1, 0), b()), !g)) + return !1; + if (v) { + const e = 0 + 1 * a((t - u) / c); + d(e, 1 - e); + } + return !0; + }), + p && (m = D(n, 0, 1, c, s, a, p)), + s || (v = !0), + d(0, 1), + b + ); + } + function L(t) { + const e = getComputedStyle(t); + if ("absolute" !== e.position && "fixed" !== e.position) { + const { width: n, height: o } = e, + r = t.getBoundingClientRect(); + (t.style.position = "absolute"), + (t.style.width = n), + (t.style.height = o), + J(t, r); + } + } + function J(t, e) { + const n = t.getBoundingClientRect(); + if (e.left !== n.left || e.top !== n.top) { + const o = getComputedStyle(t), + r = "none" === o.transform ? "" : o.transform; + t.style.transform = `${r} translate(${e.left - n.left}px, ${ + e.top - n.top + }px)`; + } + } + function V(t) { + B = t; + } + function z() { + if (!B) throw new Error("Function called outside component initialization"); + return B; + } + const K = [], + H = [], + Q = [], + W = [], + X = Promise.resolve(); + let Y = !1; + function Z(t) { + Q.push(t); + } + function tt(t) { + W.push(t); + } + const et = new Set(); + let nt, + ot = 0; + function rt() { + const t = B; + do { + for (; ot < K.length; ) { + const t = K[ot]; + ot++, V(t), lt(t.$$); + } + for (V(null), K.length = 0, ot = 0; H.length; ) H.pop()(); + for (let t = 0; t < Q.length; t += 1) { + const e = Q[t]; + et.has(e) || (et.add(e), e()); + } + Q.length = 0; + } while (K.length); + for (; W.length; ) W.pop()(); + (Y = !1), et.clear(), V(t); + } + function lt(t) { + if (null !== t.fragment) { + t.update(), l(t.before_update); + const e = t.dirty; + (t.dirty = [-1]), + t.fragment && t.fragment.p(t.ctx, e), + t.after_update.forEach(Z); + } + } + function it() { + return ( + nt || + ((nt = Promise.resolve()), + nt.then(() => { + nt = null; + })), + nt + ); + } + function st(t, e, n) { + t.dispatchEvent(R(`${e ? "intro" : "outro"}${n}`)); + } + const ct = new Set(); + let at; + function ut() { + at = { r: 0, c: [], p: at }; + } + function ft() { + at.r || l(at.c), (at = at.p); + } + function dt(t, e) { + t && t.i && (ct.delete(t), t.i(e)); + } + function pt(t, e, n, o) { + if (t && t.o) { + if (ct.has(t)) return; + ct.add(t), + at.c.push(() => { + ct.delete(t), o && (n && t.d(1), o()); + }), + t.o(e); + } else o && o(); + } + const ht = { duration: 0 }; + function mt(n, o, r) { + let l, + s, + c = o(n, r), + a = !1, + u = 0; + function f() { + l && A(n, l); + } + function d() { + const { + delay: o = 0, + duration: r = 300, + easing: i = e, + tick: d = t, + css: p, + } = c || ht; + p && (l = D(n, 0, 1, r, o, i, p, u++)), d(0, 1); + const m = h() + o, + g = m + r; + s && s.abort(), + (a = !0), + Z(() => st(n, !0, "start")), + (s = $((t) => { + if (a) { + if (t >= g) return d(1, 0), st(n, !0, "end"), f(), (a = !1); + if (t >= m) { + const e = i((t - m) / r); + d(e, 1 - e); + } + } + return a; + })); + } + let p = !1; + return { + start() { + p || ((p = !0), A(n), i(c) ? ((c = c()), it().then(d)) : d()); + }, + invalidate() { + p = !1; + }, + end() { + a && (f(), (a = !1)); + }, + }; + } + function gt(n, o, r) { + let s, + c = o(n, r), + a = !0; + const u = at; + function f() { + const { + delay: o = 0, + duration: r = 300, + easing: i = e, + tick: f = t, + css: d, + } = c || ht; + d && (s = D(n, 1, 0, r, o, i, d)); + const p = h() + o, + m = p + r; + Z(() => st(n, !1, "start")), + $((t) => { + if (a) { + if (t >= m) return f(0, 1), st(n, !1, "end"), --u.r || l(u.c), !1; + if (t >= p) { + const e = i((t - p) / r); + f(1 - e, e); + } + } + return a; + }); + } + return ( + (u.r += 1), + i(c) + ? it().then(() => { + (c = c()), f(); + }) + : f(), + { + end(t) { + t && c.tick && c.tick(1, 0), a && (s && A(n, s), (a = !1)); + }, + } + ); + } + function vt(t, e) { + t.f(), + (function (t, e) { + pt(t, 1, 1, () => { + e.delete(t.key); + }); + })(t, e); + } + function $t(t, e, n, o, r, l, i, s, c, a, u, f) { + let d = t.length, + p = l.length, + h = d; + const m = {}; + for (; h--; ) m[t[h].key] = h; + const g = [], + v = new Map(), + $ = new Map(); + for (h = p; h--; ) { + const t = f(r, l, h), + s = n(t); + let c = i.get(s); + c ? o && c.p(t, e) : ((c = a(s, t)), c.c()), + v.set(s, (g[h] = c)), + s in m && $.set(s, Math.abs(h - m[s])); + } + const b = new Set(), + y = new Set(); + function x(t) { + dt(t, 1), t.m(s, u), i.set(t.key, t), (u = t.first), p--; + } + for (; d && p; ) { + const e = g[p - 1], + n = t[d - 1], + o = e.key, + r = n.key; + e === n + ? ((u = e.first), d--, p--) + : v.has(r) + ? !i.has(o) || b.has(o) + ? x(e) + : y.has(r) + ? d-- + : $.get(o) > $.get(r) + ? (y.add(o), x(e)) + : (b.add(r), d--) + : (c(n, i), d--); + } + for (; d--; ) { + const e = t[d]; + v.has(e.key) || c(e, i); + } + for (; p; ) x(g[p - 1]); + return g; + } + function bt(t, e, n) { + const o = t.$$.props[e]; + void 0 !== o && ((t.$$.bound[o] = n), n(t.$$.ctx[o])); + } + function yt(t) { + t && t.c(); + } + function xt(t, e, n, r) { + const { fragment: s, on_mount: c, on_destroy: a, after_update: u } = t.$$; + s && s.m(e, n), + r || + Z(() => { + const e = c.map(o).filter(i); + a ? a.push(...e) : l(e), (t.$$.on_mount = []); + }), + u.forEach(Z); + } + function _t(t, e) { + const n = t.$$; + null !== n.fragment && + (l(n.on_destroy), + n.fragment && n.fragment.d(e), + (n.on_destroy = n.fragment = null), + (n.ctx = [])); + } + function wt(t, e) { + -1 === t.$$.dirty[0] && + (K.push(t), Y || ((Y = !0), X.then(rt)), t.$$.dirty.fill(0)), + (t.$$.dirty[(e / 31) | 0] |= 1 << e % 31); + } + function kt(e, n, o, i, s, c, a, u = [-1]) { + const f = B; + V(e); + const d = (e.$$ = { + fragment: null, + ctx: null, + props: c, + update: t, + not_equal: s, + bound: r(), + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(n.context || (f ? f.$$.context : [])), + callbacks: r(), + dirty: u, + skip_bound: !1, + root: n.target || f.$$.root, + }); + a && a(d.root); + let p = !1; + if ( + ((d.ctx = o + ? o(e, n.props || {}, (t, n, ...o) => { + const r = o.length ? o[0] : n; + return ( + d.ctx && + s(d.ctx[t], (d.ctx[t] = r)) && + (!d.skip_bound && d.bound[t] && d.bound[t](r), p && wt(e, t)), + n + ); + }) + : []), + d.update(), + (p = !0), + l(d.before_update), + (d.fragment = !!i && i(d.ctx)), + n.target) + ) { + if (n.hydrate) { + const t = (function (t) { + return Array.from(t.childNodes); + })(n.target); + d.fragment && d.fragment.l(t), t.forEach(w); + } else d.fragment && d.fragment.c(); + n.intro && dt(e.$$.fragment), + xt(e, n.target, n.anchor, n.customElement), + rt(); + } + V(f); + } + class St { + $destroy() { + _t(this, 1), (this.$destroy = t); + } + $on(t, e) { + const n = this.$$.callbacks[t] || (this.$$.callbacks[t] = []); + return ( + n.push(e), + () => { + const t = n.indexOf(e); + -1 !== t && n.splice(t, 1); + } + ); + } + $set(t) { + var e; + this.$$set && + ((e = t), 0 !== Object.keys(e).length) && + ((this.$$.skip_bound = !0), this.$$set(t), (this.$$.skip_bound = !1)); + } + } + function jt(t) { + const e = t - 1; + return e * e * e + 1; + } + function Ot(t) { + return --t * t * t * t * t + 1; + } + /*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -12,5 +623,2265 @@ var app=function(){"use strict";function t(){}const e=t=>t;function n(t,e){for(c LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ***************************************************************************** */function Ct(t){var{fallback:e}=t,o=function(t,e){var n={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(n[o]=t[o]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(t);r(t.set(c.key,{rect:s.getBoundingClientRect()}),()=>{if(r.has(c.key)){const{rect:t}=r.get(c.key);return r.delete(c.key),function(t,e,r){const{delay:l=0,duration:s=(t=>30*Math.sqrt(t)),easing:c=jt}=n(n({},o),r),a=e.getBoundingClientRect(),u=t.left-a.left,f=t.top-a.top,d=t.width/a.width,p=t.height/a.height,h=Math.sqrt(u*u+f*f),m=getComputedStyle(e),g="none"===m.transform?"":m.transform,v=+m.opacity;return{delay:l,duration:i(s)?s(h):s,easing:c,css:(t,e)=>`\n\t\t\t\topacity: ${t*v};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${g} translate(${e*u}px,${e*f}px) scale(${t+(1-t)*d}, ${t+(1-t)*p});\n\t\t\t`}}(t,s,c)}return t.delete(c.key),e&&e(s,c,l)})}return[s(l,r,!1),s(r,l,!0)]}function Nt(t,{from:e,to:n},o={}){const r=getComputedStyle(t),l="none"===r.transform?"":r.transform,[s,c]=r.transformOrigin.split(" ").map(parseFloat),a=e.left+e.width*s/n.width-(n.left+s),u=e.top+e.height*c/n.height-(n.top+c),{delay:f=0,duration:d=(t=>120*Math.sqrt(t)),easing:p=jt}=o;return{delay:f,duration:i(d)?d(Math.sqrt(a*a+u*u)):d,easing:p,css:(t,o)=>{const r=o*a,i=o*u,s=t+o*e.width/n.width,c=t+o*e.height/n.height;return`transform: ${l} translate(${r}px, ${i}px) scale(${s}, ${c});`}}}function Pt(e){let n,o,r,l,i,s,c,a,u,f,d;return{c(){n=S("div"),o=S("div"),r=S("div"),l=O(),i=S("div"),s=O(),c=S("div"),a=O(),u=S("div"),f=j(e[0]),d=j("%"),P(r,"class","gauge-fill gauge-bg svelte-1er7lpr"),P(i,"class","gauge-fill svelte-1er7lpr"),I(i,"transform","rotate(-"+e[2]+"deg)"),I(i,"box-shadow","inset 0 0 60px -5px "+e[1]),P(c,"class","gauge-white svelte-1er7lpr"),P(u,"class","gauge-value svelte-1er7lpr"),P(o,"class","gauge-overflow svelte-1er7lpr"),P(n,"class","gauge svelte-1er7lpr")},m(t,e){_(t,n,e),b(n,o),b(o,r),b(o,l),b(o,i),b(o,s),b(o,c),b(o,a),b(o,u),b(u,f),b(u,d)},p(t,[e]){4&e&&I(i,"transform","rotate(-"+t[2]+"deg)"),2&e&&I(i,"box-shadow","inset 0 0 60px -5px "+t[1]),1&e&&q(f,t[0])},i:t,o:t,d(t){t&&w(n)}}}function qt(t,e,n){let o,r,{title:l}=e,{value:i=l}=e,{thresholds:s="90,100"}=e,{colors:c="#7CFC00,#FFD700,#FF0000"}=e;return t.$$set=t=>{"title"in t&&n(3,l=t.title),"value"in t&&n(0,i=t.value),"thresholds"in t&&n(4,s=t.thresholds),"colors"in t&&n(5,c=t.colors)},t.$$.update=()=>{if(49&t.$$.dirty){const t=String(s).split(","),e=t.indexOf(t.find((t=>i({}),Tt=t=>({});function Et(t){let e,n,o,r,i,s,a,p,h,m,g,v,$;const y=t[4].header,x=c(y,t,t[3],Tt),k=t[4].default,j=c(k,t,t[3],null);return{c(){e=S("div"),n=O(),o=S("div"),x&&x.c(),r=O(),i=S("hr"),s=O(),j&&j.c(),a=O(),p=S("hr"),h=O(),m=S("button"),m.textContent="Close",P(e,"class","modal-background svelte-5a6h72"),I(m,"float","right"),I(m,"margin-right","2%"),I(m,"border","1px solid lightblue"),I(m,"border-radius","8px"),m.autofocus=!0,P(m,"class","svelte-5a6h72"),P(o,"class","modal svelte-5a6h72"),P(o,"role","dialog"),P(o,"aria-modal","true")},m(l,c){_(l,e,c),_(l,n,c),_(l,o,c),x&&x.m(o,null),b(o,r),b(o,i),b(o,s),j&&j.m(o,null),b(o,a),b(o,p),b(o,h),b(o,m),t[5](o),g=!0,m.focus(),v||($=[N(window,"keydown",t[2]),N(e,"click",t[1]),N(m,"click",t[1])],v=!0)},p(t,[e]){x&&x.p&&(!g||8&e)&&f(x,y,t,t[3],g?u(y,t[3],e,It):d(t[3]),Tt),j&&j.p&&(!g||8&e)&&f(j,k,t,t[3],g?u(k,t[3],e,null):d(t[3]),null)},i(t){g||(dt(x,t),dt(j,t),g=!0)},o(t){pt(x,t),pt(j,t),g=!1},d(r){r&&w(e),r&&w(n),r&&w(o),x&&x.d(r),j&&j.d(r),t[5](null),v=!1,l($)}}}function Rt(t,e,n){let{$$slots:o={},$$scope:r}=e;const l=function(){const t=z();return(e,n,{cancelable:o=!1}={})=>{const r=t.$$.callbacks[e];if(r){const l=R(e,n,{cancelable:o});return r.slice().forEach((e=>{e.call(t,l)})),!l.defaultPrevented}return!0}}(),i=()=>l("close");let s;const c="undefined"!=typeof document&&document.activeElement;var a;return c&&(a=()=>{c.focus()},z().$$.on_destroy.push(a)),t.$$set=t=>{"$$scope"in t&&n(3,r=t.$$scope)},[s,i,t=>{if("Escape"!==t.key){if("Tab"===t.key){const e=s.querySelectorAll("*"),n=Array.from(e).filter((t=>t.tabIndex>=0));let o=n.indexOf(document.activeElement);-1===o&&t.shiftKey&&(o=0),o+=n.length+(t.shiftKey?-1:1),o%=n.length,n[o].focus(),t.preventDefault()}}else i()},r,o,function(t){H[t?"unshift":"push"]((()=>{s=t,n(0,s)}))}]}class Gt extends St{constructor(t){super(),kt(this,t,Rt,Et,s,{})}}function Bt(t){let e,n;const o=t[1].default,r=c(o,t,t[0],null);return{c(){e=S("div"),r&&r.c(),P(e,"class","box svelte-1q88uwi")},m(t,o){_(t,e,o),r&&r.m(e,null),n=!0},p(t,[e]){r&&r.p&&(!n||1&e)&&f(r,o,t,t[0],n?u(o,t[0],e,null):d(t[0]),null)},i(t){n||(dt(r,t),n=!0)},o(t){pt(r,t),n=!1},d(t){t&&w(e),r&&r.d(t)}}}function Ut(t,e,n){let{$$slots:o={},$$scope:r}=e;return t.$$set=t=>{"$$scope"in t&&n(0,r=t.$$scope)},[r,o]}class Dt extends St{constructor(t){super(),kt(this,t,Ut,Bt,s,{})}}function At(t,e,n){const o=t.slice();return o[62]=e[n],o}function Ft(t,e,n){const o=t.slice();return o[65]=e[n],o}function Lt(t,e,n){const o=t.slice();return o[68]=e[n][0],o[69]=e[n][1],o}function Jt(t,e,n){const o=t.slice();return o[68]=e[n][0],o[69]=e[n][1],o}function Vt(t,e,n){const o=t.slice();return o[74]=e[n],o[75]=e,o[76]=n,o}function zt(t,e,n){const o=t.slice();return o[68]=e[n][0],o[69]=e[n][1],o}function Kt(t,e,n){const o=t.slice();return o[74]=e[n],o[79]=e,o[80]=n,o}function Ht(t,e,n){const o=t.slice();return o[81]=e[n],o}function Qt(t){let e,n,o,r;function l(e){t[19](e)}let i={};return void 0!==t[1]&&(i.value=t[1]),e=new Mt({props:i}),H.push((()=>bt(e,"value",l))),{c(){yt(e.$$.fragment),o=j("                   ")},m(t,n){xt(e,t,n),_(t,o,n),r=!0},p(t,o){const r={};!n&&2&o[0]&&(n=!0,r.value=t[1],tt((()=>n=!1))),e.$set(r)},i(t){r||(dt(e.$$.fragment,t),r=!0)},o(t){pt(e.$$.fragment,t),r=!1},d(t){_t(e,t),t&&w(o)}}}function Wt(t){let e,n,o,r;function l(e){t[20](e)}let i={};return void 0!==t[1]&&(i.value=t[1]),e=new Mt({props:i}),H.push((()=>bt(e,"value",l))),{c(){yt(e.$$.fragment),o=j("                   ")},m(t,n){xt(e,t,n),_(t,o,n),r=!0},p(t,o){const r={};!n&&2&o[0]&&(n=!0,r.value=t[1],tt((()=>n=!1))),e.$set(r)},i(t){r||(dt(e.$$.fragment,t),r=!0)},o(t){pt(e.$$.fragment,t),r=!1},d(t){_t(e,t),t&&w(o)}}}function Xt(t){let e,n,o,r;function l(e){t[21](e)}let i={};return void 0!==t[1]&&(i.value=t[1]),e=new Mt({props:i}),H.push((()=>bt(e,"value",l))),{c(){yt(e.$$.fragment),o=j("                   ")},m(t,n){xt(e,t,n),_(t,o,n),r=!0},p(t,o){const r={};!n&&2&o[0]&&(n=!0,r.value=t[1],tt((()=>n=!1))),e.$set(r)},i(t){r||(dt(e.$$.fragment,t),r=!0)},o(t){pt(e.$$.fragment,t),r=!1},d(t){_t(e,t),t&&w(o)}}}function Yt(t){let e,n,o,r;function l(e){t[22](e)}let i={};return void 0!==t[1]&&(i.value=t[1]),e=new Mt({props:i}),H.push((()=>bt(e,"value",l))),{c(){yt(e.$$.fragment),o=j("                   ")},m(t,n){xt(e,t,n),_(t,o,n),r=!0},p(t,o){const r={};!n&&2&o[0]&&(n=!0,r.value=t[1],tt((()=>n=!1))),e.$set(r)},i(t){r||(dt(e.$$.fragment,t),r=!0)},o(t){pt(e.$$.fragment,t),r=!1},d(t){_t(e,t),t&&w(o)}}}function Zt(e){let n,o,r,l=e[81].text+"";return{c(){n=S("option"),o=j(l),r=O(),n.__value=e[81],n.value=n.__value},m(t,e){_(t,n,e),b(n,o),b(n,r)},p:t,d(t){t&&w(n)}}}function te(e){let n,o,r,l=e[81].text+"";return{c(){n=S("option"),o=j(l),r=O(),n.__value=e[81],n.value=n.__value},m(t,e){_(t,n,e),b(n,o),b(n,r)},p:t,d(t){t&&w(n)}}}function ee(e){let n,o,r,l=e[81].text+"";return{c(){n=S("option"),o=j(l),r=O(),n.__value=e[81],n.value=n.__value},m(t,e){_(t,n,e),b(n,o),b(n,r)},p:t,d(t){t&&w(n)}}}function ne(t){let e;let n=function(t,e){return"esp8266_1mb"==t[81].text?ee:"esp8266_1mb_ota"==t[81].text?te:Zt}(t),o=n(t);return{c(){o.c(),e=C()},m(t,n){o.m(t,n),_(t,e,n)},p(t,e){o.p(t,e)},d(t){o.d(t),t&&w(e)}}}function oe(t){let e,n,o,r,i,s,c,a,u,f,d,p,h,m,g,v,$,y,x,k,C,q,T,E,R,G,B,U,D,A,F,L,J,V,z,K,H,Q;return{c(){e=S("p"),n=j("wifi сеть      "),o=S("input"),r=S("br"),i=O(),s=S("p"),c=j("пароль       "),a=S("input"),u=S("br"),f=O(),d=S("p"),p=j("MQTT сервер      "),h=S("input"),m=S("br"),g=O(),v=S("p"),$=j("порт       "),y=S("input"),x=S("br"),k=O(),C=S("p"),q=j("префикс      "),T=S("input"),E=S("br"),R=O(),G=S("p"),B=j("логин       "),U=S("input"),D=S("br"),A=O(),F=S("p"),L=j("пароль       "),J=S("input"),V=S("br"),z=O(),K=S("br"),I(o,"float","right"),P(o,"class","svelte-185rejv"),I(e,"color","#ccc"),I(a,"float","right"),P(a,"class","svelte-185rejv"),I(s,"color","#ccc"),I(h,"float","right"),P(h,"class","svelte-185rejv"),I(d,"color","#ccc"),I(y,"float","right"),P(y,"class","svelte-185rejv"),I(v,"color","#ccc"),I(T,"float","right"),P(T,"class","svelte-185rejv"),I(C,"color","#ccc"),I(U,"float","right"),P(U,"class","svelte-185rejv"),I(G,"color","#ccc"),I(J,"float","right"),P(J,"class","svelte-185rejv"),I(F,"color","#ccc")},m(l,w){_(l,e,w),b(e,n),b(e,o),M(o,t[0].iotmSettings.routerssid),b(e,r),_(l,i,w),_(l,s,w),b(s,c),b(s,a),M(a,t[0].iotmSettings.routerpass),b(s,u),_(l,f,w),_(l,d,w),b(d,p),b(d,h),M(h,t[0].iotmSettings.mqttServer),b(d,m),_(l,g,w),_(l,v,w),b(v,$),b(v,y),M(y,t[0].iotmSettings.mqttPort),b(v,x),_(l,k,w),_(l,C,w),b(C,q),b(C,T),M(T,t[0].iotmSettings.mqttPrefix),b(C,E),_(l,R,w),_(l,G,w),b(G,B),b(G,U),M(U,t[0].iotmSettings.mqttUser),b(G,D),_(l,A,w),_(l,F,w),b(F,L),b(F,J),M(J,t[0].iotmSettings.mqttPass),b(F,V),_(l,z,w),_(l,K,w),H||(Q=[N(o,"input",t[29]),N(a,"input",t[30]),N(h,"input",t[31]),N(y,"input",t[32]),N(T,"input",t[33]),N(U,"input",t[34]),N(J,"input",t[35])],H=!0)},p(t,e){1&e[0]&&o.value!==t[0].iotmSettings.routerssid&&M(o,t[0].iotmSettings.routerssid),1&e[0]&&a.value!==t[0].iotmSettings.routerpass&&M(a,t[0].iotmSettings.routerpass),1&e[0]&&h.value!==t[0].iotmSettings.mqttServer&&M(h,t[0].iotmSettings.mqttServer),1&e[0]&&y.value!==t[0].iotmSettings.mqttPort&&M(y,t[0].iotmSettings.mqttPort),1&e[0]&&T.value!==t[0].iotmSettings.mqttPrefix&&M(T,t[0].iotmSettings.mqttPrefix),1&e[0]&&U.value!==t[0].iotmSettings.mqttUser&&M(U,t[0].iotmSettings.mqttUser),1&e[0]&&J.value!==t[0].iotmSettings.mqttPass&&M(J,t[0].iotmSettings.mqttPass)},d(t){t&&w(e),t&&w(i),t&&w(s),t&&w(f),t&&w(d),t&&w(g),t&&w(v),t&&w(k),t&&w(C),t&&w(R),t&&w(G),t&&w(A),t&&w(F),t&&w(z),t&&w(K),H=!1,l(Q)}}}function re(t){let e,n,o,r,i,s,c,a,u,f,d,p,h,m,g,v,$,y,x,C,q,E,R,G,B,U,D,A,F,L="esp8266_4mb"==t[9].text&&Qt(t),J="esp32_4mb"==t[9].text&&Wt(t),V="esp8266_1mb"==t[9].text&&Xt(t),z="esp8266_1mb_ota"==t[9].text&&Yt(t),K=t[16],H=[];for(let e=0;et[23].call(s))),P(f,"align","right"),void 0===t[9]&&Z((()=>t[25].call(f))),P(e,"align","right"),I(m,"display",t[8]?"none":"inline"),I($,"display",t[8]?"inline":"none"),E.hidden=!0,P(E,"type","text"),P(E,"name","configpost"),P(E,"class","svelte-185rejv"),P(G,"align","center"),P(q,"action","index.php"),P(q,"method","post"),P(q,"name","fwbuilder"),P(U,"type","submit"),I(U,"border","1px solid lightblue"),I(U,"border-radius","8px"),P(U,"name","send"),U.value="Сохранить myProfile.json",P(U,"class","svelte-185rejv")},m(l,w){_(l,e,w),L&&L.m(e,null),b(e,n),J&&J.m(e,null),b(e,o),V&&V.m(e,null),b(e,r),z&&z.m(e,null),b(e,i),b(e,s),b(s,c),b(s,a),T(s,t[7]),b(e,u),b(e,f);for(let t=0;t{L=null})),ft()),"esp32_4mb"==t[9].text?J?(J.p(t,l),512&l[0]&&dt(J,1)):(J=Wt(t),J.c(),dt(J,1),J.m(e,o)):J&&(ut(),pt(J,1,1,(()=>{J=null})),ft()),"esp8266_1mb"==t[9].text?V?(V.p(t,l),512&l[0]&&dt(V,1)):(V=Xt(t),V.c(),dt(V,1),V.m(e,r)):V&&(ut(),pt(V,1,1,(()=>{V=null})),ft()),"esp8266_1mb_ota"==t[9].text?z?(z.p(t,l),512&l[0]&&dt(z,1)):(z=Yt(t),z.c(),dt(z,1),z.m(e,i)):z&&(ut(),pt(z,1,1,(()=>{z=null})),ft()),128&l[0]&&T(s,t[7]),65536&l[0]){let e;for(K=t[16],e=0;e{d&&d.end(1),f=mt(o,n[11],{key:n[74].path}),f.start()})),h=!0)},o(t){f&&f.invalidate(),d=gt(o,n[10],{key:n[74].path}),h=!1},d(t){t&&w(o),t&&d&&d.end(),m=!1,l(g)}}}function ie(t){let e,n,o,r,l,i,s=t[68]+"",c=[],a=new Map,u=t[0].modules[t[68]].filter($e);const f=t=>t[74].path;for(let e=0;e{d&&d.end(1),f=mt(o,n[11],{key:n[74].path}),f.start()})),h=!0)},o(t){f&&f.invalidate(),d=gt(o,n[10],{key:n[74].path}),h=!1},d(t){t&&w(o),t&&d&&d.end(),m=!1,l(g)}}}function ce(t){let e,n,o,r,l,i,s=t[68]+"",c=[],a=new Map,u=t[0].modules[t[68]].filter(be);const f=t=>t[74].path;for(let e=0;e2,d=f&&de(),p=t[62].params,h=[];for(let e=0;e2),f?d||(d=de(),d.c(),d.m(e,s)):d&&(d.d(1),d=null),16&n[0]){let o;for(p=t[62].params,o=0;opt(g[t],1,1,(()=>{g[t]=null}));let $=Object.entries(t[0].modules),y=[];for(let e=0;e<$.length;e+=1)y[e]=ce(Jt(t,$,e));const x=t=>pt(y[t],1,1,(()=>{y[t]=null}));let j=t[6]&&ae(t);return{c(){e=S("p"),yt(n.$$.fragment),o=O(),r=S("div"),l=S("div"),i=S("h2"),i.textContent="доступные модули",s=O();for(let t=0;t{j=null})),ft())},i(t){if(!h){dt(n.$$.fragment,t);for(let t=0;t!t.active,be=t=>t.active;function ye(t,e,n){let o="https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4dev/myProfile.json?1",r={},l=0,i={},s=[],c=[],a=[],u=[],f=!1,d="dev",p={};async function h(t){try{let e=await fetch(t,{mode:"cors",method:"GET"});e.ok?n(0,r=await e.json()):console.log("error",e.statusText)}catch(t){console.log(t)}}r={iotmSettings:{},projectProp:{platformio:{}},modules:{"Виртуальные элементы":[],"Сенсоры":[],"Исполнительные устройства":[],"Экраны":[]}},h(o),async function(t){try{let e=await fetch(t,{mode:"cors",method:"GET"});e.ok?p=await e.json():console.log("error",e.statusText)}catch(t){console.log(t)}}("https://iotmanager.org/firmwarebuilder/moduleSize.json?1");const[m,g]=Ct({fallback(t,e){const n=getComputedStyle(t),o="none"===n.transform?"":n.transform;return{duration:600,easing:Ot,css:t=>`\n\t\t\t\t\ttransform: ${o} scale(${t});\n\t\t\t\t\topacity: ${t}\n\t\t\t\t`}}});function v(t){console.log(t.path),o="https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4stable/"+JSON.parse(JSON.stringify(t.path).replace(/\\\\/g,"/"))+"/modinfo.json",i=[],n(2,s=[]),n(3,c=[]),n(3,c.name="Данные загружаются...",c),n(4,a=[]),n(5,u=[]),async function(t){i=[];try{let e=await fetch(t,{mode:"cors",method:"GET"});e.ok?(i=await e.json(),n(2,s=i),n(3,c=i.configItem[0]),n(4,a=i.about),n(5,u=a.propInfo)):console.log("error",e.statusText)}catch(t){console.log(t)}}(o),n(6,f=!0)}let $=!0;function b(t){n(8,$=t)}function y(){o="dev"==d?"https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4dev/myProfile.json?1":"https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4stable/myProfile.json?1",h(o)}function x(){n(1,l=0),n(0,r.projectProp.platformio.default_envs=_.text,r),k()}let _=[],w=[{id:1,text:"esp8266_4mb"},{id:2,text:"esp32_4mb"},{id:3,text:"esp8266_1mb"},{id:4,text:"esp8266_1mb_ota"}];function k(){n(1,l=0);for(const[t,e]of Object.entries(r.modules))for(const[e,o]of Object.entries(r.modules[t].filter((t=>t.active)))){let t=o.path.slice(o.path.lastIndexOf("/")+1,o.path.length);p[t]&&n(1,l+=Math.round(p[t][_.text]))}"esp8266_4mb"==_.text&&n(1,l=Math.round(l/6110)),"esp32_4mb"==_.text&&n(1,l=Math.round(l/3243)),"esp8266_1mb"==_.text&&n(1,l=Math.round(l/3237)),"esp8266_1mb_ota"==_.text&&n(1,l=Math.round(l/2601))}function S(){var t=document.createElement("a");t.href=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"text/plain"})),t.download="myProfile.json",console.log(JSON.stringify(r))}return[r,l,s,c,a,u,f,d,$,_,m,g,v,b,y,x,w,k,S,function(t){l=t,n(1,l)},function(t){l=t,n(1,l)},function(t){l=t,n(1,l)},function(t){l=t,n(1,l)},function(){d=E(this),n(7,d)},()=>y(),function(){_=E(this),n(9,_),n(16,w)},()=>x(),()=>b(!0),()=>b(!1),function(){r.iotmSettings.routerssid=this.value,n(0,r)},function(){r.iotmSettings.routerpass=this.value,n(0,r)},function(){r.iotmSettings.mqttServer=this.value,n(0,r)},function(){r.iotmSettings.mqttPort=this.value,n(0,r)},function(){r.iotmSettings.mqttPrefix=this.value,n(0,r)},function(){r.iotmSettings.mqttUser=this.value,n(0,r)},function(){r.iotmSettings.mqttPass=this.value,n(0,r)},function(){r=this.value,n(0,r)},()=>S(),function(t,e){t[e].active=this.checked,n(0,r)},t=>v(t),function(t,e){t[e].active=this.checked,n(0,r)},t=>v(t),()=>n(6,f=!1)]}return new class extends St{constructor(t){super(),kt(this,t,ye,ve,s,{},null,[-1,-1,-1])}}({target:document.body})}(); + ***************************************************************************** */ function Ct( + t + ) { + var { fallback: e } = t, + o = (function (t, e) { + var n = {}; + for (var o in t) + Object.prototype.hasOwnProperty.call(t, o) && + e.indexOf(o) < 0 && + (n[o] = t[o]); + if (null != t && "function" == typeof Object.getOwnPropertySymbols) { + var r = 0; + for (o = Object.getOwnPropertySymbols(t); r < o.length; r++) + e.indexOf(o[r]) < 0 && + Object.prototype.propertyIsEnumerable.call(t, o[r]) && + (n[o[r]] = t[o[r]]); + } + return n; + })(t, ["fallback"]); + const r = new Map(), + l = new Map(); + function s(t, r, l) { + return (s, c) => ( + t.set(c.key, { rect: s.getBoundingClientRect() }), + () => { + if (r.has(c.key)) { + const { rect: t } = r.get(c.key); + return ( + r.delete(c.key), + (function (t, e, r) { + const { + delay: l = 0, + duration: s = (t) => 30 * Math.sqrt(t), + easing: c = jt, + } = n(n({}, o), r), + a = e.getBoundingClientRect(), + u = t.left - a.left, + f = t.top - a.top, + d = t.width / a.width, + p = t.height / a.height, + h = Math.sqrt(u * u + f * f), + m = getComputedStyle(e), + g = "none" === m.transform ? "" : m.transform, + v = +m.opacity; + return { + delay: l, + duration: i(s) ? s(h) : s, + easing: c, + css: (t, e) => + `\n\t\t\t\topacity: ${ + t * v + };\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${g} translate(${ + e * u + }px,${e * f}px) scale(${t + (1 - t) * d}, ${ + t + (1 - t) * p + });\n\t\t\t`, + }; + })(t, s, c) + ); + } + return t.delete(c.key), e && e(s, c, l); + } + ); + } + return [s(l, r, !1), s(r, l, !0)]; + } + function Nt(t, { from: e, to: n }, o = {}) { + const r = getComputedStyle(t), + l = "none" === r.transform ? "" : r.transform, + [s, c] = r.transformOrigin.split(" ").map(parseFloat), + a = e.left + (e.width * s) / n.width - (n.left + s), + u = e.top + (e.height * c) / n.height - (n.top + c), + { + delay: f = 0, + duration: d = (t) => 120 * Math.sqrt(t), + easing: p = jt, + } = o; + return { + delay: f, + duration: i(d) ? d(Math.sqrt(a * a + u * u)) : d, + easing: p, + css: (t, o) => { + const r = o * a, + i = o * u, + s = t + (o * e.width) / n.width, + c = t + (o * e.height) / n.height; + return `transform: ${l} translate(${r}px, ${i}px) scale(${s}, ${c});`; + }, + }; + } + function Pt(e) { + let n, o, r, l, i, s, c, a, u, f, d; + return { + c() { + (n = S("div")), + (o = S("div")), + (r = S("div")), + (l = O()), + (i = S("div")), + (s = O()), + (c = S("div")), + (a = O()), + (u = S("div")), + (f = j(e[0])), + (d = j("%")), + P(r, "class", "gauge-fill gauge-bg svelte-1er7lpr"), + P(i, "class", "gauge-fill svelte-1er7lpr"), + I(i, "transform", "rotate(-" + e[2] + "deg)"), + I(i, "box-shadow", "inset 0 0 60px -5px " + e[1]), + P(c, "class", "gauge-white svelte-1er7lpr"), + P(u, "class", "gauge-value svelte-1er7lpr"), + P(o, "class", "gauge-overflow svelte-1er7lpr"), + P(n, "class", "gauge svelte-1er7lpr"); + }, + m(t, e) { + _(t, n, e), + b(n, o), + b(o, r), + b(o, l), + b(o, i), + b(o, s), + b(o, c), + b(o, a), + b(o, u), + b(u, f), + b(u, d); + }, + p(t, [e]) { + 4 & e && I(i, "transform", "rotate(-" + t[2] + "deg)"), + 2 & e && I(i, "box-shadow", "inset 0 0 60px -5px " + t[1]), + 1 & e && q(f, t[0]); + }, + i: t, + o: t, + d(t) { + t && w(n); + }, + }; + } + function qt(t, e, n) { + let o, + r, + { title: l } = e, + { value: i = l } = e, + { thresholds: s = "90,100" } = e, + { colors: c = "#7CFC00,#FFD700,#FF0000" } = e; + return ( + (t.$$set = (t) => { + "title" in t && n(3, (l = t.title)), + "value" in t && n(0, (i = t.value)), + "thresholds" in t && n(4, (s = t.thresholds)), + "colors" in t && n(5, (c = t.colors)); + }), + (t.$$.update = () => { + if (49 & t.$$.dirty) { + const t = String(s).split(","), + e = t.indexOf(t.find((t) => i < parseInt(t, 10))), + r = String(c).split(","); + n(1, (o = r[e] || r[r.length - 1])); + } + 1 & t.$$.dirty && n(2, (r = 1.8 * (100 - i))); + }), + [i, o, r, l, s, c] + ); + } + class Mt extends St { + constructor(t) { + super(), + kt(this, t, qt, Pt, s, { + title: 3, + value: 0, + thresholds: 4, + colors: 5, + }); + } + } + const It = (t) => ({}), + Tt = (t) => ({}); + function Et(t) { + let e, n, o, r, i, s, a, p, h, m, g, v, $; + const y = t[4].header, + x = c(y, t, t[3], Tt), + k = t[4].default, + j = c(k, t, t[3], null); + return { + c() { + (e = S("div")), + (n = O()), + (o = S("div")), + x && x.c(), + (r = O()), + (i = S("hr")), + (s = O()), + j && j.c(), + (a = O()), + (p = S("hr")), + (h = O()), + (m = S("button")), + (m.textContent = "Close"), + P(e, "class", "modal-background svelte-5a6h72"), + I(m, "float", "right"), + I(m, "margin-right", "2%"), + I(m, "border", "1px solid lightblue"), + I(m, "border-radius", "8px"), + (m.autofocus = !0), + P(m, "class", "svelte-5a6h72"), + P(o, "class", "modal svelte-5a6h72"), + P(o, "role", "dialog"), + P(o, "aria-modal", "true"); + }, + m(l, c) { + _(l, e, c), + _(l, n, c), + _(l, o, c), + x && x.m(o, null), + b(o, r), + b(o, i), + b(o, s), + j && j.m(o, null), + b(o, a), + b(o, p), + b(o, h), + b(o, m), + t[5](o), + (g = !0), + m.focus(), + v || + (($ = [ + N(window, "keydown", t[2]), + N(e, "click", t[1]), + N(m, "click", t[1]), + ]), + (v = !0)); + }, + p(t, [e]) { + x && + x.p && + (!g || 8 & e) && + f(x, y, t, t[3], g ? u(y, t[3], e, It) : d(t[3]), Tt), + j && + j.p && + (!g || 8 & e) && + f(j, k, t, t[3], g ? u(k, t[3], e, null) : d(t[3]), null); + }, + i(t) { + g || (dt(x, t), dt(j, t), (g = !0)); + }, + o(t) { + pt(x, t), pt(j, t), (g = !1); + }, + d(r) { + r && w(e), + r && w(n), + r && w(o), + x && x.d(r), + j && j.d(r), + t[5](null), + (v = !1), + l($); + }, + }; + } + function Rt(t, e, n) { + let { $$slots: o = {}, $$scope: r } = e; + const l = (function () { + const t = z(); + return (e, n, { cancelable: o = !1 } = {}) => { + const r = t.$$.callbacks[e]; + if (r) { + const l = R(e, n, { cancelable: o }); + return ( + r.slice().forEach((e) => { + e.call(t, l); + }), + !l.defaultPrevented + ); + } + return !0; + }; + })(), + i = () => l("close"); + let s; + const c = "undefined" != typeof document && document.activeElement; + var a; + return ( + c && + ((a = () => { + c.focus(); + }), + z().$$.on_destroy.push(a)), + (t.$$set = (t) => { + "$$scope" in t && n(3, (r = t.$$scope)); + }), + [ + s, + i, + (t) => { + if ("Escape" !== t.key) { + if ("Tab" === t.key) { + const e = s.querySelectorAll("*"), + n = Array.from(e).filter((t) => t.tabIndex >= 0); + let o = n.indexOf(document.activeElement); + -1 === o && t.shiftKey && (o = 0), + (o += n.length + (t.shiftKey ? -1 : 1)), + (o %= n.length), + n[o].focus(), + t.preventDefault(); + } + } else i(); + }, + r, + o, + function (t) { + H[t ? "unshift" : "push"](() => { + (s = t), n(0, s); + }); + }, + ] + ); + } + class Gt extends St { + constructor(t) { + super(), kt(this, t, Rt, Et, s, {}); + } + } + function Bt(t) { + let e, n; + const o = t[1].default, + r = c(o, t, t[0], null); + return { + c() { + (e = S("div")), r && r.c(), P(e, "class", "box svelte-1q88uwi"); + }, + m(t, o) { + _(t, e, o), r && r.m(e, null), (n = !0); + }, + p(t, [e]) { + r && + r.p && + (!n || 1 & e) && + f(r, o, t, t[0], n ? u(o, t[0], e, null) : d(t[0]), null); + }, + i(t) { + n || (dt(r, t), (n = !0)); + }, + o(t) { + pt(r, t), (n = !1); + }, + d(t) { + t && w(e), r && r.d(t); + }, + }; + } + function Ut(t, e, n) { + let { $$slots: o = {}, $$scope: r } = e; + return ( + (t.$$set = (t) => { + "$$scope" in t && n(0, (r = t.$$scope)); + }), + [r, o] + ); + } + class Dt extends St { + constructor(t) { + super(), kt(this, t, Ut, Bt, s, {}); + } + } + function At(t, e, n) { + const o = t.slice(); + return (o[62] = e[n]), o; + } + function Ft(t, e, n) { + const o = t.slice(); + return (o[65] = e[n]), o; + } + function Lt(t, e, n) { + const o = t.slice(); + return (o[68] = e[n][0]), (o[69] = e[n][1]), o; + } + function Jt(t, e, n) { + const o = t.slice(); + return (o[68] = e[n][0]), (o[69] = e[n][1]), o; + } + function Vt(t, e, n) { + const o = t.slice(); + return (o[74] = e[n]), (o[75] = e), (o[76] = n), o; + } + function zt(t, e, n) { + const o = t.slice(); + return (o[68] = e[n][0]), (o[69] = e[n][1]), o; + } + function Kt(t, e, n) { + const o = t.slice(); + return (o[74] = e[n]), (o[79] = e), (o[80] = n), o; + } + function Ht(t, e, n) { + const o = t.slice(); + return (o[81] = e[n]), o; + } + function Qt(t) { + let e, n, o, r; + function l(e) { + t[19](e); + } + let i = {}; + return ( + void 0 !== t[1] && (i.value = t[1]), + (e = new Mt({ props: i })), + H.push(() => bt(e, "value", l)), + { + c() { + yt(e.$$.fragment), (o = j("                   ")); + }, + m(t, n) { + xt(e, t, n), _(t, o, n), (r = !0); + }, + p(t, o) { + const r = {}; + !n && 2 & o[0] && ((n = !0), (r.value = t[1]), tt(() => (n = !1))), + e.$set(r); + }, + i(t) { + r || (dt(e.$$.fragment, t), (r = !0)); + }, + o(t) { + pt(e.$$.fragment, t), (r = !1); + }, + d(t) { + _t(e, t), t && w(o); + }, + } + ); + } + function Wt(t) { + let e, n, o, r; + function l(e) { + t[20](e); + } + let i = {}; + return ( + void 0 !== t[1] && (i.value = t[1]), + (e = new Mt({ props: i })), + H.push(() => bt(e, "value", l)), + { + c() { + yt(e.$$.fragment), (o = j("                   ")); + }, + m(t, n) { + xt(e, t, n), _(t, o, n), (r = !0); + }, + p(t, o) { + const r = {}; + !n && 2 & o[0] && ((n = !0), (r.value = t[1]), tt(() => (n = !1))), + e.$set(r); + }, + i(t) { + r || (dt(e.$$.fragment, t), (r = !0)); + }, + o(t) { + pt(e.$$.fragment, t), (r = !1); + }, + d(t) { + _t(e, t), t && w(o); + }, + } + ); + } + function Xt(t) { + let e, n, o, r; + function l(e) { + t[21](e); + } + let i = {}; + return ( + void 0 !== t[1] && (i.value = t[1]), + (e = new Mt({ props: i })), + H.push(() => bt(e, "value", l)), + { + c() { + yt(e.$$.fragment), (o = j("                   ")); + }, + m(t, n) { + xt(e, t, n), _(t, o, n), (r = !0); + }, + p(t, o) { + const r = {}; + !n && 2 & o[0] && ((n = !0), (r.value = t[1]), tt(() => (n = !1))), + e.$set(r); + }, + i(t) { + r || (dt(e.$$.fragment, t), (r = !0)); + }, + o(t) { + pt(e.$$.fragment, t), (r = !1); + }, + d(t) { + _t(e, t), t && w(o); + }, + } + ); + } + function Yt(t) { + let e, n, o, r; + function l(e) { + t[22](e); + } + let i = {}; + return ( + void 0 !== t[1] && (i.value = t[1]), + (e = new Mt({ props: i })), + H.push(() => bt(e, "value", l)), + { + c() { + yt(e.$$.fragment), (o = j("                   ")); + }, + m(t, n) { + xt(e, t, n), _(t, o, n), (r = !0); + }, + p(t, o) { + const r = {}; + !n && 2 & o[0] && ((n = !0), (r.value = t[1]), tt(() => (n = !1))), + e.$set(r); + }, + i(t) { + r || (dt(e.$$.fragment, t), (r = !0)); + }, + o(t) { + pt(e.$$.fragment, t), (r = !1); + }, + d(t) { + _t(e, t), t && w(o); + }, + } + ); + } + function Zt(e) { + let n, + o, + r, + l = e[81].text + ""; + return { + c() { + (n = S("option")), + (o = j(l)), + (r = O()), + (n.__value = e[81]), + (n.value = n.__value); + }, + m(t, e) { + _(t, n, e), b(n, o), b(n, r); + }, + p: t, + d(t) { + t && w(n); + }, + }; + } + function te(e) { + let n, + o, + r, + l = e[81].text + ""; + return { + c() { + (n = S("option")), + (o = j(l)), + (r = O()), + (n.__value = e[81]), + (n.value = n.__value); + }, + m(t, e) { + _(t, n, e), b(n, o), b(n, r); + }, + p: t, + d(t) { + t && w(n); + }, + }; + } + function ee(e) { + let n, + o, + r, + l = e[81].text + ""; + return { + c() { + (n = S("option")), + (o = j(l)), + (r = O()), + (n.__value = e[81]), + (n.value = n.__value); + }, + m(t, e) { + _(t, n, e), b(n, o), b(n, r); + }, + p: t, + d(t) { + t && w(n); + }, + }; + } + function ne(t) { + let e; + let n = (function (t, e) { + return "esp8266_1mb" == t[81].text + ? ee + : "esp8266_1mb_ota" == t[81].text + ? te + : Zt; + })(t), + o = n(t); + return { + c() { + o.c(), (e = C()); + }, + m(t, n) { + o.m(t, n), _(t, e, n); + }, + p(t, e) { + o.p(t, e); + }, + d(t) { + o.d(t), t && w(e); + }, + }; + } + function oe(t) { + let e, + n, + o, + r, + i, + s, + c, + a, + u, + f, + d, + p, + h, + m, + g, + v, + $, + y, + x, + k, + C, + q, + T, + E, + R, + G, + B, + U, + D, + A, + F, + L, + J, + V, + z, + K, + H, + Q; + return { + c() { + (e = S("p")), + (n = j("wifi сеть      ")), + (o = S("input")), + (r = S("br")), + (i = O()), + (s = S("p")), + (c = j("пароль       ")), + (a = S("input")), + (u = S("br")), + (f = O()), + (d = S("p")), + (p = j("MQTT сервер      ")), + (h = S("input")), + (m = S("br")), + (g = O()), + (v = S("p")), + ($ = j("порт       ")), + (y = S("input")), + (x = S("br")), + (k = O()), + (C = S("p")), + (q = j("префикс      ")), + (T = S("input")), + (E = S("br")), + (R = O()), + (G = S("p")), + (B = j("логин       ")), + (U = S("input")), + (D = S("br")), + (A = O()), + (F = S("p")), + (L = j("пароль       ")), + (J = S("input")), + (V = S("br")), + (z = O()), + (K = S("br")), + I(o, "float", "right"), + P(o, "class", "svelte-185rejv"), + I(e, "color", "#ccc"), + I(a, "float", "right"), + P(a, "class", "svelte-185rejv"), + I(s, "color", "#ccc"), + I(h, "float", "right"), + P(h, "class", "svelte-185rejv"), + I(d, "color", "#ccc"), + I(y, "float", "right"), + P(y, "class", "svelte-185rejv"), + I(v, "color", "#ccc"), + I(T, "float", "right"), + P(T, "class", "svelte-185rejv"), + I(C, "color", "#ccc"), + I(U, "float", "right"), + P(U, "class", "svelte-185rejv"), + I(G, "color", "#ccc"), + I(J, "float", "right"), + P(J, "class", "svelte-185rejv"), + I(F, "color", "#ccc"); + }, + m(l, w) { + _(l, e, w), + b(e, n), + b(e, o), + M(o, t[0].iotmSettings.routerssid), + b(e, r), + _(l, i, w), + _(l, s, w), + b(s, c), + b(s, a), + M(a, t[0].iotmSettings.routerpass), + b(s, u), + _(l, f, w), + _(l, d, w), + b(d, p), + b(d, h), + M(h, t[0].iotmSettings.mqttServer), + b(d, m), + _(l, g, w), + _(l, v, w), + b(v, $), + b(v, y), + M(y, t[0].iotmSettings.mqttPort), + b(v, x), + _(l, k, w), + _(l, C, w), + b(C, q), + b(C, T), + M(T, t[0].iotmSettings.mqttPrefix), + b(C, E), + _(l, R, w), + _(l, G, w), + b(G, B), + b(G, U), + M(U, t[0].iotmSettings.mqttUser), + b(G, D), + _(l, A, w), + _(l, F, w), + b(F, L), + b(F, J), + M(J, t[0].iotmSettings.mqttPass), + b(F, V), + _(l, z, w), + _(l, K, w), + H || + ((Q = [ + N(o, "input", t[29]), + N(a, "input", t[30]), + N(h, "input", t[31]), + N(y, "input", t[32]), + N(T, "input", t[33]), + N(U, "input", t[34]), + N(J, "input", t[35]), + ]), + (H = !0)); + }, + p(t, e) { + 1 & e[0] && + o.value !== t[0].iotmSettings.routerssid && + M(o, t[0].iotmSettings.routerssid), + 1 & e[0] && + a.value !== t[0].iotmSettings.routerpass && + M(a, t[0].iotmSettings.routerpass), + 1 & e[0] && + h.value !== t[0].iotmSettings.mqttServer && + M(h, t[0].iotmSettings.mqttServer), + 1 & e[0] && + y.value !== t[0].iotmSettings.mqttPort && + M(y, t[0].iotmSettings.mqttPort), + 1 & e[0] && + T.value !== t[0].iotmSettings.mqttPrefix && + M(T, t[0].iotmSettings.mqttPrefix), + 1 & e[0] && + U.value !== t[0].iotmSettings.mqttUser && + M(U, t[0].iotmSettings.mqttUser), + 1 & e[0] && + J.value !== t[0].iotmSettings.mqttPass && + M(J, t[0].iotmSettings.mqttPass); + }, + d(t) { + t && w(e), + t && w(i), + t && w(s), + t && w(f), + t && w(d), + t && w(g), + t && w(v), + t && w(k), + t && w(C), + t && w(R), + t && w(G), + t && w(A), + t && w(F), + t && w(z), + t && w(K), + (H = !1), + l(Q); + }, + }; + } + function re(t) { + let e, + n, + o, + r, + i, + s, + c, + a, + u, + f, + d, + p, + h, + m, + g, + v, + $, + y, + x, + C, + q, + E, + R, + G, + B, + U, + D, + A, + F, + L = "esp8266_4mb" == t[9].text && Qt(t), + J = "esp32_4mb" == t[9].text && Wt(t), + V = "esp8266_1mb" == t[9].text && Xt(t), + z = "esp8266_1mb_ota" == t[9].text && Yt(t), + K = t[16], + H = []; + for (let e = 0; e < K.length; e += 1) H[e] = ne(Ht(t, K, e)); + let Q = t[8] && oe(t); + return { + c() { + (e = S("form")), + L && L.c(), + (n = O()), + J && J.c(), + (o = O()), + V && V.c(), + (r = O()), + z && z.c(), + (i = O()), + (s = S("select")), + (c = S("option")), + (c.textContent = "ver4dev"), + (a = S("option")), + (a.textContent = "stabile"), + (u = O()), + (f = S("select")); + for (let t = 0; t < H.length; t += 1) H[t].c(); + (d = O()), + (p = S("br")), + (h = O()), + (m = S("p")), + (g = j("⏬")), + (v = O()), + ($ = S("p")), + (y = j("⏫")), + (x = O()), + Q && Q.c(), + (C = O()), + (q = S("form")), + (E = S("input")), + (R = O()), + (G = S("p")), + (B = O()), + (U = S("input")), + (c.__value = "dev"), + (c.value = c.__value), + (a.__value = "stabile"), + (a.value = a.__value), + P(s, "align", "right"), + void 0 === t[7] && Z(() => t[23].call(s)), + P(f, "align", "right"), + void 0 === t[9] && Z(() => t[25].call(f)), + P(e, "align", "right"), + I(m, "display", t[8] ? "none" : "inline"), + I($, "display", t[8] ? "inline" : "none"), + (E.hidden = !0), + P(E, "type", "text"), + P(E, "name", "configpost"), + P(E, "class", "svelte-185rejv"), + P(G, "align", "center"), + P(q, "action", "index.php"), + P(q, "method", "post"), + P(q, "name", "fwbuilder"), + P(U, "type", "submit"), + I(U, "border", "1px solid lightblue"), + I(U, "border-radius", "8px"), + P(U, "name", "send"), + (U.value = "Сохранить myProfile.json"), + P(U, "class", "svelte-185rejv"); + }, + m(l, w) { + _(l, e, w), + L && L.m(e, null), + b(e, n), + J && J.m(e, null), + b(e, o), + V && V.m(e, null), + b(e, r), + z && z.m(e, null), + b(e, i), + b(e, s), + b(s, c), + b(s, a), + T(s, t[7]), + b(e, u), + b(e, f); + for (let t = 0; t < H.length; t += 1) H[t].m(f, null); + T(f, t[9]), + _(l, d, w), + _(l, p, w), + _(l, h, w), + _(l, m, w), + b(m, g), + _(l, v, w), + _(l, $, w), + b($, y), + _(l, x, w), + Q && Q.m(l, w), + _(l, C, w), + _(l, q, w), + b(q, E), + M(E, t[0]), + b(q, R), + b(q, G), + _(l, B, w), + _(l, U, w), + (D = !0), + A || + ((F = [ + N(s, "change", t[23]), + N(s, "change", t[24]), + N(f, "change", t[25]), + N(f, "change", t[26]), + N(m, "click", t[27]), + N($, "click", t[28]), + N(E, "input", t[36]), + N(U, "click", t[37]), + ]), + (A = !0)); + }, + p(t, l) { + if ( + ("esp8266_4mb" == t[9].text + ? L + ? (L.p(t, l), 512 & l[0] && dt(L, 1)) + : ((L = Qt(t)), L.c(), dt(L, 1), L.m(e, n)) + : L && + (ut(), + pt(L, 1, 1, () => { + L = null; + }), + ft()), + "esp32_4mb" == t[9].text + ? J + ? (J.p(t, l), 512 & l[0] && dt(J, 1)) + : ((J = Wt(t)), J.c(), dt(J, 1), J.m(e, o)) + : J && + (ut(), + pt(J, 1, 1, () => { + J = null; + }), + ft()), + "esp8266_1mb" == t[9].text + ? V + ? (V.p(t, l), 512 & l[0] && dt(V, 1)) + : ((V = Xt(t)), V.c(), dt(V, 1), V.m(e, r)) + : V && + (ut(), + pt(V, 1, 1, () => { + V = null; + }), + ft()), + "esp8266_1mb_ota" == t[9].text + ? z + ? (z.p(t, l), 512 & l[0] && dt(z, 1)) + : ((z = Yt(t)), z.c(), dt(z, 1), z.m(e, i)) + : z && + (ut(), + pt(z, 1, 1, () => { + z = null; + }), + ft()), + 128 & l[0] && T(s, t[7]), + 65536 & l[0]) + ) { + let e; + for (K = t[16], e = 0; e < K.length; e += 1) { + const n = Ht(t, K, e); + H[e] ? H[e].p(n, l) : ((H[e] = ne(n)), H[e].c(), H[e].m(f, null)); + } + for (; e < H.length; e += 1) H[e].d(1); + H.length = K.length; + } + 66048 & l[0] && T(f, t[9]), + (!D || 256 & l[0]) && I(m, "display", t[8] ? "none" : "inline"), + (!D || 256 & l[0]) && I($, "display", t[8] ? "inline" : "none"), + t[8] + ? Q + ? Q.p(t, l) + : ((Q = oe(t)), Q.c(), Q.m(C.parentNode, C)) + : Q && (Q.d(1), (Q = null)), + 1 & l[0] && E.value !== t[0] && M(E, t[0]); + }, + i(t) { + D || (dt(L), dt(J), dt(V), dt(z), (D = !0)); + }, + o(t) { + pt(L), pt(J), pt(V), pt(z), (D = !1); + }, + d(t) { + t && w(e), + L && L.d(), + J && J.d(), + V && V.d(), + z && z.d(), + k(H, t), + t && w(d), + t && w(p), + t && w(h), + t && w(m), + t && w(v), + t && w($), + t && w(x), + Q && Q.d(t), + t && w(C), + t && w(q), + t && w(B), + t && w(U), + (A = !1), + l(F); + }, + }; + } + function le(e, n) { + let o, + r, + i, + s, + c, + a, + u, + f, + d, + p, + h, + m, + g, + v = + n[74].path.slice(n[74].path.lastIndexOf("/") + 1, n[74].path.length) + + "", + $ = t; + function y() { + n[38].call(r, n[79], n[80]); + } + function x() { + return n[39](n[74]); + } + return { + key: e, + first: null, + c() { + (o = S("label")), + (r = S("input")), + (i = O()), + (s = j(v)), + (c = O()), + (a = S("button")), + (a.textContent = "?"), + (u = O()), + P(r, "type", "checkbox"), + P(r, "class", "svelte-185rejv"), + P(a, "class", "svelte-185rejv"), + P(o, "class", "svelte-185rejv"), + (this.first = o); + }, + m(t, e) { + _(t, o, e), + b(o, r), + (r.checked = n[74].active), + b(o, i), + b(o, s), + b(o, c), + b(o, a), + b(o, u), + (h = !0), + m || + ((g = [ + N(r, "change", y), + N(r, "click", n[17]()), + N(a, "click", x), + ]), + (m = !0)); + }, + p(t, e) { + (n = t), + 1 & e[0] && (r.checked = n[74].active), + (!h || 1 & e[0]) && + v !== + (v = + n[74].path.slice( + n[74].path.lastIndexOf("/") + 1, + n[74].path.length + ) + "") && + q(s, v); + }, + r() { + p = o.getBoundingClientRect(); + }, + f() { + L(o), $(), J(o, p); + }, + a() { + $(), ($ = F(o, p, Nt, {})); + }, + i(t) { + h || + (Z(() => { + d && d.end(1), (f = mt(o, n[11], { key: n[74].path })), f.start(); + }), + (h = !0)); + }, + o(t) { + f && f.invalidate(), (d = gt(o, n[10], { key: n[74].path })), (h = !1); + }, + d(t) { + t && w(o), t && d && d.end(), (m = !1), l(g); + }, + }; + } + function ie(t) { + let e, + n, + o, + r, + l, + i, + s = t[68] + "", + c = [], + a = new Map(), + u = t[0].modules[t[68]].filter($e); + const f = (t) => t[74].path; + for (let e = 0; e < u.length; e += 1) { + let n = Kt(t, u, e), + o = f(n); + a.set(o, (c[e] = le(o, n))); + } + return { + c() { + (e = S("b")), (n = j(s)), (o = S("br")), (r = O()); + for (let t = 0; t < c.length; t += 1) c[t].c(); + l = C(); + }, + m(t, s) { + _(t, e, s), b(e, n), _(t, o, s), _(t, r, s); + for (let e = 0; e < c.length; e += 1) c[e].m(t, s); + _(t, l, s), (i = !0); + }, + p(t, e) { + if ( + ((!i || 1 & e[0]) && s !== (s = t[68] + "") && q(n, s), 135169 & e[0]) + ) { + (u = t[0].modules[t[68]].filter($e)), ut(); + for (let t = 0; t < c.length; t += 1) c[t].r(); + c = $t(c, e, f, 1, t, u, a, l.parentNode, vt, le, l, Kt); + for (let t = 0; t < c.length; t += 1) c[t].a(); + ft(); + } + }, + i(t) { + if (!i) { + for (let t = 0; t < u.length; t += 1) dt(c[t]); + i = !0; + } + }, + o(t) { + for (let t = 0; t < c.length; t += 1) pt(c[t]); + i = !1; + }, + d(t) { + t && w(e), t && w(o), t && w(r); + for (let e = 0; e < c.length; e += 1) c[e].d(t); + t && w(l); + }, + }; + } + function se(e, n) { + let o, + r, + i, + s, + c, + a, + u, + f, + d, + p, + h, + m, + g, + v = + n[74].path.slice(n[74].path.lastIndexOf("/") + 1, n[74].path.length) + + "", + $ = t; + function y() { + n[40].call(r, n[75], n[76]); + } + function x() { + return n[41](n[74]); + } + return { + key: e, + first: null, + c() { + (o = S("label")), + (r = S("input")), + (i = O()), + (s = j(v)), + (c = O()), + (a = S("button")), + (a.textContent = "?"), + (u = O()), + P(r, "type", "checkbox"), + P(r, "class", "svelte-185rejv"), + P(a, "class", "svelte-185rejv"), + P(o, "class", "svelte-185rejv"), + (this.first = o); + }, + m(t, e) { + _(t, o, e), + b(o, r), + (r.checked = n[74].active), + b(o, i), + b(o, s), + b(o, c), + b(o, a), + b(o, u), + (h = !0), + m || + ((g = [ + N(r, "change", y), + N(r, "click", n[17]()), + N(a, "click", x), + ]), + (m = !0)); + }, + p(t, e) { + (n = t), + 1 & e[0] && (r.checked = n[74].active), + (!h || 1 & e[0]) && + v !== + (v = + n[74].path.slice( + n[74].path.lastIndexOf("/") + 1, + n[74].path.length + ) + "") && + q(s, v); + }, + r() { + p = o.getBoundingClientRect(); + }, + f() { + L(o), $(), J(o, p); + }, + a() { + $(), ($ = F(o, p, Nt, {})); + }, + i(t) { + h || + (Z(() => { + d && d.end(1), (f = mt(o, n[11], { key: n[74].path })), f.start(); + }), + (h = !0)); + }, + o(t) { + f && f.invalidate(), (d = gt(o, n[10], { key: n[74].path })), (h = !1); + }, + d(t) { + t && w(o), t && d && d.end(), (m = !1), l(g); + }, + }; + } + function ce(t) { + let e, + n, + o, + r, + l, + i, + s = t[68] + "", + c = [], + a = new Map(), + u = t[0].modules[t[68]].filter(be); + const f = (t) => t[74].path; + for (let e = 0; e < u.length; e += 1) { + let n = Vt(t, u, e), + o = f(n); + a.set(o, (c[e] = se(o, n))); + } + return { + c() { + (e = S("b")), (n = j(s)), (o = S("br")), (r = O()); + for (let t = 0; t < c.length; t += 1) c[t].c(); + l = C(); + }, + m(t, s) { + _(t, e, s), b(e, n), _(t, o, s), _(t, r, s); + for (let e = 0; e < c.length; e += 1) c[e].m(t, s); + _(t, l, s), (i = !0); + }, + p(t, e) { + if ( + ((!i || 1 & e[0]) && s !== (s = t[68] + "") && q(n, s), 135169 & e[0]) + ) { + (u = t[0].modules[t[68]].filter(be)), ut(); + for (let t = 0; t < c.length; t += 1) c[t].r(); + c = $t(c, e, f, 1, t, u, a, l.parentNode, vt, se, l, Vt); + for (let t = 0; t < c.length; t += 1) c[t].a(); + ft(); + } + }, + i(t) { + if (!i) { + for (let t = 0; t < u.length; t += 1) dt(c[t]); + i = !0; + } + }, + o(t) { + for (let t = 0; t < c.length; t += 1) pt(c[t]); + i = !1; + }, + d(t) { + t && w(e), t && w(o), t && w(r); + for (let e = 0; e < c.length; e += 1) c[e].d(t); + t && w(l); + }, + }; + } + function ae(t) { + let e, n; + return ( + (e = new Gt({ + props: { $$slots: { default: [ge] }, $$scope: { ctx: t } }, + })), + e.$on("close", t[42]), + { + c() { + yt(e.$$.fragment); + }, + m(t, o) { + xt(e, t, o), (n = !0); + }, + p(t, n) { + const o = {}; + (60 & n[0]) | (4194304 & n[2]) && (o.$$scope = { dirty: n, ctx: t }), + e.$set(o); + }, + i(t) { + n || (dt(e.$$.fragment, t), (n = !0)); + }, + o(t) { + pt(e.$$.fragment, t), (n = !1); + }, + d(t) { + _t(e, t); + }, + } + ); + } + function ue(t) { + let e, + n, + o, + r, + l, + i = t[68] + "", + s = t[69] + ""; + return { + c() { + (e = S("p")), + (n = S("b")), + (o = j(i)), + (r = j(" - ")), + (l = j(s)), + I(e, "margin-left", "20px"); + }, + m(t, i) { + _(t, e, i), b(e, n), b(n, o), b(e, r), b(e, l); + }, + p(t, e) { + 32 & e[0] && i !== (i = t[68] + "") && q(o, i), + 32 & e[0] && s !== (s = t[69] + "") && q(l, s); + }, + d(t) { + t && w(e); + }, + }; + } + function fe(t) { + let e, + n, + o, + r, + l = t[4].funcInfo, + i = []; + for (let e = 0; e < l.length; e += 1) i[e] = he(At(t, l, e)); + return { + c() { + (e = j("Использование в сценариях: ")), (n = S("br")), (o = O()); + for (let t = 0; t < i.length; t += 1) i[t].c(); + r = C(); + }, + m(t, l) { + _(t, e, l), _(t, n, l), _(t, o, l); + for (let e = 0; e < i.length; e += 1) i[e].m(t, l); + _(t, r, l); + }, + p(t, e) { + if (16 & e[0]) { + let n; + for (l = t[4].funcInfo, n = 0; n < l.length; n += 1) { + const o = At(t, l, n); + i[n] + ? i[n].p(o, e) + : ((i[n] = he(o)), i[n].c(), i[n].m(r.parentNode, r)); + } + for (; n < i.length; n += 1) i[n].d(1); + i.length = l.length; + } + }, + d(t) { + t && w(e), t && w(n), t && w(o), k(i, t), t && w(r); + }, + }; + } + function de(t) { + let e, n, o; + return { + c() { + (e = S("br")), + (n = O()), + (o = S("lable")), + (o.textContent = "параметры:"), + I(o, "margin-left", "5px"); + }, + m(t, r) { + _(t, e, r), _(t, n, r), _(t, o, r); + }, + d(t) { + t && w(e), t && w(n), t && w(o); + }, + }; + } + function pe(t) { + let e, + n, + o, + r, + l, + i = t[65] + ""; + return { + c() { + (e = S("br")), + (n = O()), + (o = S("lable")), + (r = j("- ")), + (l = j(i)), + I(o, "margin-left", "40px"); + }, + m(t, i) { + _(t, e, i), _(t, n, i), _(t, o, i), b(o, r), b(o, l); + }, + p(t, e) { + 16 & e[0] && i !== (i = t[65] + "") && q(l, i); + }, + d(t) { + t && w(e), t && w(n), t && w(o); + }, + }; + } + function he(t) { + let e, + n, + o, + r, + l, + i, + s, + c, + a = (t[62].name ? t[62].name : "") + "", + u = (t[62].descr ? t[62].descr : "") + "", + f = JSON.stringify(t[62].params).length > 2, + d = f && de(), + p = t[62].params, + h = []; + for (let e = 0; e < p.length; e += 1) h[e] = pe(Ft(t, p, e)); + return { + c() { + (e = S("p")), + (n = S("b")), + (o = j(a)), + (r = j(" - ")), + (l = j(u)), + (i = O()), + d && d.c(), + (s = O()); + for (let t = 0; t < h.length; t += 1) h[t].c(); + (c = O()), I(e, "margin-left", "20px"); + }, + m(t, a) { + _(t, e, a), + b(e, n), + b(n, o), + b(e, r), + b(e, l), + b(e, i), + d && d.m(e, null), + b(e, s); + for (let t = 0; t < h.length; t += 1) h[t].m(e, null); + b(e, c); + }, + p(t, n) { + if ( + (16 & n[0] && + a !== (a = (t[62].name ? t[62].name : "") + "") && + q(o, a), + 16 & n[0] && + u !== (u = (t[62].descr ? t[62].descr : "") + "") && + q(l, u), + 16 & n[0] && (f = JSON.stringify(t[62].params).length > 2), + f ? d || ((d = de()), d.c(), d.m(e, s)) : d && (d.d(1), (d = null)), + 16 & n[0]) + ) { + let o; + for (p = t[62].params, o = 0; o < p.length; o += 1) { + const r = Ft(t, p, o); + h[o] ? h[o].p(r, n) : ((h[o] = pe(r)), h[o].c(), h[o].m(e, c)); + } + for (; o < h.length; o += 1) h[o].d(1); + h.length = p.length; + } + }, + d(t) { + t && w(e), d && d.d(), k(h, t); + }, + }; + } + function me(t) { + let e, n, o, r; + return { + c() { + (e = S("a")), + (n = j( + "Описание модуля в WIKI. Примеры подключения, использования." + )), + (r = S("br")), + P(e, "href", (o = t[4].exampleURL)); + }, + m(t, o) { + _(t, e, o), b(e, n), _(t, r, o); + }, + p(t, n) { + 16 & n[0] && o !== (o = t[4].exampleURL) && P(e, "href", o); + }, + d(t) { + t && w(e), t && w(r); + }, + }; + } + function ge(t) { + let e, + n, + o, + r, + l, + i, + s, + c, + a, + u, + f, + d, + p, + h, + m, + g, + v, + $, + y, + x, + C, + N, + M, + T, + E, + R, + G, + B, + U, + D, + A, + F, + L, + J, + V, + z, + K, + H, + Q, + W, + X, + Y, + Z, + tt, + et, + nt, + ot, + rt, + lt, + it, + st, + ct, + at, + ut = (t[4].title ? t[4].title : "") + "", + ft = (t[4].moduleName ? t[4].moduleName : "") + "", + dt = (t[3].name ? t[3].name : "") + "", + pt = (t[4].moduleDesc ? t[4].moduleDesc : "") + "", + ht = t[2].menuSection ? "Тип: " : "", + mt = (t[2].menuSection ? t[2].menuSection : "") + "", + gt = t[4].moduleVersion ? "Версия: " : "", + vt = (t[4].moduleVersion ? t[4].moduleVersion : "") + "", + $t = t[4].propInfo ? "Параметры: " : "", + bt = (t[4].authorName, ""), + yt = t[4].authorName ? "Автор: " : "", + xt = (t[4].authorName ? t[4].authorName : "") + "", + _t = (t[4].authorContact ? t[4].authorContact : "") + "", + wt = t[4].authorGit ? "GitHub: " : "", + kt = (t[4].authorGit ? t[4].authorGit : "") + "", + St = t[4].specialThanks ? "Благодарности: " : "", + jt = (t[4].specialThanks ? t[4].specialThanks : "") + "", + Ot = Object.entries(t[5]), + Ct = []; + for (let e = 0; e < Ot.length; e += 1) Ct[e] = ue(Lt(t, Ot, e)); + let Nt = t[4].funcInfo && fe(t), + Pt = t[4].exampleURL && me(t); + return { + c() { + (e = S("h2")), + (n = j(ut)), + (o = O()), + (r = S("strong")), + (l = j(ft)), + (i = j("\n(")), + (s = j(dt)), + (c = j(")\n")), + (a = S("div")), + (u = j(pt)), + (f = S("br")), + (d = O()), + (p = S("div")), + (h = j(ht)), + (m = O()), + (g = j(mt)), + (v = O()), + ($ = j(gt)), + (y = O()), + (x = j(vt)), + (C = S("br")), + (N = S("br")), + (M = O()), + (T = j($t)), + (E = S("br")), + (R = O()); + for (let t = 0; t < Ct.length; t += 1) Ct[t].c(); + (G = O()), + Nt && Nt.c(), + (B = O()), + (U = j(bt)), + (D = S("br")), + (A = O()), + Pt && Pt.c(), + (F = O()), + (L = j(yt)), + (J = O()), + (V = j(xt)), + (z = S("br")), + (K = O()), + (H = S("a")), + (Q = j(_t)), + (X = S("br")), + (Y = O()), + (Z = j(wt)), + (tt = O()), + (et = S("a")), + (nt = j(kt)), + (rt = S("br")), + (lt = O()), + (it = j(St)), + (st = O()), + (ct = j(jt)), + (at = S("br")), + P(e, "class", "svelte-185rejv"), + I(a, "margin-left", "20px"), + P(H, "href", (W = t[4].authorContact ? t[4].authorContact : "")), + P(et, "href", (ot = t[4].authorGit ? t[4].authorGit : "")); + }, + m(t, w) { + _(t, e, w), + b(e, n), + _(t, o, w), + _(t, r, w), + b(r, l), + _(t, i, w), + _(t, s, w), + _(t, c, w), + _(t, a, w), + b(a, u), + _(t, f, w), + _(t, d, w), + _(t, p, w), + b(p, h), + b(p, m), + b(p, g), + _(t, v, w), + _(t, $, w), + _(t, y, w), + _(t, x, w), + _(t, C, w), + _(t, N, w), + _(t, M, w), + _(t, T, w), + _(t, E, w), + _(t, R, w); + for (let e = 0; e < Ct.length; e += 1) Ct[e].m(t, w); + _(t, G, w), + Nt && Nt.m(t, w), + _(t, B, w), + _(t, U, w), + _(t, D, w), + _(t, A, w), + Pt && Pt.m(t, w), + _(t, F, w), + _(t, L, w), + _(t, J, w), + _(t, V, w), + _(t, z, w), + _(t, K, w), + _(t, H, w), + b(H, Q), + _(t, X, w), + _(t, Y, w), + _(t, Z, w), + _(t, tt, w), + _(t, et, w), + b(et, nt), + _(t, rt, w), + _(t, lt, w), + _(t, it, w), + _(t, st, w), + _(t, ct, w), + _(t, at, w); + }, + p(t, e) { + if ( + (16 & e[0] && + ut !== (ut = (t[4].title ? t[4].title : "") + "") && + q(n, ut), + 16 & e[0] && + ft !== (ft = (t[4].moduleName ? t[4].moduleName : "") + "") && + q(l, ft), + 8 & e[0] && + dt !== (dt = (t[3].name ? t[3].name : "") + "") && + q(s, dt), + 16 & e[0] && + pt !== (pt = (t[4].moduleDesc ? t[4].moduleDesc : "") + "") && + q(u, pt), + 4 & e[0] && ht !== (ht = t[2].menuSection ? "Тип: " : "") && q(h, ht), + 4 & e[0] && + mt !== (mt = (t[2].menuSection ? t[2].menuSection : "") + "") && + q(g, mt), + 16 & e[0] && + gt !== (gt = t[4].moduleVersion ? "Версия: " : "") && + q($, gt), + 16 & e[0] && + vt !== (vt = (t[4].moduleVersion ? t[4].moduleVersion : "") + "") && + q(x, vt), + 16 & e[0] && + $t !== ($t = t[4].propInfo ? "Параметры: " : "") && + q(T, $t), + 32 & e[0]) + ) { + let n; + for (Ot = Object.entries(t[5]), n = 0; n < Ot.length; n += 1) { + const o = Lt(t, Ot, n); + Ct[n] + ? Ct[n].p(o, e) + : ((Ct[n] = ue(o)), Ct[n].c(), Ct[n].m(G.parentNode, G)); + } + for (; n < Ct.length; n += 1) Ct[n].d(1); + Ct.length = Ot.length; + } + t[4].funcInfo + ? Nt + ? Nt.p(t, e) + : ((Nt = fe(t)), Nt.c(), Nt.m(B.parentNode, B)) + : Nt && (Nt.d(1), (Nt = null)), + 16 & e[0] && bt !== (t[4].authorName, (bt = "")) && q(U, bt), + t[4].exampleURL + ? Pt + ? Pt.p(t, e) + : ((Pt = me(t)), Pt.c(), Pt.m(F.parentNode, F)) + : Pt && (Pt.d(1), (Pt = null)), + 16 & e[0] && + yt !== (yt = t[4].authorName ? "Автор: " : "") && + q(L, yt), + 16 & e[0] && + xt !== (xt = (t[4].authorName ? t[4].authorName : "") + "") && + q(V, xt), + 16 & e[0] && + _t !== (_t = (t[4].authorContact ? t[4].authorContact : "") + "") && + q(Q, _t), + 16 & e[0] && + W !== (W = t[4].authorContact ? t[4].authorContact : "") && + P(H, "href", W), + 16 & e[0] && + wt !== (wt = t[4].authorGit ? "GitHub: " : "") && + q(Z, wt), + 16 & e[0] && + kt !== (kt = (t[4].authorGit ? t[4].authorGit : "") + "") && + q(nt, kt), + 16 & e[0] && + ot !== (ot = t[4].authorGit ? t[4].authorGit : "") && + P(et, "href", ot), + 16 & e[0] && + St !== (St = t[4].specialThanks ? "Благодарности: " : "") && + q(it, St), + 16 & e[0] && + jt !== (jt = (t[4].specialThanks ? t[4].specialThanks : "") + "") && + q(ct, jt); + }, + d(t) { + t && w(e), + t && w(o), + t && w(r), + t && w(i), + t && w(s), + t && w(c), + t && w(a), + t && w(f), + t && w(d), + t && w(p), + t && w(v), + t && w($), + t && w(y), + t && w(x), + t && w(C), + t && w(N), + t && w(M), + t && w(T), + t && w(E), + t && w(R), + k(Ct, t), + t && w(G), + Nt && Nt.d(t), + t && w(B), + t && w(U), + t && w(D), + t && w(A), + Pt && Pt.d(t), + t && w(F), + t && w(L), + t && w(J), + t && w(V), + t && w(z), + t && w(K), + t && w(H), + t && w(X), + t && w(Y), + t && w(Z), + t && w(tt), + t && w(et), + t && w(rt), + t && w(lt), + t && w(it), + t && w(st), + t && w(ct), + t && w(at); + }, + }; + } + function ve(t) { + let e, n, o, r, l, i, s, c, a, u, f, d, p, h; + n = new Dt({ props: { $$slots: { default: [re] }, $$scope: { ctx: t } } }); + let m = Object.entries(t[0].modules), + g = []; + for (let e = 0; e < m.length; e += 1) g[e] = ie(zt(t, m, e)); + const v = (t) => + pt(g[t], 1, 1, () => { + g[t] = null; + }); + let $ = Object.entries(t[0].modules), + y = []; + for (let e = 0; e < $.length; e += 1) y[e] = ce(Jt(t, $, e)); + const x = (t) => + pt(y[t], 1, 1, () => { + y[t] = null; + }); + let j = t[6] && ae(t); + return { + c() { + (e = S("p")), + yt(n.$$.fragment), + (o = O()), + (r = S("div")), + (l = S("div")), + (i = S("h2")), + (i.textContent = "доступные модули"), + (s = O()); + for (let t = 0; t < g.length; t += 1) g[t].c(); + (c = O()), + (a = S("div")), + (u = S("h2")), + (u.textContent = "в прошивке"), + (f = O()); + for (let t = 0; t < y.length; t += 1) y[t].c(); + (d = O()), + j && j.c(), + (p = C()), + P(e, "align", "center"), + P(i, "class", "svelte-185rejv"), + P(l, "class", "left svelte-185rejv"), + P(u, "class", "svelte-185rejv"), + P(a, "class", "right svelte-185rejv"), + P(r, "class", "board svelte-185rejv"); + }, + m(t, m) { + _(t, e, m), + xt(n, e, null), + b(e, o), + _(t, r, m), + b(r, l), + b(l, i), + b(l, s); + for (let t = 0; t < g.length; t += 1) g[t].m(l, null); + b(r, c), b(r, a), b(a, u), b(a, f); + for (let t = 0; t < y.length; t += 1) y[t].m(a, null); + _(t, d, m), j && j.m(t, m), _(t, p, m), (h = !0); + }, + p(t, e) { + const o = {}; + if ( + ((899 & e[0]) | (4194304 & e[2]) && + (o.$$scope = { dirty: e, ctx: t }), + n.$set(o), + 135169 & e[0]) + ) { + let n; + for (m = Object.entries(t[0].modules), n = 0; n < m.length; n += 1) { + const o = zt(t, m, n); + g[n] + ? (g[n].p(o, e), dt(g[n], 1)) + : ((g[n] = ie(o)), g[n].c(), dt(g[n], 1), g[n].m(l, null)); + } + for (ut(), n = m.length; n < g.length; n += 1) v(n); + ft(); + } + if (135169 & e[0]) { + let n; + for ($ = Object.entries(t[0].modules), n = 0; n < $.length; n += 1) { + const o = Jt(t, $, n); + y[n] + ? (y[n].p(o, e), dt(y[n], 1)) + : ((y[n] = ce(o)), y[n].c(), dt(y[n], 1), y[n].m(a, null)); + } + for (ut(), n = $.length; n < y.length; n += 1) x(n); + ft(); + } + t[6] + ? j + ? (j.p(t, e), 64 & e[0] && dt(j, 1)) + : ((j = ae(t)), j.c(), dt(j, 1), j.m(p.parentNode, p)) + : j && + (ut(), + pt(j, 1, 1, () => { + j = null; + }), + ft()); + }, + i(t) { + if (!h) { + dt(n.$$.fragment, t); + for (let t = 0; t < m.length; t += 1) dt(g[t]); + for (let t = 0; t < $.length; t += 1) dt(y[t]); + dt(j), (h = !0); + } + }, + o(t) { + pt(n.$$.fragment, t), (g = g.filter(Boolean)); + for (let t = 0; t < g.length; t += 1) pt(g[t]); + y = y.filter(Boolean); + for (let t = 0; t < y.length; t += 1) pt(y[t]); + pt(j), (h = !1); + }, + d(t) { + t && w(e), + _t(n), + t && w(r), + k(g, t), + k(y, t), + t && w(d), + j && j.d(t), + t && w(p); + }, + }; + } + const $e = (t) => !t.active, + be = (t) => t.active; + function ye(t, e, n) { + let o = + "https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4dev/myProfile.json?1", + r = {}, + l = 0, + i = {}, + s = [], + c = [], + a = [], + u = [], + f = !1, + d = "dev", + p = {}; + async function h(t) { + try { + let e = await fetch(t, { mode: "cors", method: "GET" }); + e.ok ? n(0, (r = await e.json())) : console.log("error", e.statusText); + } catch (t) { + console.log(t); + } + } + (r = { + iotmSettings: {}, + projectProp: { platformio: {} }, + modules: { + "Виртуальные элементы": [], + Сенсоры: [], + executive_devices: [], + Экраны: [], + }, + }), + h(o), + (async function (t) { + try { + let e = await fetch(t, { mode: "cors", method: "GET" }); + e.ok ? (p = await e.json()) : console.log("error", e.statusText); + } catch (t) { + console.log(t); + } + })("https://iotmanager.org/firmwarebuilder/moduleSize.json?1"); + const [m, g] = Ct({ + fallback(t, e) { + const n = getComputedStyle(t), + o = "none" === n.transform ? "" : n.transform; + return { + duration: 600, + easing: Ot, + css: (t) => + `\n\t\t\t\t\ttransform: ${o} scale(${t});\n\t\t\t\t\topacity: ${t}\n\t\t\t\t`, + }; + }, + }); + function v(t) { + console.log(t.path), + (o = + "https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4stable/" + + JSON.parse(JSON.stringify(t.path).replace(/\\\\/g, "/")) + + "/modinfo.json"), + (i = []), + n(2, (s = [])), + n(3, (c = [])), + n(3, (c.name = "Данные загружаются..."), c), + n(4, (a = [])), + n(5, (u = [])), + (async function (t) { + i = []; + try { + let e = await fetch(t, { mode: "cors", method: "GET" }); + e.ok + ? ((i = await e.json()), + n(2, (s = i)), + n(3, (c = i.configItem[0])), + n(4, (a = i.about)), + n(5, (u = a.propInfo))) + : console.log("error", e.statusText); + } catch (t) { + console.log(t); + } + })(o), + n(6, (f = !0)); + } + let $ = !0; + function b(t) { + n(8, ($ = t)); + } + function y() { + (o = + "dev" == d + ? "https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4dev/myProfile.json?1" + : "https://raw.githubusercontent.com/IoTManagerProject/IoTManager/ver4stable/myProfile.json?1"), + h(o); + } + function x() { + n(1, (l = 0)), + n(0, (r.projectProp.platformio.default_envs = _.text), r), + k(); + } + let _ = [], + w = [ + { id: 1, text: "esp8266_4mb" }, + { id: 2, text: "esp32_4mb" }, + { id: 3, text: "esp8266_1mb" }, + { id: 4, text: "esp8266_1mb_ota" }, + ]; + function k() { + n(1, (l = 0)); + for (const [t, e] of Object.entries(r.modules)) + for (const [e, o] of Object.entries( + r.modules[t].filter((t) => t.active) + )) { + let t = o.path.slice(o.path.lastIndexOf("/") + 1, o.path.length); + p[t] && n(1, (l += Math.round(p[t][_.text]))); + } + "esp8266_4mb" == _.text && n(1, (l = Math.round(l / 6110))), + "esp32_4mb" == _.text && n(1, (l = Math.round(l / 3243))), + "esp8266_1mb" == _.text && n(1, (l = Math.round(l / 3237))), + "esp8266_1mb_ota" == _.text && n(1, (l = Math.round(l / 2601))); + } + function S() { + var t = document.createElement("a"); + (t.href = window.URL.createObjectURL( + new Blob([JSON.stringify(r)], { type: "text/plain" }) + )), + (t.download = "myProfile.json"), + console.log(JSON.stringify(r)); + } + return [ + r, + l, + s, + c, + a, + u, + f, + d, + $, + _, + m, + g, + v, + b, + y, + x, + w, + k, + S, + function (t) { + (l = t), n(1, l); + }, + function (t) { + (l = t), n(1, l); + }, + function (t) { + (l = t), n(1, l); + }, + function (t) { + (l = t), n(1, l); + }, + function () { + (d = E(this)), n(7, d); + }, + () => y(), + function () { + (_ = E(this)), n(9, _), n(16, w); + }, + () => x(), + () => b(!0), + () => b(!1), + function () { + (r.iotmSettings.routerssid = this.value), n(0, r); + }, + function () { + (r.iotmSettings.routerpass = this.value), n(0, r); + }, + function () { + (r.iotmSettings.mqttServer = this.value), n(0, r); + }, + function () { + (r.iotmSettings.mqttPort = this.value), n(0, r); + }, + function () { + (r.iotmSettings.mqttPrefix = this.value), n(0, r); + }, + function () { + (r.iotmSettings.mqttUser = this.value), n(0, r); + }, + function () { + (r.iotmSettings.mqttPass = this.value), n(0, r); + }, + function () { + (r = this.value), n(0, r); + }, + () => S(), + function (t, e) { + (t[e].active = this.checked), n(0, r); + }, + (t) => v(t), + function (t, e) { + (t[e].active = this.checked), n(0, r); + }, + (t) => v(t), + () => n(6, (f = !1)), + ]; + } + return new (class extends St { + constructor(t) { + super(), kt(this, t, ye, ve, s, {}, null, [-1, -1, -1]); + } + })({ target: document.body }); +})(); //# sourceMappingURL=bundle.js.map