mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 03:06:33 +00:00
(Try to) fix EnergyReset (again)
(Try to) fix EnergyReset (again) (#6561)
This commit is contained in:
parent
ad73a51023
commit
37c2239d61
@ -30,6 +30,8 @@
|
||||
|
||||
#define XNRG_03 3
|
||||
|
||||
const uint32_t PZEM_STABILIZE = 30; // Number of seconds to stabilize configuration
|
||||
|
||||
#include <TasmotaSerial.h>
|
||||
|
||||
TasmotaSerial *PzemSerial = nullptr;
|
||||
@ -192,7 +194,9 @@ void PzemEvery250ms(void)
|
||||
Pzem.energy += value;
|
||||
if (Pzem.phase == Energy.phase_count -1) {
|
||||
if (Pzem.energy > Pzem.last_energy) { // Handle missed phase
|
||||
EnergyUpdateTotal(Pzem.energy, false);
|
||||
if (uptime > PZEM_STABILIZE) {
|
||||
EnergyUpdateTotal(Pzem.energy, false);
|
||||
}
|
||||
Pzem.last_energy = Pzem.energy;
|
||||
}
|
||||
Pzem.energy = 0;
|
||||
@ -228,7 +232,7 @@ void PzemEvery250ms(void)
|
||||
}
|
||||
else {
|
||||
Pzem.send_retry--;
|
||||
if ((Energy.phase_count > 1) && (0 == Pzem.send_retry) && (uptime < 30)) {
|
||||
if ((Energy.phase_count > 1) && (0 == Pzem.send_retry) && (uptime < PZEM_STABILIZE)) {
|
||||
Energy.phase_count--; // Decrement phases if no response after retry within 30 seconds after restart
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,8 @@
|
||||
|
||||
#define XNRG_05 5
|
||||
|
||||
#define PZEM_AC_DEVICE_ADDRESS 0x01 // PZEM default address
|
||||
const uint8_t PZEM_AC_DEVICE_ADDRESS = 0x01; // PZEM default address
|
||||
const uint32_t PZEM_AC_STABILIZE = 30; // Number of seconds to stabilize configuration
|
||||
|
||||
#include <TasmotaModbus.h>
|
||||
TasmotaModbus *PzemAcModbus;
|
||||
@ -79,7 +80,9 @@ void PzemAcEverySecond(void)
|
||||
PzemAc.energy += (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh
|
||||
if (PzemAc.phase == Energy.phase_count -1) {
|
||||
if (PzemAc.energy > PzemAc.last_energy) { // Handle missed phase
|
||||
EnergyUpdateTotal(PzemAc.energy, false);
|
||||
if (uptime > PZEM_AC_STABILIZE) {
|
||||
EnergyUpdateTotal(PzemAc.energy, false);
|
||||
}
|
||||
PzemAc.last_energy = PzemAc.energy;
|
||||
}
|
||||
PzemAc.energy = 0;
|
||||
@ -105,7 +108,7 @@ void PzemAcEverySecond(void)
|
||||
}
|
||||
else {
|
||||
PzemAc.send_retry--;
|
||||
if ((Energy.phase_count > 1) && (0 == PzemAc.send_retry) && (uptime < 30)) {
|
||||
if ((Energy.phase_count > 1) && (0 == PzemAc.send_retry) && (uptime < PZEM_AC_STABILIZE)) {
|
||||
Energy.phase_count--; // Decrement phases if no response after retry within 30 seconds after restart
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,8 @@
|
||||
|
||||
#define XNRG_06 6
|
||||
|
||||
#define PZEM_DC_DEVICE_ADDRESS 0x01 // PZEM default address
|
||||
const uint8_t PZEM_DC_DEVICE_ADDRESS = 0x01; // PZEM default address
|
||||
const uint32_t PZEM_DC_STABILIZE = 30; // Number of seconds to stabilize configuration
|
||||
|
||||
#include <TasmotaModbus.h>
|
||||
TasmotaModbus *PzemDcModbus;
|
||||
@ -77,7 +78,9 @@ void PzemDcEverySecond(void)
|
||||
PzemDc.energy += (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh
|
||||
if (PzemDc.channel == Energy.phase_count -1) {
|
||||
if (PzemDc.energy > PzemDc.last_energy) { // Handle missed channel
|
||||
EnergyUpdateTotal(PzemDc.energy, false);
|
||||
if (uptime > PZEM_DC_STABILIZE) {
|
||||
EnergyUpdateTotal(PzemDc.energy, false);
|
||||
}
|
||||
PzemDc.last_energy = PzemDc.energy;
|
||||
}
|
||||
PzemDc.energy = 0;
|
||||
@ -102,7 +105,7 @@ void PzemDcEverySecond(void)
|
||||
}
|
||||
else {
|
||||
PzemDc.send_retry--;
|
||||
if ((Energy.phase_count > 1) && (0 == PzemDc.send_retry) && (uptime < 30)) {
|
||||
if ((Energy.phase_count > 1) && (0 == PzemDc.send_retry) && (uptime < PZEM_DC_STABILIZE)) {
|
||||
Energy.phase_count--; // Decrement channels if no response after retry within 30 seconds after restart
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user