Skip to content

Commit

Permalink
Change Energy power_history arrays to prepare for Berry mapping (#2…
Browse files Browse the repository at this point in the history
  • Loading branch information
s-hadinger committed Jul 31, 2024
1 parent 67fcb71 commit a3ed99e
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions tasmota/tasmota_xdrv_driver/xdrv_03_esp32_energy.ino
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ typedef struct {
float daily_sum_import_balanced; // 123.123 kWh
float daily_sum_export_balanced; // 123.123 kWh

uint16_t power_history[ENERGY_MAX_PHASES][3];
uint16_t power_history[3][ENERGY_MAX_PHASES];
uint16_t mpl_hold_counter[ENERGY_MAX_PHASES];
uint16_t mpl_window_counter[ENERGY_MAX_PHASES];

Expand Down Expand Up @@ -741,15 +741,15 @@ void EnergyMarginCheck(void) {
for (uint32_t phase = 0; phase < Energy->phase_count; phase++) {
uint16_t active_power = (uint16_t)(Energy->active_power[phase]);

// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[phase][0], Energy->power_history[phase][1], Energy->power_history[phase][2]);
// AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: APower %d, HPower0 %d, HPower1 %d, HPower2 %d"), active_power, Energy->power_history[0][phase], Energy->power_history[1][phase], Energy->power_history[2][phase]);

if (Energy->Settings.power_delta[phase]) {
power_diff[phase] = active_power - Energy->power_history[phase][0];
power_diff[phase] = active_power - Energy->power_history[0][phase];
uint16_t delta = abs(power_diff[phase]);
bool threshold_met = false;
if (delta > 0) {
if (Energy->Settings.power_delta[phase] < 101) { // 1..100 = Percentage
uint16_t min_power = (Energy->power_history[phase][0] > active_power) ? active_power : Energy->power_history[phase][0];
uint16_t min_power = (Energy->power_history[0][phase] > active_power) ? active_power : Energy->power_history[0][phase];
if (0 == min_power) { min_power++; } // Fix divide by 0 exception (#6741)
delta = (delta * 100) / min_power;
if (delta >= Energy->Settings.power_delta[phase]) {
Expand All @@ -762,16 +762,16 @@ void EnergyMarginCheck(void) {
}
}
if (threshold_met) {
Energy->power_history[phase][1] = active_power; // We only want one report so reset history
Energy->power_history[phase][2] = active_power;
Energy->power_history[1][phase] = active_power; // We only want one report so reset history
Energy->power_history[2][phase] = active_power;
jsonflg = true;
} else {
power_diff[phase] = 0;
}
}
Energy->power_history[phase][0] = Energy->power_history[phase][1]; // Shift in history every second allowing power changes to settle for up to three seconds
Energy->power_history[phase][1] = Energy->power_history[phase][2];
Energy->power_history[phase][2] = active_power;
Energy->power_history[0][phase] = Energy->power_history[1][phase]; // Shift in history every second allowing power changes to settle for up to three seconds
Energy->power_history[1][phase] = Energy->power_history[2][phase];
Energy->power_history[2][phase] = active_power;
}
if (jsonflg) {
float power_diff_f[Energy->phase_count];
Expand Down

0 comments on commit a3ed99e

Please sign in to comment.