Merge pull request #248 from IoTManagerProject/ver4dev

Ver4dev
This commit is contained in:
IoT Manager
2022-11-26 21:01:34 +01:00
committed by GitHub
23 changed files with 251 additions and 300 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -4,12 +4,12 @@
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" /> <meta name="viewport" content="width=device-width,initial-scale=1" />
<title>IoT Manager 4.4.2</title> <title>IoT Manager 4.4.3</title>
<link rel="icon" type="image/png" href="/favicon.ico" /> <link rel="icon" type="image/png" href="/favicon.ico" />
<link rel="stylesheet" href="/build/bundle.css?442" /> <link rel="stylesheet" href="/build/bundle.css?443" />
<script defer src="/build/bundle.js?442"></script> <script defer src="/build/bundle.js?443"></script>
</head> </head>
<body></body> <body></body>

View File

@@ -141,7 +141,25 @@
}, },
{ {
"global": 0, "global": 0,
"name": "10. Виртуальная кнопка", "name": "10. Вывод значения",
"type": "Reading",
"subtype": "Variable",
"id": "vout",
"needSave": 0,
"widget": "anydataDef",
"page": "Вывод",
"descr": "Значение",
"int": "0",
"val": "0.0",
"map": "1024,1024,1,100",
"plus": 0,
"multiply": 1,
"round": 0,
"num": 10
},
{
"global": 0,
"name": "11. Виртуальная кнопка",
"type": "Reading", "type": "Reading",
"subtype": "VButton", "subtype": "VButton",
"id": "vbtn", "id": "vbtn",
@@ -151,13 +169,13 @@
"descr": "Кнопка", "descr": "Кнопка",
"int": "0", "int": "0",
"val": "0", "val": "0",
"num": 10 "num": 11
}, },
{ {
"header": "Сенсоры" "header": "Сенсоры"
}, },
{ {
"name": "11. Acs712 Ток", "name": "12. Acs712 Ток",
"type": "Reading", "type": "Reading",
"subtype": "Acs712", "subtype": "Acs712",
"id": "amp", "id": "amp",
@@ -167,11 +185,11 @@
"round": 3, "round": 3,
"pin": 39, "pin": 39,
"int": 5, "int": 5,
"num": 11 "num": 12
}, },
{ {
"global": 0, "global": 0,
"name": "12. AHTXX Температура", "name": "13. AHTXX Температура",
"type": "Reading", "type": "Reading",
"subtype": "AhtXXt", "subtype": "AhtXXt",
"id": "Temp20", "id": "Temp20",
@@ -182,11 +200,11 @@
"addr": "0x38", "addr": "0x38",
"shtType": 1, "shtType": 1,
"round": 1, "round": 1,
"num": 12 "num": 13
}, },
{ {
"global": 0, "global": 0,
"name": "13. AHTXX Влажность", "name": "14. AHTXX Влажность",
"type": "Reading", "type": "Reading",
"subtype": "AhtXXh", "subtype": "AhtXXh",
"id": "Hum20", "id": "Hum20",
@@ -197,11 +215,11 @@
"addr": "0x38", "addr": "0x38",
"shtType": 1, "shtType": 1,
"round": 1, "round": 1,
"num": 13 "num": 14
}, },
{ {
"global": 0, "global": 0,
"name": "14. Аналоговый сенсор", "name": "15. Аналоговый сенсор",
"type": "Reading", "type": "Reading",
"subtype": "AnalogAdc", "subtype": "AnalogAdc",
"id": "t", "id": "t",
@@ -215,11 +233,11 @@
"pin": 0, "pin": 0,
"int": 15, "int": 15,
"avgSteps": 1, "avgSteps": 1,
"num": 14 "num": 15
}, },
{ {
"global": 0, "global": 0,
"name": "15. BME280 Температура", "name": "16. BME280 Температура",
"type": "Reading", "type": "Reading",
"subtype": "Bme280t", "subtype": "Bme280t",
"id": "tmp3", "id": "tmp3",
@@ -229,11 +247,11 @@
"int": 15, "int": 15,
"addr": "0x77", "addr": "0x77",
"round": 1, "round": 1,
"num": 15 "num": 16
}, },
{ {
"global": 0, "global": 0,
"name": "16. BME280 Давление", "name": "17. BME280 Давление",
"type": "Reading", "type": "Reading",
"subtype": "Bme280p", "subtype": "Bme280p",
"id": "Press3", "id": "Press3",
@@ -243,11 +261,11 @@
"int": 15, "int": 15,
"addr": "0x77", "addr": "0x77",
"round": 1, "round": 1,
"num": 16 "num": 17
}, },
{ {
"global": 0, "global": 0,
"name": "17. BME280 Влажность", "name": "18. BME280 Влажность",
"type": "Reading", "type": "Reading",
"subtype": "Bme280h", "subtype": "Bme280h",
"id": "Hum3", "id": "Hum3",
@@ -257,11 +275,11 @@
"int": 15, "int": 15,
"addr": "0x77", "addr": "0x77",
"round": 1, "round": 1,
"num": 17 "num": 18
}, },
{ {
"global": 0, "global": 0,
"name": "18. BMP280 Температура", "name": "19. BMP280 Температура",
"type": "Reading", "type": "Reading",
"subtype": "Bmp280t", "subtype": "Bmp280t",
"id": "tmp3", "id": "tmp3",
@@ -271,11 +289,11 @@
"int": 15, "int": 15,
"addr": "0x77", "addr": "0x77",
"round": 1, "round": 1,
"num": 18 "num": 19
}, },
{ {
"global": 0, "global": 0,
"name": "19. BMP280 Давление", "name": "20. BMP280 Давление",
"type": "Reading", "type": "Reading",
"subtype": "Bmp280p", "subtype": "Bmp280p",
"id": "Press3", "id": "Press3",
@@ -285,11 +303,11 @@
"int": 15, "int": 15,
"addr": "0x77", "addr": "0x77",
"round": 1, "round": 1,
"num": 19 "num": 20
}, },
{ {
"global": 0, "global": 0,
"name": "20. DHT11 Температура", "name": "21. DHT11 Температура",
"type": "Reading", "type": "Reading",
"subtype": "Dht1122t", "subtype": "Dht1122t",
"id": "tmp3", "id": "tmp3",
@@ -299,11 +317,11 @@
"int": 15, "int": 15,
"pin": 0, "pin": 0,
"senstype": "dht11", "senstype": "dht11",
"num": 20 "num": 21
}, },
{ {
"global": 0, "global": 0,
"name": "21. DHT11 Влажность", "name": "22. DHT11 Влажность",
"type": "Reading", "type": "Reading",
"subtype": "Dht1122h", "subtype": "Dht1122h",
"id": "Hum3", "id": "Hum3",
@@ -313,11 +331,11 @@
"int": 15, "int": 15,
"pin": 0, "pin": 0,
"senstype": "dht11", "senstype": "dht11",
"num": 21 "num": 22
}, },
{ {
"global": 0, "global": 0,
"name": "22. DS18B20 Температура", "name": "23. DS18B20 Температура",
"type": "Reading", "type": "Reading",
"subtype": "Ds18b20", "subtype": "Ds18b20",
"id": "dstmp", "id": "dstmp",
@@ -329,80 +347,11 @@
"index": 0, "index": 0,
"addr": "", "addr": "",
"round": 1, "round": 1,
"num": 22
},
{
"global": 0,
"name": "23. GY21 Температура",
"type": "Reading",
"subtype": "GY21t",
"id": "tmp4",
"widget": "anydataTmp",
"page": "Сенсоры",
"descr": "Температура",
"round": 1,
"int": 15,
"num": 23 "num": 23
}, },
{ {
"global": 0, "global": 0,
"name": "24. GY21 Влажность", "name": "24. PZEM 004t Напряжение",
"type": "Reading",
"subtype": "GY21h",
"id": "Hum4",
"widget": "anydataHum",
"page": "Сенсоры",
"descr": "Влажность",
"round": 1,
"int": 15,
"num": 24
},
{
"global": 0,
"name": "25. HDC1080 Температура",
"type": "Reading",
"subtype": "Hdc1080t",
"id": "Temp1080",
"widget": "anydataTmp",
"page": "Сенсоры",
"descr": "1080 Температура",
"int": 15,
"addr": "0x40",
"round": 1,
"num": 25
},
{
"global": 0,
"name": "26. HDC1080 Влажность",
"type": "Reading",
"subtype": "Hdc1080h",
"id": "Hum1080",
"widget": "anydataHum",
"page": "Сенсоры",
"descr": "1080 Влажность",
"int": 15,
"addr": "0x40",
"round": 1,
"num": 26
},
{
"global": 0,
"name": "27. MAX6675 Температура",
"type": "Reading",
"subtype": "Max6675t",
"id": "maxtmp",
"widget": "anydataTmp",
"page": "Сенсоры",
"descr": "MAX Температура",
"int": 15,
"DO": 12,
"CS": 13,
"CLK": 14,
"num": 27
},
{
"global": 0,
"name": "28. PZEM 004t Напряжение",
"type": "Reading", "type": "Reading",
"subtype": "Pzem004v", "subtype": "Pzem004v",
"id": "v", "id": "v",
@@ -412,11 +361,11 @@
"int": 15, "int": 15,
"addr": "0xF8", "addr": "0xF8",
"round": 1, "round": 1,
"num": 28 "num": 24
}, },
{ {
"global": 0, "global": 0,
"name": "29. PZEM 004t Сила тока", "name": "25. PZEM 004t Сила тока",
"type": "Reading", "type": "Reading",
"subtype": "Pzem004a", "subtype": "Pzem004a",
"id": "a", "id": "a",
@@ -426,11 +375,11 @@
"int": 15, "int": 15,
"addr": "0xF8", "addr": "0xF8",
"round": 1, "round": 1,
"num": 29 "num": 25
}, },
{ {
"global": 0, "global": 0,
"name": "30. PZEM 004t Мощность", "name": "26. PZEM 004t Мощность",
"type": "Reading", "type": "Reading",
"subtype": "Pzem004w", "subtype": "Pzem004w",
"id": "w", "id": "w",
@@ -440,11 +389,11 @@
"int": 15, "int": 15,
"addr": "0xF8", "addr": "0xF8",
"round": 1, "round": 1,
"num": 30 "num": 26
}, },
{ {
"global": 0, "global": 0,
"name": "31. PZEM 004t Энергия", "name": "27. PZEM 004t Энергия",
"type": "Reading", "type": "Reading",
"subtype": "Pzem004wh", "subtype": "Pzem004wh",
"id": "wh", "id": "wh",
@@ -454,11 +403,11 @@
"int": 15, "int": 15,
"addr": "0xF8", "addr": "0xF8",
"round": 1, "round": 1,
"num": 31 "num": 27
}, },
{ {
"global": 0, "global": 0,
"name": "32. PZEM 004t Частота", "name": "28. PZEM 004t Частота",
"type": "Reading", "type": "Reading",
"subtype": "Pzem004hz", "subtype": "Pzem004hz",
"id": "hz", "id": "hz",
@@ -468,11 +417,11 @@
"int": 15, "int": 15,
"addr": "0xF8", "addr": "0xF8",
"round": 1, "round": 1,
"num": 32 "num": 28
}, },
{ {
"global": 0, "global": 0,
"name": "33. PZEM 004t Косинус", "name": "29. PZEM 004t Косинус",
"type": "Reading", "type": "Reading",
"subtype": "Pzem004pf", "subtype": "Pzem004pf",
"id": "pf", "id": "pf",
@@ -482,22 +431,11 @@
"int": 15, "int": 15,
"addr": "0xF8", "addr": "0xF8",
"round": 1, "round": 1,
"num": 33 "num": 29
}, },
{ {
"global": 0, "global": 0,
"name": "34. Сканер кнопок 433 MHz", "name": "30. Sht20 Температура",
"num": 34,
"type": "Reading",
"subtype": "RCswitch",
"id": "rsw",
"int": 500,
"pinRx": 12,
"pinTx": 12
},
{
"global": 0,
"name": "35. Sht20 Температура",
"type": "Reading", "type": "Reading",
"subtype": "Sht20t", "subtype": "Sht20t",
"id": "tmp2", "id": "tmp2",
@@ -506,11 +444,11 @@
"descr": "Температура", "descr": "Температура",
"int": 15, "int": 15,
"round": 1, "round": 1,
"num": 35 "num": 30
}, },
{ {
"global": 0, "global": 0,
"name": "36. Sht20 Влажность", "name": "31. Sht20 Влажность",
"type": "Reading", "type": "Reading",
"subtype": "Sht20h", "subtype": "Sht20h",
"id": "Hum2", "id": "Hum2",
@@ -519,11 +457,11 @@
"descr": "Влажность", "descr": "Влажность",
"int": 15, "int": 15,
"round": 1, "round": 1,
"num": 36 "num": 31
}, },
{ {
"global": 0, "global": 0,
"name": "37. Sht30 Температура", "name": "32. Sht30 Температура",
"type": "Reading", "type": "Reading",
"subtype": "Sht30t", "subtype": "Sht30t",
"id": "tmp30", "id": "tmp30",
@@ -532,11 +470,11 @@
"descr": "SHT30 Температура", "descr": "SHT30 Температура",
"int": 15, "int": 15,
"round": 1, "round": 1,
"num": 37 "num": 32
}, },
{ {
"global": 0, "global": 0,
"name": "38. Sht30 Влажность", "name": "33. Sht30 Влажность",
"type": "Reading", "type": "Reading",
"subtype": "Sht30h", "subtype": "Sht30h",
"id": "Hum30", "id": "Hum30",
@@ -545,12 +483,12 @@
"descr": "SHT30 Влажность", "descr": "SHT30 Влажность",
"int": 15, "int": 15,
"round": 1, "round": 1,
"num": 38 "num": 33
}, },
{ {
"global": 0, "global": 0,
"name": "39. HC-SR04 Ультразвуковой дальномер", "name": "34. HC-SR04 Ультразвуковой дальномер",
"num": 39, "num": 34,
"type": "Reading", "type": "Reading",
"subtype": "Sonar", "subtype": "Sonar",
"id": "sonar", "id": "sonar",
@@ -562,7 +500,7 @@
"int": 5 "int": 5
}, },
{ {
"name": "40. UART", "name": "35. UART",
"type": "Reading", "type": "Reading",
"subtype": "UART", "subtype": "UART",
"page": "", "page": "",
@@ -574,14 +512,14 @@
"line": 2, "line": 2,
"speed": 9600, "speed": 9600,
"eventFormat": 0, "eventFormat": 0,
"num": 40 "num": 35
}, },
{ {
"header": "Исполнительные устройства" "header": "Исполнительные устройства"
}, },
{ {
"global": 0, "global": 0,
"name": "41. Кнопка подключенная к пину", "name": "36. Кнопка подключенная к пину",
"type": "Writing", "type": "Writing",
"subtype": "ButtonIn", "subtype": "ButtonIn",
"id": "btn", "id": "btn",
@@ -595,11 +533,11 @@
"pinMode": "INPUT", "pinMode": "INPUT",
"debounceDelay": 50, "debounceDelay": 50,
"fixState": 0, "fixState": 0,
"num": 41 "num": 36
}, },
{ {
"global": 0, "global": 0,
"name": "42. Управление пином", "name": "37. Управление пином",
"type": "Writing", "type": "Writing",
"subtype": "ButtonOut", "subtype": "ButtonOut",
"needSave": 0, "needSave": 0,
@@ -610,11 +548,11 @@
"int": 0, "int": 0,
"inv": 0, "inv": 0,
"pin": 2, "pin": 2,
"num": 42 "num": 37
}, },
{ {
"global": 0, "global": 0,
"name": "43. Сервопривод", "name": "38. Сервопривод",
"type": "Writing", "type": "Writing",
"subtype": "IoTServo", "subtype": "IoTServo",
"id": "servo", "id": "servo",
@@ -625,11 +563,11 @@
"pin": 12, "pin": 12,
"apin": -1, "apin": -1,
"amap": "0, 4096, 0, 180", "amap": "0, 4096, 0, 180",
"num": 43 "num": 38
}, },
{ {
"global": 0, "global": 0,
"name": "44. Расширитель портов Mcp23017", "name": "39. Расширитель портов Mcp23017",
"type": "Reading", "type": "Reading",
"subtype": "Mcp23017", "subtype": "Mcp23017",
"id": "Mcp", "id": "Mcp",
@@ -639,11 +577,11 @@
"int": "0", "int": "0",
"addr": "0x20", "addr": "0x20",
"index": 1, "index": 1,
"num": 44 "num": 39
}, },
{ {
"global": 0, "global": 0,
"name": "45. MP3 плеер", "name": "40. MP3 плеер",
"type": "Reading", "type": "Reading",
"subtype": "Mp3", "subtype": "Mp3",
"id": "mp3", "id": "mp3",
@@ -653,11 +591,11 @@
"int": 1, "int": 1,
"pins": "14,12", "pins": "14,12",
"volume": 20, "volume": 20,
"num": 45 "num": 40
}, },
{ {
"global": 0, "global": 0,
"name": "46. Сенсорная кнопка", "name": "41. Сенсорная кнопка",
"type": "Writing", "type": "Writing",
"subtype": "Multitouch", "subtype": "Multitouch",
"id": "impulse", "id": "impulse",
@@ -671,11 +609,11 @@
"pinMode": "INPUT", "pinMode": "INPUT",
"debounceDelay": 50, "debounceDelay": 50,
"PWMDelay": 500, "PWMDelay": 500,
"num": 46 "num": 41
}, },
{ {
"global": 0, "global": 0,
"name": "47. Расширитель портов Pcf8574", "name": "42. Расширитель портов Pcf8574",
"type": "Reading", "type": "Reading",
"subtype": "Pcf8574", "subtype": "Pcf8574",
"id": "Pcf", "id": "Pcf",
@@ -685,11 +623,11 @@
"int": "0", "int": "0",
"addr": "0x20", "addr": "0x20",
"index": 1, "index": 1,
"num": 47 "num": 42
}, },
{ {
"global": 0, "global": 0,
"name": "48. PWM ESP8266", "name": "43. PWM ESP8266",
"type": "Writing", "type": "Writing",
"subtype": "Pwm8266", "subtype": "Pwm8266",
"id": "pwm", "id": "pwm",
@@ -701,11 +639,11 @@
"freq": 5000, "freq": 5000,
"val": 0, "val": 0,
"apin": -1, "apin": -1,
"num": 48 "num": 43
}, },
{ {
"global": 0, "global": 0,
"name": "49. Телеграм-Лайт", "name": "44. Телеграм-Лайт",
"type": "Writing", "type": "Writing",
"subtype": "TelegramLT", "subtype": "TelegramLT",
"id": "tg", "id": "tg",
@@ -714,14 +652,14 @@
"descr": "", "descr": "",
"token": "", "token": "",
"chatID": "", "chatID": "",
"num": 49 "num": 44
}, },
{ {
"header": "Экраны" "header": "Экраны"
}, },
{ {
"global": 0, "global": 0,
"name": "50. LCD экран 2004", "name": "45. LCD экран 2004",
"type": "Reading", "type": "Reading",
"subtype": "Lcd2004", "subtype": "Lcd2004",
"id": "Lcd", "id": "Lcd",
@@ -733,10 +671,10 @@
"size": "20,4", "size": "20,4",
"coord": "0,0", "coord": "0,0",
"id2show": "id датчика", "id2show": "id датчика",
"num": 50 "num": 45
}, },
{ {
"name": "51. LCD экран 1602", "name": "46. LCD экран 1602",
"type": "Reading", "type": "Reading",
"subtype": "Lcd2004", "subtype": "Lcd2004",
"id": "Lcd", "id": "Lcd",
@@ -748,26 +686,6 @@
"size": "16,2", "size": "16,2",
"coord": "0,0", "coord": "0,0",
"id2show": "id датчика", "id2show": "id датчика",
"num": 51 "num": 46
},
{
"global": 0,
"name": "52. Strip ws2812b",
"type": "Reading",
"subtype": "Ws2812b",
"id": "strip",
"widget": "range",
"page": "Кнопки",
"descr": "Лента",
"int": 15,
"needSave": 0,
"pin": "4",
"numLeds": "8",
"brightness": "100",
"mode": "1",
"min": "15",
"max": "30",
"idshow": "t",
"num": 52
} }
] ]

