diff --git a/src/modules/sensors/Pzem004t/Pzem004t.cpp b/src/modules/sensors/Pzem004t/Pzem004t.cpp index 0f59fccb..66718d36 100644 --- a/src/modules/sensors/Pzem004t/Pzem004t.cpp +++ b/src/modules/sensors/Pzem004t/Pzem004t.cpp @@ -28,9 +28,109 @@ class Pzem004v : public IoTItem { ~Pzem004v(){}; }; +class Pzem004a : public IoTItem { + private: + String addr; + PZEMSensor* pzem; + + public: + Pzem004a(String parameters) : IoTItem(parameters) { + addr = jsonReadStr(parameters, "addr"); + if (myUART) { + pzem = new PZEMSensor(myUART, hexStringToUint8(addr)); + } + } + + void doByInterval() { + if (pzem) { + value.valD = pzem->values()->current; + regEvent(value.valD, "Pzem Ampere"); + } + } + + ~Pzem004a(){}; +}; + +class Pzem004w : public IoTItem { + private: + String addr; + PZEMSensor* pzem; + + public: + Pzem004w(String parameters) : IoTItem(parameters) { + addr = jsonReadStr(parameters, "addr"); + if (myUART) { + pzem = new PZEMSensor(myUART, hexStringToUint8(addr)); + } + } + + void doByInterval() { + if (pzem) { + value.valD = pzem->values()->power; + regEvent(value.valD, "Pzem Watt"); + } + } + + ~Pzem004w(){}; +}; + +class Pzem004wh : public IoTItem { + private: + String addr; + PZEMSensor* pzem; + + public: + Pzem004wh(String parameters) : IoTItem(parameters) { + addr = jsonReadStr(parameters, "addr"); + if (myUART) { + pzem = new PZEMSensor(myUART, hexStringToUint8(addr)); + } + } + + void doByInterval() { + if (pzem) { + value.valD = pzem->values()->energy; + regEvent(value.valD, "Pzem Watt/hr"); + } + } + + ~Pzem004wh(){}; +}; + +class Pzem004hz : public IoTItem { + private: + String addr; + PZEMSensor* pzem; + + public: + Pzem004hz(String parameters) : IoTItem(parameters) { + addr = jsonReadStr(parameters, "addr"); + if (myUART) { + pzem = new PZEMSensor(myUART, hexStringToUint8(addr)); + } + } + + void doByInterval() { + if (pzem) { + value.valD = pzem->values()->freq; + regEvent(value.valD, "Pzem Hz"); + } + } + + ~Pzem004hz(){}; +}; + 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 { return nullptr; }