Browse Source

edit func sum() and add new properties

pull/1155/head
DanielR92 2 years ago
parent
commit
c3909950a7
  1. 4
      src/config/settings.h
  2. 45
      src/plugins/zeroExport/zeroExport.h
  3. 2
      src/web/RestApi.h
  4. 3
      src/web/web.h

4
src/config/settings.h

@ -150,6 +150,8 @@ typedef struct {
typedef struct { typedef struct {
char monitor_ip[ZEXPORT_ADDR_LEN]; char monitor_ip[ZEXPORT_ADDR_LEN];
bool enabled; bool enabled;
float power_avg;
uint8_t count_avg;
cfgShellyEM3_t PHASE[3]; cfgShellyEM3_t PHASE[3];
} cfgzeroExport_t; } cfgzeroExport_t;
#endif #endif
@ -657,6 +659,8 @@ class settings {
if(set) { if(set) {
obj[F("en_zeroexport")] = (bool) mCfg.plugin.zexport.enabled; obj[F("en_zeroexport")] = (bool) mCfg.plugin.zexport.enabled;
obj[F("monitor_ipAddr")] = mCfg.plugin.zexport.monitor_ip; obj[F("monitor_ipAddr")] = mCfg.plugin.zexport.monitor_ip;
obj[F("power_avg")] = mCfg.plugin.zexport.power_avg;
obj[F("count_avg")] = mCfg.plugin.zexport.count_avg;
if(!mCfg.plugin.zexport.PHASE) return; if(!mCfg.plugin.zexport.PHASE) return;
for (size_t i = 0; i < sizeof(mCfg.plugin.zexport.PHASE); i++) for (size_t i = 0; i < sizeof(mCfg.plugin.zexport.PHASE); i++)

45
src/plugins/zeroExport/zeroExport.h

@ -32,30 +32,27 @@ class ZeroExport {
} }
} }
// Sums up the power values ​​of all phases and returns them.
// If the value is negative, all power values ​​from the inverter are taken into account
double sum() double sum()
{ {
double val = mCfg->PHASE[0].power + mCfg->PHASE[1].power + mCfg->PHASE[2].power; float ivPower = 0;
if (val > 0) { Inverter<> *iv;
return val; record_t<> *rec;
} else { for (uint8_t i = 0; i < mSys->getNumInverters(); i++) {
float totalPower = 0; iv = mSys->getInverterByPos(i);
Inverter<> *iv; rec = iv->getRecordStruct(RealTimeRunData_Debug);
record_t<> *rec; if (iv == NULL)
for (uint8_t i = 0; i < mSys->getNumInverters(); i++) { continue;
iv = mSys->getInverterByPos(i); ivPower += iv->getChannelFieldValue(CH0, FLD_PAC, rec);
rec = iv->getRecordStruct(RealTimeRunData_Debug);
if (iv == NULL)
continue;
totalPower += iv->getChannelFieldValue(CH0, FLD_PAC, rec);
}
return totalPower - val;
} }
double em3_power = mCfg->PHASE[0].power + mCfg->PHASE[1].power + mCfg->PHASE[2].power;
return ((unsigned)(em3_power - mCfg->power_avg) >= mCfg->power_avg) ? ivPower + em3_power : ivPower - em3_power;
} }
private: private:
HTTPClient http; HTTPClient http;
//char msgBuffer[256] = {'\0'};
void loop() { } void loop() { }
void zero() { void zero() {
@ -73,13 +70,13 @@ class ZeroExport {
{ {
DynamicJsonDocument json(128); DynamicJsonDocument json(128);
deserializeJson(json, getData()); deserializeJson(json, getData());
mCfg->PHASE[index].power = json[F("power")]; mCfg->PHASE[index].power = (float)json[F("power")];
mCfg->PHASE[index].pf = json[F("pf")]; mCfg->PHASE[index].pf = (float)json[F("pf")];
mCfg->PHASE[index].current = json[F("current")]; mCfg->PHASE[index].current = (float)json[F("current")];
mCfg->PHASE[index].voltage = json[F("voltage")]; mCfg->PHASE[index].voltage = (float)json[F("voltage")];
mCfg->PHASE[index].is_valid = json[F("is_valid")]; mCfg->PHASE[index].is_valid = (bool)json[F("is_valid")];
mCfg->PHASE[index].total = json[F("total")]; mCfg->PHASE[index].total = (int)json[F("total")];
mCfg->PHASE[index].total_returned = json[F("total_returned")]; mCfg->PHASE[index].total_returned = (int)json[F("total_returned")];
} }
else else
{ {

2
src/web/RestApi.h

@ -485,6 +485,8 @@ class RestApi {
void getzeroExport(JsonObject obj) { void getzeroExport(JsonObject obj) {
obj[F("en_zeroexport")] = (bool) mConfig->plugin.zexport.enabled; obj[F("en_zeroexport")] = (bool) mConfig->plugin.zexport.enabled;
obj[F("monitor_ipAddr")] = String(mConfig->plugin.zexport.monitor_ip); obj[F("monitor_ipAddr")] = String(mConfig->plugin.zexport.monitor_ip);
obj[F("count_avg")] = (uint8_t)mConfig->plugin.zexport.count_avg;
obj[F("power_avg")] = (float)mConfig->plugin.zexport.power_avg;
for (size_t i = 0; i < 3; i++) for (size_t i = 0; i < 3; i++)
{ {
char str[10]; char str[10];

3
src/web/web.h

@ -604,6 +604,9 @@ class Web {
// zero-export // zero-export
#if defined(ESP32) #if defined(ESP32)
mConfig->plugin.zexport.enabled = (request->arg("en_zeroexport") == "on"); mConfig->plugin.zexport.enabled = (request->arg("en_zeroexport") == "on");
mConfig->plugin.zexport.count_avg = request->arg("count_avg").toInt();
mConfig->plugin.zexport.power_avg = request->arg("power_avg").toFloat();
if (request->arg("monitor_ipAddr") != "") { if (request->arg("monitor_ipAddr") != "") {
String addr = request->arg("monitor_ipAddr"); String addr = request->arg("monitor_ipAddr");
addr.trim(); addr.trim();

Loading…
Cancel
Save