1
data_svelte/layout.json Normal file
View File

@@ -0,0 +1 @@
[]

View File

@@ -8,7 +8,7 @@
"ntp": "pool.ntp.org", "ntp": "pool.ntp.org",
"weblogin": "admin", "weblogin": "admin",
"webpass": "admin", "webpass": "admin",
"mqttServer": "m2.wqtt.ru", "mqttServer": "",
"mqttPort": 8021, "mqttPort": 8021,
"mqttPrefix": "/risenew", "mqttPrefix": "/risenew",
"mqttUser": "rise", "mqttUser": "rise",

View File

@@ -0,0 +1 @@
[]

View File

@@ -1,7 +1,7 @@
#pragma once #pragma once
//Версия прошивки //Версия прошивки
#define FIRMWARE_VERSION 432 #define FIRMWARE_VERSION 433
#ifdef esp8266_1mb_ota #ifdef esp8266_1mb_ota
#define FIRMWARE_NAME "esp8266_1mb_ota" #define FIRMWARE_NAME "esp8266_1mb_ota"
@@ -20,7 +20,7 @@
#endif #endif
//Размер буфера json //Размер буфера json
#define JSON_BUFFER_SIZE 2048 #define JSON_BUFFER_SIZE 2048 //держим 2 кб не меняем
#define WEB_SOCKETS_FRAME_SIZE 2048 #define WEB_SOCKETS_FRAME_SIZE 2048
//#define LOOP_DEBUG //#define LOOP_DEBUG
@@ -36,7 +36,6 @@
//#define REST_FILE_OPERATIONS //#define REST_FILE_OPERATIONS
#define MQTT_RECONNECT_INTERVAL 20000 #define MQTT_RECONNECT_INTERVAL 20000
#define CHANGE_BROKER_AFTER 5
#define TELEMETRY_UPDATE_INTERVAL_MIN 60 #define TELEMETRY_UPDATE_INTERVAL_MIN 60

