mirror of
https://github.com/nekorevend/esphome-emporia-vue-utility.git
synced 2026-01-08 20:40:39 -07:00
Fix handling negative net watt-hours.
This commit is contained in:
@@ -435,7 +435,7 @@ class EmporiaVueUtility : public Component, public UARTDevice {
|
||||
uint32_t returned;
|
||||
static uint32_t prev_consumed;
|
||||
static uint32_t prev_returned;
|
||||
uint32_t net = 0;
|
||||
int32_t net = 0;
|
||||
|
||||
consumed = mr->import_wh;
|
||||
if (consumed == 4194304) {
|
||||
@@ -465,7 +465,7 @@ class EmporiaVueUtility : public Component, public UARTDevice {
|
||||
// Initialized
|
||||
uint32_t consumed_diff = consumed - prev_consumed;
|
||||
uint32_t returned_diff = returned - prev_returned;
|
||||
net = consumed_diff - returned_diff;
|
||||
net = int32_t(consumed_diff) - int32_t(returned_diff);
|
||||
kWh_net->publish_state(float(net) / 1000.0);
|
||||
}
|
||||
prev_consumed = consumed;
|
||||
@@ -522,7 +522,7 @@ class EmporiaVueUtility : public Component, public UARTDevice {
|
||||
/*
|
||||
* Read the instant watts value.
|
||||
*
|
||||
* For MGM version 7
|
||||
* For MGM version 7 and 8
|
||||
*/
|
||||
float parse_meter_watts_v7(int32_t watts) {
|
||||
// Read the instant watts value
|
||||
@@ -732,6 +732,12 @@ class EmporiaVueUtility : public Component, public UARTDevice {
|
||||
pos = 0;
|
||||
}
|
||||
|
||||
if (mgm_firmware_ver < 1) {
|
||||
// Something's wrong, do the startup sequence again.
|
||||
startup_step = 0;
|
||||
send_version_req();
|
||||
}
|
||||
|
||||
if (now >= next_meter_request) {
|
||||
|
||||
// Handle initial startup delay
|
||||
|
||||
Reference in New Issue
Block a user