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. 29
      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 {
char monitor_ip[ZEXPORT_ADDR_LEN];
bool enabled;
float power_avg;
uint8_t count_avg;
cfgShellyEM3_t PHASE[3];
} cfgzeroExport_t;
#endif
@ -657,6 +659,8 @@ class settings {
if(set) {
obj[F("en_zeroexport")] = (bool) mCfg.plugin.zexport.enabled;
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;
for (size_t i = 0; i < sizeof(mCfg.plugin.zexport.PHASE); i++)

29
src/plugins/zeroExport/zeroExport.h

@ -32,13 +32,11 @@ 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 val = mCfg->PHASE[0].power + mCfg->PHASE[1].power + mCfg->PHASE[2].power;
if (val > 0) {
return val;
} else {
float totalPower = 0;
float ivPower = 0;
Inverter<> *iv;
record_t<> *rec;
for (uint8_t i = 0; i < mSys->getNumInverters(); i++) {
@ -46,16 +44,15 @@ class ZeroExport {
rec = iv->getRecordStruct(RealTimeRunData_Debug);
if (iv == NULL)
continue;
totalPower += iv->getChannelFieldValue(CH0, FLD_PAC, rec);
ivPower += 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:
HTTPClient http;
//char msgBuffer[256] = {'\0'};
void loop() { }
void zero() {
@ -73,13 +70,13 @@ class ZeroExport {
{
DynamicJsonDocument json(128);
deserializeJson(json, getData());
mCfg->PHASE[index].power = json[F("power")];
mCfg->PHASE[index].pf = json[F("pf")];
mCfg->PHASE[index].current = json[F("current")];
mCfg->PHASE[index].voltage = json[F("voltage")];
mCfg->PHASE[index].is_valid = json[F("is_valid")];
mCfg->PHASE[index].total = json[F("total")];
mCfg->PHASE[index].total_returned = json[F("total_returned")];
mCfg->PHASE[index].power = (float)json[F("power")];
mCfg->PHASE[index].pf = (float)json[F("pf")];
mCfg->PHASE[index].current = (float)json[F("current")];
mCfg->PHASE[index].voltage = (float)json[F("voltage")];
mCfg->PHASE[index].is_valid = (bool)json[F("is_valid")];
mCfg->PHASE[index].total = (int)json[F("total")];
mCfg->PHASE[index].total_returned = (int)json[F("total_returned")];
}
else
{

2
src/web/RestApi.h

@ -485,6 +485,8 @@ class RestApi {
void getzeroExport(JsonObject obj) {
obj[F("en_zeroexport")] = (bool) mConfig->plugin.zexport.enabled;
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++)
{
char str[10];

3
src/web/web.h

@ -604,6 +604,9 @@ class Web {
// zero-export
#if defined(ESP32)
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") != "") {
String addr = request->arg("monitor_ipAddr");
addr.trim();

Loading…
Cancel
Save