View File

@@ -51,6 +51,7 @@ class IoTItem {
// хуки для системных событий // хуки для системных событий
virtual void onRegEvent(IoTItem* item); virtual void onRegEvent(IoTItem* item);
virtual void onMqttRecive(String& topic, String& msg);
//методы для графиков //методы для графиков
virtual void publishValue(); virtual void publishValue();

View File

@@ -51,7 +51,7 @@ class IoTScenario {
int GetTokPrecedence(); int GetTokPrecedence();
/// Error* - Это небольшие вспомогательные функции для обработки ошибок. /// Error* - Это небольшие вспомогательные функции для обработки ошибок.
ExprAST *Error(const char *Str); ExprAST *Error(const String& Str);
/// identifierexpr /// identifierexpr
/// ::= identifier /// ::= identifier

View File

@@ -9,7 +9,7 @@
"ntp": "pool.ntp.org", "ntp": "pool.ntp.org",
"weblogin": "admin", "weblogin": "admin",
"webpass": "admin", "webpass": "admin",
"mqttServer": "m2.wqtt.ru", "mqttServer": "",
"mqttPort": 8021, "mqttPort": 8021,
"mqttPrefix": "/risenew", "mqttPrefix": "/risenew",
"mqttUser": "rise", "mqttUser": "rise",
@@ -101,11 +101,19 @@
}, },
{ {
"path": "src/modules/sensors/GY21", "path": "src/modules/sensors/GY21",
"active": true "active": false
}, },
{ {
"path": "src/modules/sensors/Hdc1080", "path": "src/modules/sensors/Hdc1080",
"active": true "active": false
},
{
"path": "src/modules/sensors/Hx710",
"active": false
},
{
"path": "src/modules/sensors/Hx711",
"active": false
}, },
{ {
"path": "src/modules/sensors/Ina219", "path": "src/modules/sensors/Ina219",
@@ -117,7 +125,7 @@
}, },
{ {
"path": "src/modules/sensors/Max6675", "path": "src/modules/sensors/Max6675",
"active": true "active": false
}, },
{ {
"path": "src/modules/sensors/Mhz19", "path": "src/modules/sensors/Mhz19",
@@ -129,12 +137,16 @@
}, },
{ {
"path": "src/modules/sensors/RCswitch", "path": "src/modules/sensors/RCswitch",
"active": true "active": false
}, },
{ {
"path": "src/modules/sensors/Sds011", "path": "src/modules/sensors/Sds011",
"active": false "active": false
}, },
{
"path": "src/modules/sensors/Sgp30",
"active": false
},
{ {
"path": "src/modules/sensors/Sht20", "path": "src/modules/sensors/Sht20",
"active": true "active": true
@@ -217,7 +229,7 @@
}, },
{ {
"path": "src/modules/display/Ws2812b", "path": "src/modules/display/Ws2812b",
"active": true "active": false
} }
] ]
} }

