mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-28 05:06:32 +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;
|
RtcEnergySettings.energy_total_kWh[2] = 0;
|
||||||
memset((char*)&RtcEnergySettings.energy_usage, 0x00, sizeof(RtcEnergySettings.energy_usage));
|
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++) {
|
for (uint32_t i = 0; i < 3; i++) {
|
||||||
Energy->Settings.energy_today_kWh[i] = (float)(Settings->energy_kWhtoday_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]) / 10000;
|
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]) / 10000;
|
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]) / 10000;
|
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
|
// 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->daily_kWh[i] = RtcEnergySettings.energy_today_kWh[i];
|
||||||
Energy->total[i] = RtcEnergySettings.energy_total_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) {
|
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
|
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)
|
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
|
// 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->Settings.energy_total_kWh[i] = RtcEnergySettings.energy_total_kWh[i];
|
||||||
Energy->total[i] = Energy->import_active[i];
|
Energy->total[i] = Energy->import_active[i];
|
||||||
Energy->Settings.energy_kWhtotal_time = (!Energy->energy_today_offset_kWh[i]) ? LocalTime() : Midnight();
|
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->kWhtoday_offset_init = true;
|
||||||
Energy->Settings.energy_kWhdoy = RtcTime.day_of_year;
|
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];
|
Energy->Settings.energy_yesterday_kWh[i] = RtcEnergySettings.energy_today_kWh[i];
|
||||||
|
|
||||||
RtcEnergySettings.energy_total_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];
|
float energy_yesterday_kWh[3];
|
||||||
for (uint32_t i = 0; i < Energy->phase_count; i++) {
|
for (uint32_t i = 0; i < Energy->phase_count; i++) {
|
||||||
energy_yesterday_kWh[i] = Energy->Settings.energy_yesterday_kWh[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) {
|
if (Energy->local_energy_active_export) {
|
||||||
Energy->export_active[i] = RtcEnergySettings.energy_export_kWh[i];
|
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)) {
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||||
uint32_t phase = XdrvMailbox.index -1;
|
uint32_t phase = XdrvMailbox.index -1;
|
||||||
// Reset Energy Total
|
// 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];
|
Energy->Settings.energy_total_kWh[phase] = RtcEnergySettings.energy_total_kWh[phase];
|
||||||
if (params > 1) {
|
if (params > 1) {
|
||||||
Energy->Settings.energy_kWhtotal_time = values[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)) {
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||||
uint32_t phase = XdrvMailbox.index -1;
|
uint32_t phase = XdrvMailbox.index -1;
|
||||||
// Reset Energy Yesterday
|
// 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) {
|
if (params > 1) {
|
||||||
Energy->Settings.energy_kWhtotal_time = values[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)) {
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||||
uint32_t phase = XdrvMailbox.index -1;
|
uint32_t phase = XdrvMailbox.index -1;
|
||||||
// Reset Energy Today
|
// 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[phase] = 0;
|
||||||
Energy->kWhtoday_delta[phase] = 0;
|
Energy->kWhtoday_delta[phase] = 0;
|
||||||
Energy->start_energy[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)) {
|
if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy->phase_count) && (params > 0)) {
|
||||||
uint32_t phase = XdrvMailbox.index -1;
|
uint32_t phase = XdrvMailbox.index -1;
|
||||||
// Reset Energy Export Active
|
// 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];
|
Energy->Settings.energy_export_kWh[phase] = RtcEnergySettings.energy_export_kWh[phase];
|
||||||
if (params > 1) {
|
if (params > 1) {
|
||||||
Energy->Settings.energy_kWhtotal_time = values[1];
|
Energy->Settings.energy_kWhtotal_time = values[1];
|
||||||
@ -1018,9 +1023,9 @@ void CmndEnergyUsage(void) {
|
|||||||
uint32_t params = ParseParameters(2, values);
|
uint32_t params = ParseParameters(2, values);
|
||||||
if (params > 0) {
|
if (params > 0) {
|
||||||
// Reset energy_usage.usage totals
|
// 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) {
|
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[0] = RtcEnergySettings.energy_usage.usage_total_kWh[0];
|
||||||
Energy->Settings.energy_usage.usage_total_kWh[1] = RtcEnergySettings.energy_usage.usage_total_kWh[1];
|
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);
|
uint32_t params = ParseParameters(2, values);
|
||||||
if (params > 0) {
|
if (params > 0) {
|
||||||
// Reset energy_usage.return totals
|
// 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) {
|
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[0] = RtcEnergySettings.energy_usage.return_total_kWh[0];
|
||||||
Energy->Settings.energy_usage.return_total_kWh[1] = RtcEnergySettings.energy_usage.return_total_kWh[1];
|
Energy->Settings.energy_usage.return_total_kWh[1] = RtcEnergySettings.energy_usage.return_total_kWh[1];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user