diff --git a/data_svelte/items.json b/data_svelte/items.json index 4a94fc4d..0700d229 100644 --- a/data_svelte/items.json +++ b/data_svelte/items.json @@ -61,7 +61,8 @@ "int": 1, "logid": "t", "points": 365, - "column": 0 + "telegram": 0, + "test": 0 }, { "global": 0, @@ -435,7 +436,23 @@ }, { "global": 0, - "name": "30. Sht20 Температура", + "name": "30. PZEM настройка", + "type": "Reading", + "subtype": "Pzem004smd", + "id": "set", + "widget": "nil", + "page": "", + "descr": "", + "int": 15, + "addr": "0xF8", + "changeaddr": 0, + "setaddr": "0x01", + "reset": 0, + "num": 30 + }, + { + "global": 0, + "name": "31. Sht20 Температура", "type": "Reading", "subtype": "Sht20t", "id": "tmp2", @@ -444,11 +461,11 @@ "descr": "Температура", "int": 15, "round": 1, - "num": 30 + "num": 31 }, { "global": 0, - "name": "31. Sht20 Влажность", + "name": "32. Sht20 Влажность", "type": "Reading", "subtype": "Sht20h", "id": "Hum2", @@ -457,11 +474,11 @@ "descr": "Влажность", "int": 15, "round": 1, - "num": 31 + "num": 32 }, { "global": 0, - "name": "32. Sht30 Температура", + "name": "33. Sht30 Температура", "type": "Reading", "subtype": "Sht30t", "id": "tmp30", @@ -470,11 +487,11 @@ "descr": "SHT30 Температура", "int": 15, "round": 1, - "num": 32 + "num": 33 }, { "global": 0, - "name": "33. Sht30 Влажность", + "name": "34. Sht30 Влажность", "type": "Reading", "subtype": "Sht30h", "id": "Hum30", @@ -483,12 +500,12 @@ "descr": "SHT30 Влажность", "int": 15, "round": 1, - "num": 33 + "num": 34 }, { "global": 0, - "name": "34. HC-SR04 Ультразвуковой дальномер", - "num": 34, + "name": "35. HC-SR04 Ультразвуковой дальномер", + "num": 35, "type": "Reading", "subtype": "Sonar", "id": "sonar", @@ -500,7 +517,7 @@ "int": 5 }, { - "name": "35. UART", + "name": "36. UART", "type": "Reading", "subtype": "UART", "page": "", @@ -512,14 +529,14 @@ "line": 2, "speed": 9600, "eventFormat": 0, - "num": 35 + "num": 36 }, { "header": "Исполнительные устройства" }, { "global": 0, - "name": "36. Кнопка подключенная к пину", + "name": "37. Кнопка подключенная к пину", "type": "Writing", "subtype": "ButtonIn", "id": "btn", @@ -533,11 +550,11 @@ "pinMode": "INPUT", "debounceDelay": 50, "fixState": 0, - "num": 36 + "num": 37 }, { "global": 0, - "name": "37. Управление пином", + "name": "38. Управление пином", "type": "Writing", "subtype": "ButtonOut", "needSave": 0, @@ -548,11 +565,11 @@ "int": 0, "inv": 0, "pin": 2, - "num": 37 + "num": 38 }, { "global": 0, - "name": "38. Сервопривод", + "name": "39. Сервопривод", "type": "Writing", "subtype": "IoTServo", "id": "servo", @@ -563,11 +580,11 @@ "pin": 12, "apin": -1, "amap": "0, 4096, 0, 180", - "num": 38 + "num": 39 }, { "global": 0, - "name": "39. Расширитель портов Mcp23017", + "name": "40. Расширитель портов Mcp23017", "type": "Reading", "subtype": "Mcp23017", "id": "Mcp", @@ -577,11 +594,11 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 39 + "num": 40 }, { "global": 0, - "name": "40. MP3 плеер", + "name": "41. MP3 плеер", "type": "Reading", "subtype": "Mp3", "id": "mp3", @@ -591,11 +608,11 @@ "int": 1, "pins": "14,12", "volume": 20, - "num": 40 + "num": 41 }, { "global": 0, - "name": "41. Сенсорная кнопка", + "name": "42. Сенсорная кнопка", "type": "Writing", "subtype": "Multitouch", "id": "impulse", @@ -609,11 +626,11 @@ "pinMode": "INPUT", "debounceDelay": 50, "PWMDelay": 500, - "num": 41 + "num": 42 }, { "global": 0, - "name": "42. Расширитель портов Pcf8574", + "name": "43. Расширитель портов Pcf8574", "type": "Reading", "subtype": "Pcf8574", "id": "Pcf", @@ -623,11 +640,11 @@ "int": "0", "addr": "0x20", "index": 1, - "num": 42 + "num": 43 }, { "global": 0, - "name": "43. PWM ESP8266", + "name": "44. PWM ESP8266", "type": "Writing", "subtype": "Pwm8266", "id": "pwm", @@ -639,11 +656,11 @@ "freq": 5000, "val": 0, "apin": -1, - "num": 43 + "num": 44 }, { "global": 0, - "name": "44. Телеграм-Лайт", + "name": "45. Телеграм-Лайт", "type": "Writing", "subtype": "TelegramLT", "id": "tg", @@ -652,14 +669,14 @@ "descr": "", "token": "", "chatID": "", - "num": 44 + "num": 45 }, { "header": "Экраны" }, { "global": 0, - "name": "45. LCD экран 2004", + "name": "46. LCD экран 2004", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -671,10 +688,10 @@ "size": "20,4", "coord": "0,0", "id2show": "id датчика", - "num": 45 + "num": 46 }, { - "name": "46. LCD экран 1602", + "name": "47. LCD экран 1602", "type": "Reading", "subtype": "Lcd2004", "id": "Lcd", @@ -686,6 +703,6 @@ "size": "16,2", "coord": "0,0", "id2show": "id датчика", - "num": 46 + "num": 47 } ] \ No newline at end of file diff --git a/myProfile.json b/myProfile.json index 1c55765c..a7c149a4 100644 --- a/myProfile.json +++ b/myProfile.json @@ -196,7 +196,7 @@ }, { "path": "src/modules/exec/MySensors", - "active": true + "active": false }, { "path": "src/modules/exec/Pcf8574", diff --git a/src/modules/sensors/Pzem004t/Pzem004t.cpp b/src/modules/sensors/Pzem004t/Pzem004t.cpp index e26beb7f..6ea5f2c7 100644 --- a/src/modules/sensors/Pzem004t/Pzem004t.cpp +++ b/src/modules/sensors/Pzem004t/Pzem004t.cpp @@ -181,20 +181,61 @@ class Pzem004pf : public IoTItem { ~Pzem004pf(){}; }; -void* getAPI_Pzem004(String subtype, String param) { - if (subtype == F("Pzem004v")) { - return new Pzem004v(param); - } else if (subtype == F("Pzem004a")) { - return new Pzem004a(param); - } else if (subtype == F("Pzem004w")) { - return new Pzem004w(param); - } else if (subtype == F("Pzem004wh")) { - return new Pzem004wh(param); - } else if (subtype == F("Pzem004hz")) { - return new Pzem004hz(param); - } else if (subtype == F("Pzem004pf")) { - return new Pzem004pf(param); - } else { - return nullptr; +class Pzem004cmd : public IoTItem { + private: + String addr; + int changeaddr; + String setaddr; + int reset; + PZEMSensor* pzem; + + public: + Pzem004cmd(String parameters) : IoTItem(parameters) { + jsonRead(parameters, F("addr"), addr); + jsonRead(parameters, F("changeaddr"), changeaddr); + jsonRead(parameters, F("setaddr"), setaddr); + jsonRead(parameters, F("reset"), reset); + + if (myUART) { + pzem = new PZEMSensor(myUART, hexStringToUint8(addr)); + if (changeaddr == 1) { + if (pzem->setAddress(hexStringToUint8(setaddr))) { + SerialPrint("i", "Pzem", "address set: " + setaddr); + } else { + SerialPrint("i", "Pzem", "set adress error"); + } + } + if (reset == 1) { + if (pzem->reset()) { + SerialPrint("i", "Pzem", "reset done"); + } else { + SerialPrint("i", "Pzem", "reset error"); + } + } + } + } + + void doByInterval() { + if (pzem) { + } + } + + ~Pzem004cmd(){}; + + void* getAPI_Pzem004(String subtype, String param) { + if (subtype == F("Pzem004v")) { + return new Pzem004v(param); + } else if (subtype == F("Pzem004a")) { + return new Pzem004a(param); + } else if (subtype == F("Pzem004w")) { + return new Pzem004w(param); + } else if (subtype == F("Pzem004wh")) { + return new Pzem004wh(param); + } else if (subtype == F("Pzem004hz")) { + return new Pzem004hz(param); + } else if (subtype == F("Pzem004pf")) { + return new Pzem004pf(param); + } else { + return nullptr; + } } -} diff --git a/src/modules/sensors/Pzem004t/modinfo.json b/src/modules/sensors/Pzem004t/modinfo.json index d5a31eaf..2388eef5 100644 --- a/src/modules/sensors/Pzem004t/modinfo.json +++ b/src/modules/sensors/Pzem004t/modinfo.json @@ -78,6 +78,21 @@ "int": 15, "addr": "0xF8", "round": 1 + }, + { + "global": 0, + "name": "PZEM настройка", + "type": "Reading", + "subtype": "Pzem004smd", + "id": "set", + "widget": "nil", + "page": "", + "descr": "", + "int": 15, + "addr": "0xF8", + "changeaddr": 0, + "setaddr": "0x01", + "reset": 0 } ], "about": { @@ -103,7 +118,9 @@ "moduleDesc": "Считает потраченную электроэнергию, измеряет напряжение, частоту, силу тока и прочие параметры", "propInfo": { "addr": "Адрес modbus", - "int": "Количество секунд между опросами датчика. Желателно устанавливать разные интервалы для параметров что бы опросы происходили в разное время." + "int": "Количество секунд между опросами датчика. Желателно устанавливать разные интервалы для параметров что бы опросы происходили в разное время.", + "changeaddr": "Поставьте этот параметр равным 1 и перезагрузите esp - будет установлен адрес указанный в setaddr. Смотрите в логе результат: [i] Pzem address set: 0x01", + "reset": "Поставьте этот параметр равным 1 и pzem будет сброшен к нулю. Смотрите в логе результат: [i] Pzem reset done" } }, "defActive": true,