View File

@@ -144,10 +144,6 @@ lib_deps =
adafruit/Adafruit BMP280 Library adafruit/Adafruit BMP280 Library
beegee-tokyo/DHT sensor library for ESPx beegee-tokyo/DHT sensor library for ESPx
milesburton/DallasTemperature@^3.9.1 milesburton/DallasTemperature@^3.9.1
https://github.com/JonasGMorsch/GY-21.git
ClosedCube HDC1080
adafruit/MAX6675 library
rc-switch @ ^2.6.4
robtillaart/SHT2x@^0.1.1 robtillaart/SHT2x@^0.1.1
WEMOS SHT3x@1.0.0 WEMOS SHT3x@1.0.0
plerup/espsoftwareserial plerup/espsoftwareserial
@@ -156,7 +152,6 @@ lib_deps =
dfrobot/DFRobotDFPlayerMini @ ^1.0.5 dfrobot/DFRobotDFPlayerMini @ ^1.0.5
adafruit/Adafruit BusIO @ ^1.13.2 adafruit/Adafruit BusIO @ ^1.13.2
marcoschwartz/LiquidCrystal_I2C@^1.1.4 marcoschwartz/LiquidCrystal_I2C@^1.1.4
adafruit/Adafruit NeoPixel@^1.10.6
build_src_filter = build_src_filter =
+<modules/virtual/Cron> +<modules/virtual/Cron>
+<modules/virtual/Loging> +<modules/virtual/Loging>
@@ -171,11 +166,7 @@ build_src_filter =
+<modules/sensors/Bmp280> +<modules/sensors/Bmp280>
+<modules/sensors/Dht1122> +<modules/sensors/Dht1122>
+<modules/sensors/Ds18b20> +<modules/sensors/Ds18b20>
+<modules/sensors/GY21>
+<modules/sensors/Hdc1080>
+<modules/sensors/Max6675>
+<modules/sensors/Pzem004t> +<modules/sensors/Pzem004t>
+<modules/sensors/RCswitch>
+<modules/sensors/Sht20> +<modules/sensors/Sht20>
+<modules/sensors/Sht30> +<modules/sensors/Sht30>
+<modules/sensors/Sonar> +<modules/sensors/Sonar>
@@ -190,7 +181,6 @@ build_src_filter =
+<modules/exec/Pwm8266> +<modules/exec/Pwm8266>
+<modules/exec/TelegramLT> +<modules/exec/TelegramLT>
+<modules/display/Lcd2004> +<modules/display/Lcd2004>
+<modules/display/Ws2812b>
[env:esp32_4mb_fromitems] [env:esp32_4mb_fromitems]
lib_deps = lib_deps =
@@ -199,10 +189,6 @@ lib_deps =
adafruit/Adafruit BMP280 Library adafruit/Adafruit BMP280 Library
beegee-tokyo/DHT sensor library for ESPx beegee-tokyo/DHT sensor library for ESPx
milesburton/DallasTemperature@^3.9.1 milesburton/DallasTemperature@^3.9.1
https://github.com/JonasGMorsch/GY-21.git
ClosedCube HDC1080
adafruit/MAX6675 library
rc-switch @ ^2.6.4
robtillaart/SHT2x@^0.1.1 robtillaart/SHT2x@^0.1.1
WEMOS SHT3x@1.0.0 WEMOS SHT3x@1.0.0
plerup/espsoftwareserial plerup/espsoftwareserial
@@ -212,8 +198,8 @@ lib_deps =
dfrobot/DFRobotDFPlayerMini @ ^1.0.5 dfrobot/DFRobotDFPlayerMini @ ^1.0.5
adafruit/Adafruit BusIO @ ^1.13.2 adafruit/Adafruit BusIO @ ^1.13.2
marcoschwartz/LiquidCrystal_I2C@^1.1.4 marcoschwartz/LiquidCrystal_I2C@^1.1.4
adafruit/Adafruit NeoPixel@^1.10.6
build_src_filter = build_src_filter =
+<modules/virtual/Cron>
+<modules/virtual/Loging> +<modules/virtual/Loging>
+<modules/virtual/LogingDaily> +<modules/virtual/LogingDaily>
+<modules/virtual/Timer> +<modules/virtual/Timer>
@@ -226,11 +212,7 @@ build_src_filter =
+<modules/sensors/Bmp280> +<modules/sensors/Bmp280>
+<modules/sensors/Dht1122> +<modules/sensors/Dht1122>
+<modules/sensors/Ds18b20> +<modules/sensors/Ds18b20>
+<modules/sensors/GY21>
+<modules/sensors/Hdc1080>
+<modules/sensors/Max6675>
+<modules/sensors/Pzem004t> +<modules/sensors/Pzem004t>
+<modules/sensors/RCswitch>
+<modules/sensors/Sht20> +<modules/sensors/Sht20>
+<modules/sensors/Sht30> +<modules/sensors/Sht30>
+<modules/sensors/Sonar> +<modules/sensors/Sonar>
@@ -240,9 +222,9 @@ build_src_filter =
+<modules/exec/IoTServo> +<modules/exec/IoTServo>
+<modules/exec/Mcp23017> +<modules/exec/Mcp23017>
+<modules/exec/Mp3> +<modules/exec/Mp3>
+<modules/exec/Multitouch>
+<modules/exec/Pcf8574> +<modules/exec/Pcf8574>
+<modules/exec/Pwm32> +<modules/exec/Pwm32>
+<modules/exec/TelegramLT> +<modules/exec/TelegramLT>
+<modules/display/Lcd2004> +<modules/display/Lcd2004>
+<modules/display/Ws2812b>

