добавление сброса и установки адресов pzem из прошивки

This commit is contained in:
Dmitry Borisenko
2022-12-11 23:17:41 +01:00
parent dbee4f48f0
commit cdcebc4736
4 changed files with 128 additions and 53 deletions

View File

@@ -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;
}
}
}

View File

@@ -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,