From cb8963a7bff8463f061e6435bd07a2d1409f8cd0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 6 Jan 2019 12:29:38 +0100 Subject: [PATCH] 6.4.1.7 Fix regression energy sensors 6.4.1.7 20190106 * Fix HLW8012, HJL01 and BL0937 based energy sensors low Power (below 10W) measurement regression from 6.4.1.6 --- sonoff/_changelog.ino | 5 ++++- sonoff/sonoff_version.h | 2 +- sonoff/xnrg_01_hlw8012.ino | 16 +++++----------- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 99a637454..7da32cbe1 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,7 @@ -/* 6.4.1.6 20190105 +/* 6.4.1.7 20190106 + * Fix HLW8012, HJL01 and BL0937 based energy sensors low Power (below 10W) measurement regression from 6.4.1.6 + * + * 6.4.1.6 20190105 * Add commands PowerCal, VoltageCal and CurrentCal for HLW8012, HJL01 and BL0937 based energy sensors * * 6.4.1.5 20190103 diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 4d8bc85e1..56193708d 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,7 +20,7 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -#define VERSION 0x06040106 +#define VERSION 0x06040107 #define D_PROGRAMNAME "Sonoff-Tasmota" #define D_AUTHOR "Theo Arends" diff --git a/sonoff/xnrg_01_hlw8012.ino b/sonoff/xnrg_01_hlw8012.ino index bf2ba5e68..305b1cab8 100644 --- a/sonoff/xnrg_01_hlw8012.ino +++ b/sonoff/xnrg_01_hlw8012.ino @@ -47,8 +47,6 @@ byte hlw_load_off; byte hlw_cf1_timer; unsigned long hlw_cf_pulse_length; unsigned long hlw_cf_pulse_last_time; -unsigned long hlw_cf_summed_pulse_length; -unsigned long hlw_cf_pulse_counter; unsigned long hlw_cf_power_pulse_length; unsigned long hlw_cf1_pulse_length; @@ -84,10 +82,6 @@ void HlwCfInterrupt(void) // Service Power } else { hlw_cf_pulse_length = us - hlw_cf_pulse_last_time; hlw_cf_pulse_last_time = us; - - hlw_cf_summed_pulse_length += hlw_cf_pulse_length; - hlw_cf_pulse_counter++; - hlw_energy_period_counter++; } } @@ -119,20 +113,19 @@ void HlwEvery200ms(void) unsigned long hlw_u = 0; unsigned long hlw_i = 0; + if (micros() - hlw_cf_pulse_last_time > (HLW_POWER_PROBE_TIME * 1000000)) { - hlw_cf_pulse_counter = 0; // No load for some time + hlw_cf_pulse_length = 0; // No load for some time hlw_load_off = 1; } + hlw_cf_power_pulse_length = hlw_cf_pulse_length; - if (hlw_cf_pulse_counter && energy_power_on && !hlw_load_off) { - hlw_cf_power_pulse_length = hlw_cf_summed_pulse_length / hlw_cf_pulse_counter; + if (hlw_cf_power_pulse_length && energy_power_on && !hlw_load_off) { hlw_w = (hlw_power_ratio * Settings.energy_power_calibration) / hlw_cf_power_pulse_length; energy_active_power = (float)hlw_w / 10; } else { energy_active_power = 0; } - hlw_cf_summed_pulse_length = 0; - hlw_cf_pulse_counter = 0; hlw_cf1_timer++; if (hlw_cf1_timer >= 8) { @@ -224,6 +217,7 @@ void HlwSnsInit(void) hlw_current_ratio = HLW_IREF; } + hlw_cf_pulse_length = 0; hlw_cf_pulse_last_time = 0; hlw_cf_power_pulse_length = 0; hlw_cf1_pulse_length = 0;