View File

@@ -125,9 +125,10 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
payloadStr += (char)payload[i]; payloadStr += (char)payload[i];
} }
// SerialPrint("i", "=>MQTT", payloadStr); // распространяем принятое сообщение через хуки
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
// SerialPrint("i", F("=>MQTT"), "Msg from iotmanager: " + topicStr); (*it)->onMqttRecive(topicStr, payloadStr);
}
if (payloadStr.startsWith("HELLO")) { if (payloadStr.startsWith("HELLO")) {
SerialPrint("i", F("MQTT"), F("Full update")); SerialPrint("i", F("MQTT"), F("Full update"));
@@ -188,7 +189,7 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
// loadScenario(); // loadScenario();
// SerialPrint("i", F("=>MQTT"), F("Scenario received")); // SerialPrint("i", F("=>MQTT"), F("Scenario received"));
// } // }
//} //}
} }
boolean publish(const String& topic, const String& data) { boolean publish(const String& topic, const String& data) {

View File

@@ -175,6 +175,8 @@ void IoTItem::checkIntFromNet() {
void IoTItem::onRegEvent(IoTItem* item) {} void IoTItem::onRegEvent(IoTItem* item) {}
void IoTItem::onMqttRecive(String& topic, String& msg) {}
void IoTItem::publishValue() {} void IoTItem::publishValue() {}
void IoTItem::clearValue() {} void IoTItem::clearValue() {}

View File

@@ -4,6 +4,16 @@
#include "utils/FileUtils.h" #include "utils/FileUtils.h"
#include "NTP.h" #include "NTP.h"
// вызываем все нужное пока зависаем в сценариях
void scenario_yield() {
yield();
#ifdef STANDARD_WEB_SERVER
HTTP.handleClient();
#endif
}
bool isIotScenException = false; // признак исключения и попытки прекратить выполнение сценария заранее bool isIotScenException = false; // признак исключения и попытки прекратить выполнение сценария заранее
// Лексический анализатор возвращает токены [0-255], если это неизвестны, // Лексический анализатор возвращает токены [0-255], если это неизвестны,
@@ -286,7 +296,7 @@ class CallExprAST : public ExprAST {
//if (!ItemIsLocal) Item = findIoTItem(Callee); // пробуем найти переменную если она не локальная (могла придти по сети в процессе) //if (!ItemIsLocal) Item = findIoTItem(Callee); // пробуем найти переменную если она не локальная (могла придти по сети в процессе)
if (!Item) return nullptr; // ret = zeroIotVal; // если все же не пришла, то либо опечатка, либо уже стерлась - выходим if (!Item) return nullptr; // ret = zeroIotVal; // если все же не пришла, то либо опечатка, либо уже стерлась - выходим
if (Cmd == "getIntFromNet") { if (Cmd == F("getIntFromNet")) {
ret.valD = Item->getIntFromNet(); ret.valD = Item->getIntFromNet();
ret.isDecimal = true; ret.isDecimal = true;
return &ret; return &ret;
@@ -457,43 +467,43 @@ class SysCallExprAST : public ExprAST {
public: public:
SysCallExprAST(const String &callee, std::vector<ExprAST *> &args) SysCallExprAST(const String &callee, std::vector<ExprAST *> &args)
: Callee(callee), Args(args) { : Callee(callee), Args(args) {
if (Callee == "reboot") if (Callee == F("reboot"))
operation = sysop_reboot; operation = sysop_reboot;
else if (Callee == "digitalRead") else if (Callee == F("digitalRead"))
operation = sysop_digitalRead; operation = sysop_digitalRead;
else if (Callee == "analogRead") else if (Callee == F("analogRead"))
operation = sysop_analogRead; operation = sysop_analogRead;
else if (Callee == "digitalWrite") else if (Callee == F("digitalWrite"))
operation = sysop_digitalWrite; operation = sysop_digitalWrite;
else if (Callee == "digitalInvert") else if (Callee == F("digitalInvert"))
operation = sysop_digitalInvert; operation = sysop_digitalInvert;
else if (Callee == "deepSleep") else if (Callee == F("deepSleep"))
operation = sysop_deepSleep; operation = sysop_deepSleep;
else if (Callee == "getTime") else if (Callee == F("getTime"))
operation = sysop_getTime; operation = sysop_getTime;
else if (Callee == "getHours") else if (Callee == F("getHours"))
operation = sysop_getHours; operation = sysop_getHours;
else if (Callee == "getMinutes") else if (Callee == F("getMinutes"))
operation = sysop_getMinutes; operation = sysop_getMinutes;
else if (Callee == "getSeconds") else if (Callee == F("getSeconds"))
operation = sysop_getSeconds; operation = sysop_getSeconds;
else if (Callee == "getMonth") else if (Callee == F("getMonth"))
operation = sysop_getMonth; operation = sysop_getMonth;
else if (Callee == "getDay") else if (Callee == F("getDay"))
operation = sysop_getDay; operation = sysop_getDay;
else if (Callee == "getRSSI") else if (Callee == F("getRSSI"))
operation = sysop_getRSSI; operation = sysop_getRSSI;
else if (Callee == "getIP") else if (Callee == F("getIP"))
operation = sysop_getIP; operation = sysop_getIP;
else if (Callee == "mqttPub") else if (Callee == F("mqttPub"))
operation = sysop_mqttPub; operation = sysop_mqttPub;
else if (Callee == "gethhmm") else if (Callee == F("gethhmm"))
operation = sysop_gethhmm; operation = sysop_gethhmm;
else if (Callee == "gethhmmss") else if (Callee == F("gethhmmss"))
operation = sysop_gethhmmss; operation = sysop_gethhmmss;
else if (Callee == "getTime") else if (Callee == F("getTime"))
operation = sysop_getTime; operation = sysop_getTime;
else if (Callee == "getUptime") else if (Callee == F("getUptime"))
operation = sysop_getUptime; operation = sysop_getUptime;
else else
operation = sysop_notfound; operation = sysop_notfound;
@@ -573,6 +583,9 @@ class IfExprAST : public ExprAST {
// else if (res_ret->isDecimal) Serial.printf("Call from IfExprAST: Cond result = %f, result = %f\n", cond_ret->valD, res_ret->valD); // else if (res_ret->isDecimal) Serial.printf("Call from IfExprAST: Cond result = %f, result = %f\n", cond_ret->valD, res_ret->valD);
// else Serial.printf("Call from IfExprAST: Cond result = %f, result = %s\n", cond_ret->valD, res_ret->valS.c_str()); // else Serial.printf("Call from IfExprAST: Cond result = %f, result = %s\n", cond_ret->valD, res_ret->valS.c_str());
//Serial.printf("\n"); //Serial.printf("\n");
scenario_yield();
return cond_ret; return cond_ret;
} }
@@ -777,8 +790,8 @@ int IoTScenario::GetTokPrecedence() {
} }
/// Error* - Это небольшие вспомогательные функции для обработки ошибок. /// Error* - Это небольшие вспомогательные функции для обработки ошибок.
ExprAST *IoTScenario::Error(const char *Str) { ExprAST *IoTScenario::Error(const String& Str) {
Serial.printf("Scenario error in line %d: %s\n", curLine, Str); Serial.printf("Scenario error in line %d: %s\n", curLine, Str.c_str());
isIotScenException = true; isIotScenException = true;
return nullptr; return nullptr;
} }
@@ -821,7 +834,7 @@ ExprAST *IoTScenario::ParseIdentifierExpr(String *IDNames, bool callFromConditio
if (CurTok == ')') break; if (CurTok == ')') break;
if (CurTok != ',') { if (CurTok != ',') {
return Error("Expected ')' or ',' in argument list"); return Error(F("Expected ')' or ',' in argument list"));
} }
getNextToken(); getNextToken();
} }
@@ -878,7 +891,7 @@ ExprAST *IoTScenario::ParseBracketsExpr(String *IDNames, bool callFromCondition)
// int ttok = getNextToken(); // int ttok = getNextToken();
if (CurTok == tok_eof) { if (CurTok == tok_eof) {
return Error("Expected '}'"); return Error(F("Expected '}'"));
} }
} }
@@ -933,7 +946,7 @@ ExprAST *IoTScenario::ParsePrimary(String *IDNames, bool callFromCondition) {
switch (CurTok) { switch (CurTok) {
default: default:
Serial.println(CurTok); Serial.println(CurTok);
return Error("unknown token when expecting an expression"); return Error(F("unknown token when expecting an expression"));
case tok_identifier: { case tok_identifier: {
if (callFromCondition && IDNames) { if (callFromCondition && IDNames) {
String tmpstr = *IDNames; String tmpstr = *IDNames;
@@ -1005,13 +1018,13 @@ void IoTScenario::loadScenario(String fileName) { // подготавливае
if (file) file.close(); if (file) file.close();
file = FileFS.open(fileName.c_str(), "r"); file = FileFS.open(fileName.c_str(), "r");
if (!file) { if (!file) {
Error("Open file scenario error"); Error(F("Open file scenario error"));
return; return;
} }
} else if (mode == 1) { } else if (mode == 1) {
file = FileFS.open(fileName.c_str(), "r"); file = FileFS.open(fileName.c_str(), "r");
if (!file) { if (!file) {
Error("Open file scenario error"); Error(F("Open file scenario error"));
return; return;
} }
strFromFile = file.readString(); strFromFile = file.readString();

View File

@@ -13,11 +13,7 @@ void* getAPI_Bme280(String subtype, String params);
void* getAPI_Bmp280(String subtype, String params); void* getAPI_Bmp280(String subtype, String params);
void* getAPI_Dht1122(String subtype, String params); void* getAPI_Dht1122(String subtype, String params);
void* getAPI_Ds18b20(String subtype, String params); void* getAPI_Ds18b20(String subtype, String params);
void* getAPI_GY21(String subtype, String params);
void* getAPI_Hdc1080(String subtype, String params);
void* getAPI_Max6675(String subtype, String params);
void* getAPI_Pzem004(String subtype, String params); void* getAPI_Pzem004(String subtype, String params);
void* getAPI_RCswitch(String subtype, String params);
void* getAPI_Sht20(String subtype, String params); void* getAPI_Sht20(String subtype, String params);
void* getAPI_Sht30(String subtype, String params); void* getAPI_Sht30(String subtype, String params);
void* getAPI_Sonar(String subtype, String params); void* getAPI_Sonar(String subtype, String params);
@@ -32,7 +28,6 @@ void* getAPI_Pcf8574(String subtype, String params);
void* getAPI_Pwm8266(String subtype, String params); void* getAPI_Pwm8266(String subtype, String params);
void* getAPI_TelegramLT(String subtype, String params); void* getAPI_TelegramLT(String subtype, String params);
void* getAPI_Lcd2004(String subtype, String params); void* getAPI_Lcd2004(String subtype, String params);
void* getAPI_Ws2812b(String subtype, String params);
void* getAPI(String subtype, String params) { void* getAPI(String subtype, String params) {
void* tmpAPI; void* tmpAPI;
@@ -49,11 +44,7 @@ if ((tmpAPI = getAPI_Bme280(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Bmp280(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Bmp280(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Dht1122(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Dht1122(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Ds18b20(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Ds18b20(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_GY21(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Hdc1080(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Max6675(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Pzem004(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Pzem004(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_RCswitch(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Sht20(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Sht20(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Sht30(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Sht30(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Sonar(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Sonar(subtype, params)) != nullptr) return tmpAPI;
@@ -68,6 +59,5 @@ if ((tmpAPI = getAPI_Pcf8574(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Pwm8266(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_TelegramLT(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Lcd2004(subtype, params)) != nullptr) return tmpAPI; if ((tmpAPI = getAPI_Lcd2004(subtype, params)) != nullptr) return tmpAPI;
if ((tmpAPI = getAPI_Ws2812b(subtype, params)) != nullptr) return tmpAPI;
return nullptr; return nullptr;
} }

View File

@@ -1,26 +1,26 @@
{ {
"menuSection": "Экраны", "menuSection": "Экраны",
"configItem": [ "configItem": [
{ {
"global": 0, "global": 0,
"name": "Strip ws2812b", "name": "Strip ws2812b",
"type": "Reading", "type": "Reading",
"subtype": "Ws2812b", "subtype": "Ws2812b",
"id": "strip", "id": "strip",
"widget": "range", "widget": "range",
"page": "Кнопки", "page": "Кнопки",
"descr": "Лента", "descr": "Лента",
"int": 15, "int": 15,
"needSave": 0, "needSave": 0,
"pin": "4", "pin": "4",
"numLeds": "8", "numLeds": "8",
"brightness": "100", "brightness": "100",
"mode": "1", "mode": "1",
"min": "15", "min": "15",
"max": "30", "max": "30",
"idshow": "t" "idshow": "t"
}], }
],
"about": { "about": {
"authorName": "Yuriy Kuneev", "authorName": "Yuriy Kuneev",
"authorContact": "https://t.me/Kuneev07", "authorContact": "https://t.me/Kuneev07",
@@ -44,7 +44,9 @@
{ {
"name": "noShow", "name": "noShow",
"descr": "Выключить ленту", "descr": "Выключить ленту",
"params": ["номер пикселя"] "params": [
"номер пикселя"
]
}, },
{ {
"name": "noShowOne", "name": "noShowOne",
@@ -59,17 +61,26 @@
{ {
"name": "showLed", "name": "showLed",
"descr": "Зажечь один диод", "descr": "Зажечь один диод",
"params": ["номер пикселя","цвет 255,255,255 или red,green"] "params": [
"номер пикселя",
"цвет 255,255,255 или red,green"
]
}, },
{ {
"name": "showLedAll", "name": "showLedAll",
"descr": "Зажечь все диоды", "descr": "Зажечь все диоды",
"params": ["Цвет красного светодиода от 0 до 255","Цвет зеленого светодиода от 0 до 255","Цвет синего светодиода от 0 до 255"] "params": [
"Цвет красного светодиода от 0 до 255",
"Цвет зеленого светодиода от 0 до 255",
"Цвет синего светодиода от 0 до 255"
]
}, },
{ {
"name": "Brightness", "name": "Brightness",
"descr": "Устанавливает общую яркость ленты от 0 до 255", "descr": "Устанавливает общую яркость ленты от 0 до 255",
"params": ["яркость от 0 до 255"] "params": [
"яркость от 0 до 255"
]
}, },
{ {
"name": "enableIndication", "name": "enableIndication",
@@ -83,15 +94,13 @@
} }
] ]
}, },
"defActive": false,
"defActive": true,
"usedLibs": { "usedLibs": {
"esp32_4mb": [ "esp32_4mb": [
"adafruit/Adafruit NeoPixel@^1.10.6" "adafruit/Adafruit NeoPixel@^1.10.6"
], ],
"esp8266_4mb": [ "esp8266_4mb": [
"adafruit/Adafruit NeoPixel@^1.10.6" "adafruit/Adafruit NeoPixel@^1.10.6"
] ]
} }
} }

View File

@@ -47,7 +47,7 @@
"int": "Количество секунд между опросами датчика." "int": "Количество секунд между опросами датчика."
} }
}, },
"defActive": true, "defActive": false,
"usedLibs": { "usedLibs": {
"esp32_4mb": [ "esp32_4mb": [
"https://github.com/JonasGMorsch/GY-21.git" "https://github.com/JonasGMorsch/GY-21.git"

View File

@@ -50,7 +50,7 @@
"int": "Количество секунд между опросами датчика." "int": "Количество секунд между опросами датчика."
} }
}, },
"defActive": true, "defActive": false,
"usedLibs": { "usedLibs": {
"esp32_4mb": [ "esp32_4mb": [
"ClosedCube HDC1080" "ClosedCube HDC1080"

View File

@@ -36,7 +36,7 @@
"int": "Количество секунд между опросами датчика." "int": "Количество секунд между опросами датчика."
} }
}, },
"defActive": true, "defActive": false,
"usedLibs": { "usedLibs": {
"esp32_4mb": [ "esp32_4mb": [
"adafruit/MAX6675 library" "adafruit/MAX6675 library"

View File

@@ -1,18 +1,18 @@
{ {
"menuSection": "Сенсоры", "menuSection": "Сенсоры",
"configItem": [
"configItem": [{ {
"global": 0, "global": 0,
"name": "Сканер кнопок 433 MHz", "name": "Сканер кнопок 433 MHz",
"num": 31, "num": 31,
"type": "Reading", "type": "Reading",
"subtype": "RCswitch", "subtype": "RCswitch",
"id": "rsw", "id": "rsw",
"int": 500, "int": 500,
"pinRx": 12, "pinRx": 12,
"pinTx": 12 "pinTx": 12
}], }
],
"about": { "about": {
"authorName": "Serghei Crasnicov", "authorName": "Serghei Crasnicov",
"authorContact": "https://t.me/Serghei63", "authorContact": "https://t.me/Serghei63",
@@ -36,23 +36,28 @@
{ {
"name": "sendBitStr", "name": "sendBitStr",
"descr": "Отправляем строку вида 000000000001010100010001", "descr": "Отправляем строку вида 000000000001010100010001",
"params": ["Строка 000000000001010100010001"] "params": [
"Строка 000000000001010100010001"
]
}, },
{ {
"name": "sendTriState", "name": "sendTriState",
"descr": "отправляем строку вида 00000FFF0F0F", "descr": "отправляем строку вида 00000FFF0F0F",
"params": ["Строка 00000FFF0F0F"] "params": [
"Строка 00000FFF0F0F"
]
}, },
{ {
"name": "sendDecimal", "name": "sendDecimal",
"descr": "отправляем строку вида 5393", "descr": "отправляем строку вида 5393",
"params": ["Код в виде числа", "Количество бит чтоб заполнить нулями"] "params": [
"Код в виде числа",
"Количество бит чтоб заполнить нулями"
]
} }
] ]
}, },
"defActive": false,
"defActive": true,
"usedLibs": { "usedLibs": {
"esp32_4mb": [ "esp32_4mb": [
"rc-switch @ ^2.6.4" "rc-switch @ ^2.6.4"

View File

@@ -56,6 +56,23 @@
"descr": "Введите текст", "descr": "Введите текст",
"int": "0", "int": "0",
"val": "текст" "val": "текст"
},
{
"global": 0,
"name": "Вывод значения",
"type": "Reading",
"subtype": "Variable",
"id": "vout",
"needSave": 0,
"widget": "anydataDef",
"page": "Вывод",
"descr": "Значение",
"int": "0",
"val": "0.0",
"map": "1024,1024,1,100",
"plus": 0,
"multiply": 1,
"round": 0
} }
], ],
"about": { "about": {

View File

@@ -13,7 +13,7 @@ void SerialPrint(const String& errorLevel, const String& module, const String& m
if (isNetworkActive()) { if (isNetworkActive()) {
if (jsonReadInt(settingsFlashJson, F("log")) != 0) { if (jsonReadInt(settingsFlashJson, F("log")) != 0) {
sendStringToWs("corelg", tosend, -1); sendStringToWs(F("corelg"), tosend, -1);
} }
} }
@@ -21,7 +21,7 @@ void SerialPrint(const String& errorLevel, const String& module, const String& m
cleanString(tosend); cleanString(tosend);
// создаем событие об ошибке для возможной реакции в сценарии // создаем событие об ошибке для возможной реакции в сценарии
if (itemId != "") { if (itemId != "") {
createItemFromNet(itemId + "_onError", tosend, -4); createItemFromNet(itemId + F("_onError"), tosend, -4);
} else { } else {
// createItemFromNet("onError", tosend, -4); // createItemFromNet("onError", tosend, -4);
} }