mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Fix ESP32 energy monitoring migration
This commit is contained in:
parent
db3fdc5118
commit
5b0ee76173
@ -299,13 +299,18 @@ void EnergySettingsLoad(void) {
|
||||
RtcEnergySettings.energy_total_kWh[2] = 0;
|
||||
memset((char*)&RtcEnergySettings.energy_usage, 0x00, sizeof(RtcEnergySettings.energy_usage));
|
||||
*/
|
||||
Energy->Settings.energy_kWhdoy = Settings->energy_kWhdoy;
|
||||
for (uint32_t i = 0; i < 3; i++) {
|
||||
Energy->Settings.energy_today_kWh[i] = (float)(Settings->energy_kWhtoday_ph[i]) / 10000;
|
||||
Energy->Settings.energy_yesterday_kWh[i] = (float)(Settings->energy_kWhyesterday_ph[i]) / 10000;
|
||||
Energy->Settings.energy_total_kWh[i] = (float)(Settings->energy_kWhtotal_ph[i]) / 10000;
|
||||
Energy->Settings.energy_export_kWh[i] = (float)(Settings->energy_kWhexport_ph[i]) / 10000;
|
||||
Energy->Settings.energy_today_kWh[i] = (float)Settings->energy_kWhtoday_ph[i] / 100000;
|
||||
Energy->Settings.energy_yesterday_kWh[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000;
|
||||
Energy->Settings.energy_total_kWh[i] = (float)Settings->energy_kWhtotal_ph[i] / 1000;
|
||||
Energy->Settings.energy_export_kWh[i] = (float)Settings->energy_kWhexport_ph[i] / 1000;
|
||||
|
||||
Energy->Settings.power_delta[i] = (float)(Settings->energy_power_delta[i]);
|
||||
Energy->Settings.power_delta[i] = (float)Settings->energy_power_delta[i];
|
||||
|
||||
// AddLog(LOG_LEVEL_INFO, PSTR("DBG: kWhtoday %d = %4_f, kWhyesterday %d = %4_f"),
|
||||
// Settings->energy_kWhtoday_ph[i], &Energy->Settings.energy_today_kWh[i],
|
||||
// Settings->energy_kWhyesterday_ph[i], &Energy->Settings.energy_yesterday_kWh[i]);
|
||||
}
|
||||
|
||||
// v0102 additions
|
||||
@ -491,7 +496,7 @@ void EnergyUpdateToday(void) {
|
||||
}
|
||||
}
|
||||
|
||||
RtcEnergySettings.energy_today_kWh[i] = Energy->energy_today_offset_kWh[i] + ((float)(Energy->kWhtoday[i]) / 100000);
|
||||
RtcEnergySettings.energy_today_kWh[i] = Energy->energy_today_offset_kWh[i] + ((float)Energy->kWhtoday[i] / 100000);
|
||||
Energy->daily_kWh[i] = RtcEnergySettings.energy_today_kWh[i];
|
||||
Energy->total[i] = RtcEnergySettings.energy_total_kWh[i] + RtcEnergySettings.energy_today_kWh[i];
|
||||
if (Energy->local_energy_active_export) {
|
||||
@ -564,7 +569,7 @@ void EnergyUpdateTotal(void) {
|
||||
if ((Energy->total[i] < (Energy->import_active[i] - 0.01f)) && // We subtract a little offset of 10Wh to avoid continuous updates
|
||||
Settings->flag3.hardware_energy_total) { // SetOption72 - Enable hardware energy total counter as reference (#6561)
|
||||
// The following calculation allows total usage (Energy->import_active[i]) up to +/-2147483.647 kWh
|
||||
RtcEnergySettings.energy_total_kWh[i] = Energy->import_active[i] - (Energy->energy_today_offset_kWh[i] + ((float)(Energy->kWhtoday[i]) / 100000));
|
||||
RtcEnergySettings.energy_total_kWh[i] = Energy->import_active[i] - (Energy->energy_today_offset_kWh[i] + ((float)Energy->kWhtoday[i] / 100000));
|
||||
Energy->Settings.energy_total_kWh[i] = RtcEnergySettings.energy_total_kWh[i];
|
||||
Energy->total[i] = Energy->import_active[i];
|
||||
Energy->Settings.energy_kWhtotal_time = (!Energy->energy_today_offset_kWh[i]) ? LocalTime() : Midnight();
|
||||
@ -601,7 +606,7 @@ void Energy200ms(void) {
|
||||
Energy->kWhtoday_offset_init = true;
|
||||
Energy->Settings.energy_kWhdoy = RtcTime.day_of_year;
|
||||
|
||||
for (uint32_t i = 0; i < 3; i++) {
|
||||
for (uint32_t i = 0; i < ENERGY_MAX_PHASES; i++) {
|
||||
Energy->Settings.energy_yesterday_kWh[i] = RtcEnergySettings.energy_today_kWh[i];
|
||||
|
||||
RtcEnergySettings.energy_total_kWh[i] += RtcEnergySettings.energy_today_kWh[i];
|
||||
@ -886,7 +891,7 @@ void ResponseCmndEnergyTotalYesterdayToday(void) {
|
||||
float energy_yesterday_kWh[3];
|
||||
for (uint32_t i = 0; i < Energy->phase_count; i++) {
|
||||
energy_yesterday_kWh[i] = Energy->Settings.energy_yesterday_kWh[i];
|
||||
Energy->total[i] = RtcEnergySettings.energy_total_kWh[i] + Energy->energy_today_offset_kWh[i] + ((float)(Energy->kWhtoday[i]) / 100000);
|
||||
Energy->total[i] = RtcEnergySettings.energy_total_kWh[i] + Energy->energy_today_offset_kWh[i] + ((float)Energy->kWhtoday[i] / 100000);
|
||||
if (Energy->local_energy_active_export) {
|
||||
Energy->export_active[i] = RtcEnergySettings.energy_export_kWh[i];
|
||||
}
|
||||
@ -931,7 +936,7 @@ void CmndEnergyTotal(void) {
|
||||
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||
uint32_t phase = XdrvMailbox.index -1;
|
||||
// Reset Energy Total
|
||||
RtcEnergySettings.energy_total_kWh[phase] = (float)(values[0]) / 1000;
|
||||
RtcEnergySettings.energy_total_kWh[phase] = (float)values[0] / 1000;
|
||||
Energy->Settings.energy_total_kWh[phase] = RtcEnergySettings.energy_total_kWh[phase];
|
||||
if (params > 1) {
|
||||
Energy->Settings.energy_kWhtotal_time = values[1];
|
||||
@ -950,7 +955,7 @@ void CmndEnergyYesterday(void) {
|
||||
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||
uint32_t phase = XdrvMailbox.index -1;
|
||||
// Reset Energy Yesterday
|
||||
Energy->Settings.energy_yesterday_kWh[phase] = (float)(values[0]) / 1000;
|
||||
Energy->Settings.energy_yesterday_kWh[phase] = (float)values[0] / 1000;
|
||||
if (params > 1) {
|
||||
Energy->Settings.energy_kWhtotal_time = values[1];
|
||||
}
|
||||
@ -966,7 +971,7 @@ void CmndEnergyToday(void) {
|
||||
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||
uint32_t phase = XdrvMailbox.index -1;
|
||||
// Reset Energy Today
|
||||
Energy->energy_today_offset_kWh[phase] = (float)(values[0]) / 1000;
|
||||
Energy->energy_today_offset_kWh[phase] = (float)values[0] / 1000;
|
||||
Energy->kWhtoday[phase] = 0;
|
||||
Energy->kWhtoday_delta[phase] = 0;
|
||||
Energy->start_energy[phase] = 0;
|
||||
@ -994,7 +999,7 @@ void CmndEnergyExportActive(void) {
|
||||
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||
uint32_t phase = XdrvMailbox.index -1;
|
||||
// Reset Energy Export Active
|
||||
RtcEnergySettings.energy_export_kWh[phase] = (float)(values[0]) / 1000;
|
||||
RtcEnergySettings.energy_export_kWh[phase] = (float)values[0] / 1000;
|
||||
Energy->Settings.energy_export_kWh[phase] = RtcEnergySettings.energy_export_kWh[phase];
|
||||
if (params > 1) {
|
||||
Energy->Settings.energy_kWhtotal_time = values[1];
|
||||
@ -1018,9 +1023,9 @@ void CmndEnergyUsage(void) {
|
||||
uint32_t params = ParseParameters(2, values);
|
||||
if (params > 0) {
|
||||
// Reset energy_usage.usage totals
|
||||
RtcEnergySettings.energy_usage.usage_total_kWh[0] = (float)(values[0]) / 1000;
|
||||
RtcEnergySettings.energy_usage.usage_total_kWh[0] = (float)values[0] / 1000;
|
||||
if (params > 1) {
|
||||
RtcEnergySettings.energy_usage.usage_total_kWh[1] = (float)(values[1]) / 1000;
|
||||
RtcEnergySettings.energy_usage.usage_total_kWh[1] = (float)values[1] / 1000;
|
||||
}
|
||||
Energy->Settings.energy_usage.usage_total_kWh[0] = RtcEnergySettings.energy_usage.usage_total_kWh[0];
|
||||
Energy->Settings.energy_usage.usage_total_kWh[1] = RtcEnergySettings.energy_usage.usage_total_kWh[1];
|
||||
@ -1033,9 +1038,9 @@ void CmndEnergyExport(void) {
|
||||
uint32_t params = ParseParameters(2, values);
|
||||
if (params > 0) {
|
||||
// Reset energy_usage.return totals
|
||||
RtcEnergySettings.energy_usage.return_total_kWh[0] = (float)(values[0]) / 1000;
|
||||
RtcEnergySettings.energy_usage.return_total_kWh[0] = (float)values[0] / 1000;
|
||||
if (params > 1) {
|
||||
RtcEnergySettings.energy_usage.return_total_kWh[1] = (float)(values[1]) / 1000;
|
||||
RtcEnergySettings.energy_usage.return_total_kWh[1] = (float)values[1] / 1000;
|
||||
}
|
||||
Energy->Settings.energy_usage.return_total_kWh[0] = RtcEnergySettings.energy_usage.return_total_kWh[0];
|
||||
Energy->Settings.energy_usage.return_total_kWh[1] = RtcEnergySettings.energy_usage.return_total_kWh[1];
|
||||
|
Loading…
x
Reference in New Issue
Block a user