diff --git a/compilerProfile.json b/compilerProfile.json index b6246f40..bac5d993 100644 --- a/compilerProfile.json +++ b/compilerProfile.json @@ -128,6 +128,10 @@ }, "modules": { "virtual_elments": [ + { + "path": "src/modules/virtual/Benchmark", + "active": false + }, { "path": "src/modules/virtual/Cron", "active": true @@ -152,6 +156,10 @@ "path": "src/modules/virtual/owmWeather", "active": true }, + { + "path": "src/modules/virtual/Ping", + "active": true + }, { "path": "src/modules/virtual/Timer", "active": true @@ -198,6 +206,10 @@ "path": "src/modules/sensors/BH_1750", "active": false }, + { + "path": "src/modules/sensors/BL0937", + "active": true + }, { "path": "src/modules/sensors/Ble", "active": false @@ -234,6 +246,10 @@ "path": "src/modules/sensors/Emon", "active": false }, + { + "path": "src/modules/sensors/EnergyMon485", + "active": false + }, { "path": "src/modules/sensors/ExampleModule", "active": false @@ -352,6 +368,10 @@ "path": "src/modules/exec/AnalogBtn", "active": true }, + { + "path": "src/modules/exec/BrokerMQTT", + "active": false + }, { "path": "src/modules/exec/ButtonIn", "active": true @@ -420,6 +440,14 @@ "path": "src/modules/exec/SDcard", "active": false }, + { + "path": "src/modules/exec/SIM800", + "active": false + }, + { + "path": "src/modules/exec/SmartBoiler", + "active": false + }, { "path": "src/modules/exec/SysExt", "active": false diff --git a/data_svelte/flashProfile.json b/data_svelte/flashProfile.json index b17a4af6..337a4283 100644 --- a/data_svelte/flashProfile.json +++ b/data_svelte/flashProfile.json @@ -6,6 +6,10 @@ }, "modules": { "virtual_elments": [ + { + "path": "src/modules/virtual/Benchmark", + "active": false + }, { "path": "src/modules/virtual/Cron", "active": true @@ -30,6 +34,10 @@ "path": "src/modules/virtual/owmWeather", "active": true }, + { + "path": "src/modules/virtual/Ping", + "active": true + }, { "path": "src/modules/virtual/Timer", "active": true @@ -76,6 +84,10 @@ "path": "src/modules/sensors/BH_1750", "active": false }, + { + "path": "src/modules/sensors/BL0937", + "active": true + }, { "path": "src/modules/sensors/Ble", "active": false @@ -112,6 +124,10 @@ "path": "src/modules/sensors/Emon", "active": false }, + { + "path": "src/modules/sensors/EnergyMon485", + "active": false + }, { "path": "src/modules/sensors/ExampleModule", "active": false @@ -230,6 +246,10 @@ "path": "src/modules/exec/AnalogBtn", "active": true }, + { + "path": "src/modules/exec/BrokerMQTT", + "active": false + }, { "path": "src/modules/exec/ButtonIn", "active": true @@ -298,6 +318,14 @@ "path": "src/modules/exec/SDcard", "active": false }, + { + "path": "src/modules/exec/SIM800", + "active": false + }, + { + "path": "src/modules/exec/SmartBoiler", + "active": false + }, { "path": "src/modules/exec/SysExt", "active": false diff --git a/data_svelte/items.json b/data_svelte/items.json index e432f9b8..8c476da9 100644 --- a/data_svelte/items.json +++ b/data_svelte/items.json @@ -101,7 +101,25 @@ }, { "global": 0, - "name": "7. Таймер", + "name": "7. Ping", + "type": "Reading", + "subtype": "Ping", + "id": "ping", + "needSave": 0, + "widget": "nil", + "page": "", + "descr": "", + "ip": "8.8.8.8", + "timeout": 5, + "interval": 1, + "data_size": 0, + "count": 0, + "tos": 0, + "num": 7 + }, + { + "global": 0, + "name": "8. Таймер", "type": "Writing", "subtype": "Timer", "id": "timer", @@ -113,11 +131,11 @@ "ticker": 1, "repeat": 1, "needSave": 0, - "num": 7 + "num": 8 }, { "global": 0, - "name": "8. Окно ввода числа (переменная)", + "name": "9. Окно ввода числа (переменная)", "type": "Reading", "subtype": "Variable", "id": "value", @@ -131,11 +149,11 @@ "plus": 0, "multiply": 1, "round": 0, - "num": 8 + "num": 9 }, { "global": 0, - "name": "9. Окно ввода времени", + "name": "10. Окно ввода времени", "type": "Reading", "subtype": "Variable", "id": "time", @@ -145,11 +163,11 @@ "descr": "Введите время", "int": "0", "val": "02:00", - "num": 9 + "num": 10 }, { "global": 0, - "name": "10. Окно ввода даты", + "name": "11. Окно ввода даты", "type": "Reading", "subtype": "Variable", "id": "time", @@ -159,11 +177,11 @@ "descr": "Введите дату", "int": "0", "val": "24.05.2022", - "num": 10 + "num": 11 }, { "global": 0, - "name": "11. Окно ввода текста", + "name": "12. Окно ввода текста", "type": "Reading", "subtype": "Variable", "id": "txt", @@ -173,11 +191,11 @@ "descr": "Введите текст", "int": "0", "val": "текст", - "num": 11 + "num": 12 }, { "global": 0, - "name": "12. Вывод значения", + "name": "13. Вывод значения", "type": "Reading", "subtype": "Variable", "id": "vout", @@ -191,11 +209,11 @@ "plus": 0, "multiply": 1, "round": 0, - "num": 12 + "num": 13 }, { "global": 0, - "name": "13. Виртуальная кнопка", + "name": "14. Виртуальная кнопка", "type": "Reading", "subtype": "VButton", "id": "vbtn", @@ -205,13 +223,13 @@ "descr": "Кнопка", "int": "0", "val": "0", - "num": 13 + "num": 14 }, { "header": "sensors" }, { - "name": "14. A02 Дальность", + "name": "15. A02 Дальность", "type": "Reading", "subtype": "A02Distance", "id": "dist", @@ -224,10 +242,10 @@ "rx": 16, "line": 2, "speed": 9600, - "num": 14 + "num": 15 }, { - "name": "15. Acs712 Ток", + "name": "16. Acs712 Ток", "type": "Reading", "subtype": "Acs712", "id": "amp", @@ -242,11 +260,11 @@ "sens": 100, "adczero": 512, "btn-setZero": "nil", - "num": 15 + "num": 16 }, { "global": 0, - "name": "16. AHTXX Температура", + "name": "17. AHTXX Температура", "type": "Reading", "subtype": "AhtXXt", "id": "Temp20", @@ -257,11 +275,11 @@ "addr": "0x38", "shtType": 1, "round": 1, - "num": 16 + "num": 17 }, { "global": 0, - "name": "17. AHTXX Влажность", + "name": "18. AHTXX Влажность", "type": "Reading", "subtype": "AhtXXh", "id": "Hum20", @@ -272,11 +290,11 @@ "addr": "0x38", "shtType": 1, "round": 1, - "num": 17 + "num": 18 }, { "global": 0, - "name": "18. Аналоговый сенсор", + "name": "19. Аналоговый сенсор", "type": "Reading", "subtype": "AnalogAdc", "id": "t", @@ -290,11 +308,111 @@ "pin": 0, "int": 15, "avgSteps": 1, - "num": 18 + "num": 19 }, { "global": 0, - "name": "19. BME280 Температура", + "name": "20. BL0937 Напряжение", + "type": "Reading", + "subtype": "BL0937v", + "id": "bl_v", + "widget": "anydataVlt", + "page": "BL0937", + "descr": "Напряжение", + "int": 15, + "round": 1, + "num": 20 + }, + { + "global": 0, + "name": "21. BL0937 Сила тока", + "type": "Reading", + "subtype": "BL0937a", + "id": "bl_a", + "widget": "anydataAmp", + "page": "BL0937", + "descr": "Сила тока", + "int": 15, + "round": 1, + "num": 21 + }, + { + "global": 0, + "name": "22. BL0937 Мощность", + "type": "Reading", + "subtype": "BL0937w", + "id": "bl_w", + "widget": "anydataWt", + "page": "BL0937", + "descr": "Мощность", + "int": 15, + "round": 1, + "num": 22 + }, + { + "global": 0, + "name": "23. BL0937 Реакт.Мощность", + "type": "Reading", + "subtype": "BL0937reactw", + "id": "bl_reactw", + "widget": "anydataWt", + "page": "BL0937", + "descr": "Реакт.Мощность", + "int": 15, + "round": 1, + "num": 23 + }, + { + "global": 0, + "name": "24. BL0937 Активн.Мощность", + "type": "Reading", + "subtype": "BL0937actw", + "id": "bl_actw", + "widget": "anydataWt", + "page": "BL0937", + "descr": "Актив.Мощность", + "int": 15, + "round": 1, + "num": 24 + }, + { + "global": 0, + "name": "25. BL0937 Энергия", + "type": "Reading", + "subtype": "BL0937wh", + "id": "bl_wh", + "widget": "anydataWth", + "page": "BL0937", + "descr": "Энергия", + "int": 15, + "round": 1, + "num": 25 + }, + { + "global": 0, + "name": "26. BL0937 настройка", + "type": "Reading", + "subtype": "BL0937cmd", + "id": "bl_set", + "widget": "nil", + "page": "", + "descr": "", + "btn-reset": "", + "int": "5", + "R_current": 0.001, + "R_upstream": 1000000, + "R_downstream": 1000, + "CF_GPIO": 4, + "CF1_GPIO": 5, + "SEL_GPIO": 12, + "kfV": 0, + "kfA": 0, + "kfW": 0, + "num": 26 + }, + { + "global": 0, + "name": "27. BME280 Температура", "type": "Reading", "subtype": "Bme280t", "id": "Tmp3", @@ -304,11 +422,11 @@ "int": 15, "addr": "0x77", "round": 1, - "num": 19 + "num": 27 }, { "global": 0, - "name": "20. BME280 Давление", + "name": "28. BME280 Давление", "type": "Reading", "subtype": "Bme280p", "id": "Press3", @@ -318,11 +436,11 @@ "int": 15, "addr": "0x77", "round": 1, - "num": 20 + "num": 28 }, { "global": 0, - "name": "21. BME280 Влажность", + "name": "29. BME280 Влажность", "type": "Reading", "subtype": "Bme280h", "id": "Hum3", @@ -332,11 +450,11 @@ "int": 15, "addr": "0x77", "round": 1, - "num": 21 + "num": 29 }, { "global": 0, - "name": "22. BME280 Tочка росы", + "name": "30. BME280 Tочка росы", "type": "Reading", "subtype": "Bme280dp", "id": "Dew3", @@ -346,11 +464,11 @@ "int": 15, "addr": "0x77", "round": 1, - "num": 22 + "num": 30 }, { "global": 0, - "name": "23. BMP280 Температура", + "name": "31. BMP280 Температура", "type": "Reading", "subtype": "Bmp280t", "id": "tmp3", @@ -360,11 +478,11 @@ "int": 15, "addr": "0x77", "round": 1, - "num": 23 + "num": 31 }, { "global": 0, - "name": "24. BMP280 Давление", + "name": "32. BMP280 Давление", "type": "Reading", "subtype": "Bmp280p", "id": "Press3", @@ -374,11 +492,11 @@ "int": 15, "addr": "0x77", "round": 1, - "num": 24 + "num": 32 }, { "global": 0, - "name": "25. DHT11 Температура", + "name": "33. DHT11 Температура", "type": "Reading", "subtype": "Dht1122t", "id": "tmp3", @@ -388,11 +506,11 @@ "int": 15, "pin": 0, "senstype": "dht11", - "num": 25 + "num": 33 }, { "global": 0, - "name": "26. DHT11 Влажность", + "name": "34. DHT11 Влажность", "type": "Reading", "subtype": "Dht1122h", "id": "Hum3", @@ -402,11 +520,11 @@ "int": 15, "pin": 0, "senstype": "dht11", - "num": 26 + "num": 34 }, { "global": 0, - "name": "27. DS18B20 Температура", + "name": "35. DS18B20 Температура", "type": "Reading", "subtype": "Ds18b20", "id": "dstmp", @@ -418,11 +536,11 @@ "index": 0, "addr": "", "round": 1, - "num": 27 + "num": 35 }, { "global": 0, - "name": "28. Аналоговый счетчик импульсов", + "name": "36. Аналоговый счетчик импульсов", "type": "Writing", "subtype": "Impulse", "id": "impulse", @@ -435,11 +553,11 @@ "pinMode": "INPUT", "debounceDelay": 3, "multiply": 1, - "num": 28 + "num": 36 }, { "global": 0, - "name": "29. MQ газовые анализаторы", + "name": "37. MQ газовые анализаторы", "type": "Reading", "subtype": "MQgas", "id": "MQ", @@ -476,11 +594,11 @@ "pin-Esp32": 34, "operating voltage": 3.3, "int": 15, - "num": 29 + "num": 37 }, { "global": 0, - "name": "30. PZEM 004t Напряжение", + "name": "38. PZEM 004t Напряжение", "type": "Reading", "subtype": "Pzem004v", "id": "v", @@ -490,11 +608,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 30 + "num": 38 }, { "global": 0, - "name": "31. PZEM 004t Сила тока", + "name": "39. PZEM 004t Сила тока", "type": "Reading", "subtype": "Pzem004a", "id": "a", @@ -504,11 +622,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 31 + "num": 39 }, { "global": 0, - "name": "32. PZEM 004t Мощность", + "name": "40. PZEM 004t Мощность", "type": "Reading", "subtype": "Pzem004w", "id": "w", @@ -518,11 +636,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 32 + "num": 40 }, { "global": 0, - "name": "33. PZEM 004t Энергия", + "name": "41. PZEM 004t Энергия", "type": "Reading", "subtype": "Pzem004wh", "id": "wh", @@ -532,11 +650,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 33 + "num": 41 }, { "global": 0, - "name": "34. PZEM 004t Частота", + "name": "42. PZEM 004t Частота", "type": "Reading", "subtype": "Pzem004hz", "id": "hz", @@ -546,11 +664,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 34 + "num": 42 }, { "global": 0, - "name": "35. PZEM 004t Косинус", + "name": "43. PZEM 004t Косинус", "type": "Reading", "subtype": "Pzem004pf", "id": "pf", @@ -560,11 +678,11 @@ "int": 15, "addr": "0xF8", "round": 1, - "num": 35 + "num": 43 }, { "global": 0, - "name": "36. PZEM настройка", + "name": "44. PZEM настройка", "type": "Reading", "subtype": "Pzem004cmd", "id": "set", @@ -575,11 +693,11 @@ "addr": "0xF8", "btn-changeaddr": "0x01", "btn-reset": "", - "num": 36 + "num": 44 }, { "global": 0, - "name": "37. PZEM uart", + "name": "45. PZEM uart", "type": "Reading", "subtype": "Pzem004uart", "id": "upzem", @@ -590,11 +708,11 @@ "rx": 16, "line": 2, "speed": 9600, - "num": 37 + "num": 45 }, { "global": 0, - "name": "38. Часы реального времени", + "name": "46. Часы реального времени", "type": "Reading", "subtype": "RTC", "id": "rtc", @@ -610,12 +728,12 @@ "int": 5, "btn-setUTime": "0", "btn-setSysTime": "nil", - "num": 38 + "num": 46 }, { "global": 0, - "name": "39. (S8) Cенсор качества воздуха", - "num": 39, + "name": "47. (S8) Cенсор качества воздуха", + "num": 47, "type": "Reading", "subtype": "S8co", "id": "s8co", @@ -629,7 +747,7 @@ }, { "global": 0, - "name": "40. Sht20 Температура", + "name": "48. Sht20 Температура", "type": "Reading", "subtype": "Sht20t", "id": "tmp2", @@ -638,11 +756,11 @@ "descr": "Температура", "int": 15, "round": 1, - "num": 40 + "num": 48 }, { "global": 0, - "name": "41. Sht20 Влажность", + "name": "49. Sht20 Влажность", "type": "Reading", "subtype": "Sht20h", "id": "Hum2", @@ -651,11 +769,11 @@ "descr": "Влажность", "int": 15, "round": 1, - "num": 41 + "num": 49 }, { "global": 0, - "name": "42. Sht30 Температура", + "name": "50. Sht30 Температура", "type": "Reading", "subtype": "Sht30t", "id": "tmp30", @@ -664,11 +782,11 @@ "descr": "SHT30 Температура", "int": 15, "round": 1, - "num": 42 + "num": 50 }, { "global": 0, - "name": "43. Sht30 Влажность", + "name": "51. Sht30 Влажность", "type": "Reading", "subtype": "Sht30h", "id": "Hum30", @@ -677,12 +795,12 @@ "descr": "SHT30 Влажность", "int": 15, "round": 1, - "num": 43 + "num": 51 }, { "global": 0, - "name": "44. HC-SR04 Ультразвуковой дальномер", - "num": 44, + "name": "52. HC-SR04 Ультразвуковой дальномер", + "num": 52, "type": "Reading", "subtype": "Sonar", "id": "sonar", @@ -694,7 +812,7 @@ "int": 5 }, { - "name": "45. UART", + "name": "53. UART", "type": "Reading", "subtype": "UART", "page": "", @@ -706,14 +824,14 @@ "line": 2, "speed": 9600, "eventFormat": 0, - "num": 45 + "num": 53 }, { "header": "executive_devices" }, { "global": 0, - "name": "46. Аналоговая кнопка", + "name": "54. Аналоговая кнопка", "type": "Reading", "subtype": "AnalogBtn", "id": "abtn", @@ -723,11 +841,11 @@ "pin": 34, "aValue": -1, "delta": 50, - "num": 46 + "num": 54 }, { "global": 0, - "name": "47. Кнопка подключенная к пину", + "name": "55. Кнопка подключенная к пину", "type": "Writing", "subtype": "ButtonIn", "id": "btn", @@ -742,11 +860,11 @@ "debounceDelay": 50, "fixState": 0, "inv": 0, - "num": 47 + "num": 55 }, { "global": 0, - "name": "48. Управление пином", + "name": "56. Управление пином", "type": "Writing", "subtype": "ButtonOut", "needSave": 0, @@ -757,11 +875,11 @@ "int": 0, "inv": 0, "pin": 2, - "num": 48 + "num": 56 }, { "global": 0, - "name": "49. Пассивный звуковой извещатель", + "name": "57. Пассивный звуковой извещатель", "type": "Writing", "subtype": "Buzzer", "id": "buzzer", @@ -780,11 +898,11 @@ "cycle": 0, "indication": 1, "val": 0, - "num": 49 + "num": 57 }, { "global": 0, - "name": "50. Энкодер", + "name": "58. Энкодер", "type": "Writing", "subtype": "Encoder", "id": "enc", @@ -797,11 +915,11 @@ "step": 1, "stepOnPress": 5, "pins": "4,5,2", - "num": 50 + "num": 58 }, { "global": 0, - "name": "51. Сервопривод", + "name": "59. Сервопривод", "type": "Writing", "subtype": "IoTServo", "id": "servo", @@ -814,11 +932,11 @@ "minAngle": 0, "maxAngle": 180, "trackingID": "", - "num": 51 + "num": 59 }, { "global": 0, - "name": "52. Расширитель портов Mcp23017", + "name": "60. Расширитель портов Mcp23017", "type": "Reading", "subtype": "Mcp23017", "id": "Mcp", @@ -828,11 +946,11 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 52 + "num": 60 }, { "global": 0, - "name": "53. MP3 плеер", + "name": "61. MP3 плеер", "type": "Reading", "subtype": "Mp3", "id": "mp3", @@ -842,11 +960,11 @@ "int": 1, "pins": "14,12", "volume": 20, - "num": 53 + "num": 61 }, { "global": 0, - "name": "54. Сенсорная кнопка", + "name": "62. Сенсорная кнопка", "type": "Writing", "subtype": "Multitouch", "id": "impulse", @@ -860,11 +978,11 @@ "pinMode": "INPUT", "debounceDelay": 50, "PWMDelay": 500, - "num": 54 + "num": 62 }, { "global": 0, - "name": "55. Расширитель портов Pcf8574", + "name": "63. Расширитель портов Pcf8574", "type": "Reading", "subtype": "Pcf8574", "id": "Pcf", @@ -874,11 +992,11 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 55 + "num": 63 }, { "global": 0, - "name": "56. PWM ESP8266", + "name": "64. PWM ESP8266", "type": "Writing", "subtype": "Pwm8266", "id": "pwm", @@ -890,11 +1008,11 @@ "freq": 5000, "val": 0, "apin": -1, - "num": 56 + "num": 64 }, { "global": 0, - "name": "57. Телеграм-Лайт", + "name": "65. Телеграм-Лайт", "type": "Writing", "subtype": "TelegramLT", "id": "tg", @@ -903,13 +1021,13 @@ "descr": "", "token": "", "chatID": "", - "num": 57 + "num": 65 }, { "header": "screens" }, { - "name": "58. LCD Dwin экран", + "name": "66. LCD Dwin экран", "type": "Reading", "subtype": "DwinI", "id": "dwin", @@ -921,11 +1039,11 @@ "line": 2, "speed": 9600, "btn-uploadUI": "", - "num": 58 + "num": 66 }, { "global": 0, - "name": "59. LCD экран 2004", + "name": "67. LCD экран 2004", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -938,10 +1056,10 @@ "id2show": "", "prefix": "", "postfix": "", - "num": 59 + "num": 67 }, { - "name": "60. LCD экран 1602", + "name": "68. LCD экран 1602", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -954,11 +1072,11 @@ "id2show": "", "prefix": "", "postfix": "", - "num": 60 + "num": 68 }, { "global": 0, - "name": "61. OLED экран 64 8266", + "name": "69. OLED экран 64 8266", "type": "Reading", "subtype": "Oled64", "id": "Oled", @@ -971,6 +1089,6 @@ "id2show": "", "prefix": "", "postfix": "", - "num": 61 + "num": 69 } ] \ No newline at end of file diff --git a/include/Const.h b/include/Const.h index e170a3d2..599de170 100644 --- a/include/Const.h +++ b/include/Const.h @@ -2,7 +2,7 @@ #include "BuildTime.h" // Версия прошивки -#define FIRMWARE_VERSION 456 +#define FIRMWARE_VERSION 457 #ifdef esp8266_1mb_ota #define FIRMWARE_NAME "esp8266_1mb_ota" diff --git a/lib/ESPNexUpload/src/ESPNexUpload.cpp b/lib/ESPNexUpload/src/ESPNexUpload.cpp index 0856aa5f..1eaf5403 100644 --- a/lib/ESPNexUpload/src/ESPNexUpload.cpp +++ b/lib/ESPNexUpload/src/ESPNexUpload.cpp @@ -26,33 +26,6 @@ #define DEBUG_SERIAL_ENABLE #include "ESPNexUpload.h" -#if defined ESP8266 - -#include - -#ifndef NEXT_RX -#define NEXT_RX 14 // Nextion RX pin | Default 14 / D5 -#define NEXT_TX 12 // Nextion TX pin | Default 12 / D6 -#endif -#ifndef nexSerial -//SoftwareSerial softSerial(NEXT_RX, NEXT_TX); -#define nexSerial softSerial -#define nexSerialBegin(a, b, c) nexSerial.begin(a) -#endif - -#elif defined ESP32 - -#ifndef NEXT_RX -#define NEXT_RX 17 // Nextion RX pin | Default 16 -#define NEXT_TX 16 // Nextion TX pin | Default 17 -#endif -#ifndef nexSerial -#define nexSerial Serial2 -#define nexSerialBegin(a, rx, tx) nexSerial.begin(a, SERIAL_8N1, rx, tx) -#endif - -#endif - #ifdef DEBUG_SERIAL_ENABLE #define dbSerialPrint(a) Serial.print(a) #define dbSerialPrintHex(a) Serial.print(a, HEX) @@ -77,23 +50,40 @@ } while (0) #endif -ESPNexUpload::ESPNexUpload(uint32_t upload_baudrate, uint8_t rx, uint8_t tx) +ESPNexUpload::ESPNexUpload(uint32_t upload_baudrate, int line, int rx, int tx) { _upload_baudrate = upload_baudrate; - if (rx == 0 || tx == 0) - { - _rx = NEXT_RX; - _tx = NEXT_TX; - }else{ - _rx = rx; - _tx = tx; - } + _rx = rx; + _tx = tx; + _line = line; + #if defined ESP8266 - SoftwareSerial softSerial(_rx, _tx); + nexSerial = new SoftwareSerial(_rx, _tx); +#else + if (line >= 0) { + nexSerial = new HardwareSerial(line); + // ((HardwareSerial*)nexSerial)->begin(_upload_baudrate, SERIAL_8N1, _rx, _tx); + } else { + nexSerial = new SoftwareSerial(_rx, _tx); + // ((SoftwareSerial*)nexSerial)->begin(_upload_baudrate); + } #endif } +void ESPNexUpload::nexSerialBegin(uint32_t _speed, int _line, int _rx, int _tx) +{ +#if defined ESP8266 + nexSerial->begin(_speed); +#else + if (_line >= 0) { + ((HardwareSerial*)nexSerial)->begin(_speed, SERIAL_8N1, _rx, _tx); + } else { + ((SoftwareSerial*)nexSerial)->begin(_speed); + } +#endif +} + bool ESPNexUpload::connect() { #if defined ESP8266 @@ -172,7 +162,7 @@ bool ESPNexUpload::_searchBaudrate(uint32_t baudrate) dbSerialPrint(F("init nextion serial interface on baudrate: ")); dbSerialPrintln(baudrate); - nexSerialBegin(baudrate, _rx, _tx); + nexSerialBegin(baudrate, _line, _rx, _tx); _printInfoLine(F("ESP baudrate established, try to connect to display")); const char _nextion_FF_FF[3] = {0xFF, 0xFF, 0x00}; @@ -231,20 +221,20 @@ void ESPNexUpload::sendCommand(const char *cmd, bool tail, bool null_head) if (null_head) { - nexSerial.write(0x00); + ((HardwareSerial*)nexSerial)->write(0x00); } - while (nexSerial.available()) + while (nexSerial->available()) { - nexSerial.read(); + nexSerial->read(); } - nexSerial.print(cmd); + nexSerial->print(cmd); if (tail) { - nexSerial.write(0xFF); - nexSerial.write(0xFF); - nexSerial.write(0xFF); + nexSerial->write(0xFF); + nexSerial->write(0xFF); + nexSerial->write(0xFF); } _printSerialData(true, cmd); } @@ -270,10 +260,10 @@ uint16_t ESPNexUpload::recvRetString(String &response, uint32_t timeout, bool re while (millis() - start <= timeout) { - while (nexSerial.available()) + while (nexSerial->available()) { - c = nexSerial.read(); + c = nexSerial->read(); if (c == 0) { continue; @@ -344,9 +334,9 @@ bool ESPNexUpload::_setPrepareForFirmwareUpdate(uint32_t upload_baudrate) // because switching to another baudrate (nexSerialBegin command) has an higher prio. // The ESP will first jump to the new 'upload_baudrate' and than process the serial 'transmit buffer' // The flush command forced the ESP to wait until the 'transmit buffer' is empty - nexSerial.flush(); + nexSerial->flush(); - nexSerialBegin(upload_baudrate, _rx, _tx); + nexSerialBegin(upload_baudrate, _line, _rx, _tx); _printInfoLine(F("changing upload baudrate...")); _printInfoLine(String(upload_baudrate)); @@ -421,7 +411,7 @@ bool ESPNexUpload::upload(const uint8_t *file_buf, size_t buf_size) c = file_buf[i]; // write byte to nextion over serial - nexSerial.write(c); + nexSerial->write(c); // update sent packets counter _sent_packets++; @@ -438,7 +428,7 @@ bool ESPNexUpload::upload(Stream &myFile) #endif // create buffer for read - uint8_t buff[2048] = {0}; + uint8_t buff[4096] = {0}; // read all data from server while (_undownloadByte > 0 || _undownloadByte == -1) @@ -492,7 +482,7 @@ void ESPNexUpload::end() this->softReset(); // end Serial connection - nexSerial.end(); + ((HardwareSerial*)nexSerial)->end(); // reset sent packets counter _sent_packets = 0; diff --git a/lib/ESPNexUpload/src/ESPNexUpload.h b/lib/ESPNexUpload/src/ESPNexUpload.h index b9cfe746..3a22ac15 100644 --- a/lib/ESPNexUpload/src/ESPNexUpload.h +++ b/lib/ESPNexUpload/src/ESPNexUpload.h @@ -56,6 +56,13 @@ #include #include +#ifdef ESP8266 +#include +#else +#include +#include +#endif + /** * @addtogroup CoreAPI * @{ @@ -79,7 +86,7 @@ public: /* methods */ * * @param uint32_t upload_baudrate - set upload baudrate. */ - ESPNexUpload(uint32_t upload_baudrate, uint8_t rx=0, uint8_t tx=0); + ESPNexUpload(uint32_t upload_baudrate, int line, int rx, int tx); /** * destructor. @@ -256,6 +263,8 @@ private: /* methods */ */ uint32_t calculateTransmissionTimeMs(String message); + void nexSerialBegin(uint32_t upload_baudrate, int line, int rx, int tx); + private: /* data */ uint32_t _baudrate; /* nextion serail baudrate */ uint32_t _undownloadByte; /* undownload byte of tft file */ @@ -263,8 +272,14 @@ private: /* data */ uint16_t _sent_packets = 0; /* upload baudrate */ uint8_t _rx; uint8_t _tx; - + uint8_t _line; THandlerFunction _updateProgressCallback; + +#ifdef ESP8266 + SoftwareSerial* nexSerial; +#else + Stream* nexSerial; +#endif }; /** * @} diff --git a/myProfile.json b/myProfile.json index 9044ff30..bac5d993 100644 --- a/myProfile.json +++ b/myProfile.json @@ -206,6 +206,10 @@ "path": "src/modules/sensors/BH_1750", "active": false }, + { + "path": "src/modules/sensors/BL0937", + "active": true + }, { "path": "src/modules/sensors/Ble", "active": false @@ -244,7 +248,7 @@ }, { "path": "src/modules/sensors/EnergyMon485", - "active": true + "active": false }, { "path": "src/modules/sensors/ExampleModule", diff --git a/platformio.ini b/platformio.ini index c28f99fe..82d089cd 100644 --- a/platformio.ini +++ b/platformio.ini @@ -538,6 +538,7 @@ build_src_filter = [env:esp8266_4mb_fromitems] lib_deps = + https://github.com/dancol90/ESP8266Ping https://github.com/enjoyneering/AHTxx.git adafruit/Adafruit BME280 Library adafruit/Adafruit BMP280 Library @@ -562,6 +563,7 @@ build_src_filter = + + + + + + + + @@ -569,6 +571,7 @@ build_src_filter = + + + + + + + + @@ -614,24 +617,21 @@ lib_deps = adafruit/Adafruit BusIO @ ^1.13.2 dfrobot/DFRobotDFPlayerMini @ ^1.0.5 adafruit/Adafruit BusIO @ ^1.13.2 - plerup/EspSoftwareSerial https://github.com/robotclass/RobotClass_LiquidCrystal_I2C marcoschwartz/LiquidCrystal_I2C@^1.1.4 https://github.com/stblassitude/Adafruit_SSD1306_Wemos_OLED https://github.com/adafruit/Adafruit-GFX-Library https://github.com/maxint-rd/TM16xx - https://github.com/adafruit/Adafruit-GFX-Library + adafruit/Adafruit GFX Library @ ^1.11.5 adafruit/Adafruit BusIO @ ^1.13.2 build_src_filter = + + + - + + + + + - + + + + @@ -640,15 +640,13 @@ build_src_filter = + + + - + - + + + + + + + + + - + + + + @@ -657,10 +655,10 @@ build_src_filter = + + + + + + + + - + + + + diff --git a/src/modules/API.cpp b/src/modules/API.cpp index a029331c..5dd27955 100644 --- a/src/modules/API.cpp +++ b/src/modules/API.cpp @@ -5,6 +5,7 @@ void* getAPI_Loging(String subtype, String params); void* getAPI_LogingDaily(String subtype, String params); void* getAPI_IoTMath(String subtype, String params); void* getAPI_owmWeather(String subtype, String params); +void* getAPI_Ping(String subtype, String params); void* getAPI_Timer(String subtype, String params); void* getAPI_Variable(String subtype, String params); void* getAPI_VButton(String subtype, String params); @@ -12,6 +13,7 @@ void* getAPI_A02Distance(String subtype, String params); void* getAPI_Acs712(String subtype, String params); void* getAPI_AhtXX(String subtype, String params); void* getAPI_AnalogAdc(String subtype, String params); +void* getAPI_BL0937(String subtype, String params); void* getAPI_Bme280(String subtype, String params); void* getAPI_Bmp280(String subtype, String params); void* getAPI_Dht1122(String subtype, String params); @@ -48,6 +50,7 @@ if ((tmpAPI = getAPI_Loging(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_LogingDaily(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_IoTMath(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_owmWeather(subtype, params)) != nullptr) return tmpAPI; +if ((tmpAPI = getAPI_Ping(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Timer(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Variable(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_VButton(subtype, params)) != nullptr) return tmpAPI; @@ -55,6 +58,7 @@ if ((tmpAPI = getAPI_A02Distance(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Acs712(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_AhtXX(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_AnalogAdc(subtype, params)) != nullptr) return tmpAPI; +if ((tmpAPI = getAPI_BL0937(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Bme280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Bmp280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Dht1122(subtype, params)) != nullptr) return tmpAPI; diff --git a/src/modules/display/Nextion/Nextion.cpp b/src/modules/display/Nextion/Nextion.cpp index 4fe3af4f..a1a25c33 100644 --- a/src/modules/display/Nextion/Nextion.cpp +++ b/src/modules/display/Nextion/Nextion.cpp @@ -211,9 +211,10 @@ public: if (!updated) { SerialPrint("I", F("NextionUpdate"), "connecting to " + (String)_host); - HTTPClient http; + HTTPClient http; #if defined ESP8266 - if (!http.begin(_host, 80, _url)) + WiFiClient client; + if (!http.begin(client, _host, 80, _url)) SerialPrint("I", F("NextionUpdate"), "connection failed "); #elif defined ESP32 if (!http.begin(String("http://") + _host + _url)) diff --git a/src/modules/display/Nextion/modinfo.json b/src/modules/display/Nextion/modinfo.json index d74991c1..7168875d 100644 --- a/src/modules/display/Nextion/modinfo.json +++ b/src/modules/display/Nextion/modinfo.json @@ -87,12 +87,7 @@ }, "defActive": false, "usedLibs": { - "esp32_4mb": [], - "esp32_4mb3f": [], - "esp8266_4mb": [], - "esp8266_1mb": [], - "esp8266_1mb_ota": [], - "esp8285_1mb": [], - "esp8285_1mb_ota": [] + "esp32*": [], + "esp82*": [] } } \ No newline at end of file diff --git a/src/modules/display/NextionUpload/NextionUpload.cpp b/src/modules/display/NextionUpload/NextionUpload.cpp index f2db9474..b8745217 100644 --- a/src/modules/display/NextionUpload/NextionUpload.cpp +++ b/src/modules/display/NextionUpload/NextionUpload.cpp @@ -42,7 +42,8 @@ public: HTTPClient http; #if defined ESP8266 - if (!http.begin(_host, 80, _url)) + WiFiClient client; + if (!http.begin(client, _host, 80, _url)) { // Serial.println("connection failed"); SerialPrint("I", F("NextionUpdate"), "connection failed "); @@ -118,7 +119,13 @@ public: int contentLength = http.getSize(); SerialPrint("I", F("NextionUpdate"), "File received. Update Nextion... "); bool result; - ESPNexUpload nextion(115200, _NEXT_RX, _NEXT_TX); + #ifdef ESP8266 + ESPNexUpload nextion(115200, -1, _NEXT_RX, _NEXT_TX); + #elif defined(esp32c3m_4mb) || defined(esp32s2_4mb) + ESPNexUpload nextion(115200, 1, _NEXT_RX, _NEXT_TX); + #else + ESPNexUpload nextion(115200, 2, _NEXT_RX, _NEXT_TX); + #endif nextion.setUpdateProgressCallback([]() { SerialPrint("I", F("NextionUpdate"), "... "); }); diff --git a/src/modules/display/TM16XX/TM16XX.cpp b/src/modules/display/TM16XX/TM16XX.cpp index 10199d38..8bbafc2d 100644 --- a/src/modules/display/TM16XX/TM16XX.cpp +++ b/src/modules/display/TM16XX/TM16XX.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include TM16xxButtons* buttons = nullptr; // указатель на объект управления кнопками для TM1638 иначе nullptr diff --git a/src/modules/exec/Telegram_v2/Telegram_v2.cpp b/src/modules/exec/Telegram_v2/Telegram_v2.cpp index 30092bb6..b872730a 100644 --- a/src/modules/exec/Telegram_v2/Telegram_v2.cpp +++ b/src/modules/exec/Telegram_v2/Telegram_v2.cpp @@ -8,7 +8,9 @@ // #include // #include // #include "esp_camera.h" - +#ifdef ESP8266 +#define FB_DYNAMIC +#endif #include #include @@ -93,6 +95,7 @@ public: if (fl_rollback) { _myBot->tickManual(); // Чтобы отметить сообщение прочитанным +#ifdef ESP32 if (Update.rollBack()) { SerialPrint("I", F("Update"), F("Откат OTA успешно выполнен")); @@ -104,6 +107,7 @@ public: SerialPrint("E", F("Update"), F("Откат OTA не выполнен!")); _myBot->sendMessage("Откат OTA не выполнен!", _chatID); } +#endif } // была попытка OTA обновления. Обновляемся после ответа серверу! if (_OTAstate >= 0) @@ -369,10 +373,16 @@ public: // ------------------------------------------------------------------------- if (msg.text.indexOf("/rollback") != -1 && msg.chatID == _chatID) { +#ifdef ESP32 _myBot->inlineMenu("Вы уверены, что хотите откатить прошивку? " + jsonReadStr(settingsFlashJson, F("name")) + " \n OTA_roll", F("Rollback \t Cancel")); +#elif ESP8266 + SerialPrint("E", F("Update"), F("Откат OTA не поддерживается на esp8266!")); + _myBot->sendMessage("Откат OTA не поддерживается на esp8266!", _chatID); +#endif } else if (msg.text.indexOf("OTA_roll") != -1) { +#ifdef ESP32 // удаляем последнее сообщение от бота _myBot->deleteMessage(_myBot->lastBotMsg()); if (msg.data.indexOf("Rollback") != -1) @@ -387,6 +397,7 @@ public: _myBot->sendMessage("Откат OTA не возможен!", _chatID); } } +#endif } // -------------- Обработка файлов *.bin для прошивки по OTA -------------- // ------------------------------------------------------------------------- diff --git a/src/modules/sensors/Hx710/modinfo.json b/src/modules/sensors/Hx710/modinfo.json index 47df1d0d..d22559bb 100644 --- a/src/modules/sensors/Hx710/modinfo.json +++ b/src/modules/sensors/Hx710/modinfo.json @@ -14,7 +14,8 @@ "multiply": 1, "round": 1, "data": 14, - "clock": 15 + "clock": 15, + "gain": 128 } ], "about": { @@ -33,6 +34,7 @@ "propInfo": { "clock": "GPIO шины данных", "data": "GPIO шины данных", + "gain": "Коэффициент усиления, 64 или 128 - выбран канал A, 32 - выбран канал B", "int": "Количество секунд между опросами датчика." }, "retInfo": "Содержит mmHg значение датчика, необходима калибровка", diff --git a/src/modules/sensors/Impulse/Impulse.cpp b/src/modules/sensors/Impulse/Impulse.cpp index e84a1123..b32a2693 100644 --- a/src/modules/sensors/Impulse/Impulse.cpp +++ b/src/modules/sensors/Impulse/Impulse.cpp @@ -12,7 +12,9 @@ private: bool _lastButtonState = LOW; unsigned long _lastDebounceTime = 0; int _debounceDelay = 50; + int _timeORcount = 0; int _count = 0; + int CNT = 0; unsigned long timing; public: @@ -22,6 +24,8 @@ public: jsonRead(parameters, F("pin"), _pin); jsonRead(parameters, F("pinMode"), _pinMode); jsonRead(parameters, F("debounceDelay"), _debounceDelay); + jsonRead(parameters, F("count"), _count); + jsonRead(parameters, F("timeORcount"), _timeORcount); jsonRead(parameters, "int", _int); _round = 0; @@ -53,18 +57,31 @@ public: if (_reading != _buttonState) { _buttonState = _reading; - _count++; + CNT++; } - if (_count == 1) + if (CNT == 1) { timing = millis(); } - if (millis() - timing > _int * 1000 && _count > 1) - { - timing = millis(); - value.valD = _count; - regEvent(value.valD, F("Impulse")); - _count = 0; + if (!_timeORcount) + { // работаем по времени + if (millis() - timing > _int * 1000 && CNT > 1) + { + timing = millis(); + value.valD = CNT; + regEvent(value.valD, F("Impulse")); + CNT = 0; + } + } + else + { // работаем по количеству импульсов + if (_count && CNT == _count) + { + value.valD = 1; + regEvent(value.valD, F("Impulse")); + CNT = 0; + } + } } diff --git a/src/modules/sensors/Impulse/modinfo.json b/src/modules/sensors/Impulse/modinfo.json index 81095235..bc4d8587 100644 --- a/src/modules/sensors/Impulse/modinfo.json +++ b/src/modules/sensors/Impulse/modinfo.json @@ -15,7 +15,9 @@ "pin": 16, "pinMode": "INPUT", "debounceDelay": 3, - "multiply": 1 + "multiply": 1, + "count": 0, + "timeORcount":0 } ], "about": { @@ -24,7 +26,7 @@ "authorGit": "https://github.com/avaksru", "specialThanks": "", "moduleName": "Impulse", - "moduleVersion": "2.0", + "moduleVersion": "3.0", "usedRam": { "esp32_4mb": 15, "esp8266_4mb": 15 @@ -35,7 +37,9 @@ "int": "Период сбора импульсов в секундах", "pin": "Укажите GPIO номер пина для чтения импульсов", "pinMode": "Может быть INPUT_PULLUP INPUT_PULLDOWN INPUT", - "debounceDelay": "Время обработки дребезга (миллисекунд)" + "debounceDelay": "Время обработки дребезга (миллисекунд)", + "count": "количество импульсов для выработки события c 1(единицей в данных). По событию можно прибавлять к другой переменной, так же домножить на multiply. Например 32имп = 0.1кВт => count=32, multiply=0.1", + "timeORcount": "0 - выдает количество импульсов за int секунд; 1 - выдает событие с 1 когда количество импульсов наберется равным count" } }, "defActive": true, diff --git a/tools/patch32_ws.py b/tools/patch32_ws.py index c30cfa43..4800c237 100644 --- a/tools/patch32_ws.py +++ b/tools/patch32_ws.py @@ -10,7 +10,7 @@ from sys import platform if platform == "linux" or platform == "linux2": # linux - mainPyPath = '~/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.cpp' + mainPyPath = '/home/rise/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.cpp' else: # windows mainPyPath = os.environ['USERPROFILE'] + '\\.platformio\\packages\\framework-arduinoespressif32\\libraries\\WiFi\\src\\WiFiClient.cpp'