From 0a1e7fff25c6de91dffd68e0a2301830c786c18d Mon Sep 17 00:00:00 2001 From: openshwprojects <85486843+openshwprojects@users.noreply.github.com> Date: Wed, 7 Jan 2026 20:50:18 +0100 Subject: [PATCH] Energy cnt reset self test (#1938) * test * fx --- src/selftest/selftest_energyMeter.c | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/selftest/selftest_energyMeter.c b/src/selftest/selftest_energyMeter.c index 695e7e74f..045dfd393 100644 --- a/src/selftest/selftest_energyMeter.c +++ b/src/selftest/selftest_energyMeter.c @@ -493,7 +493,47 @@ void Test_EnergyMeter_Limits() { SELFTEST_ASSERT_HAD_MQTT_PUBLISH_FLOAT("powerDevice/power_apparent/get", 696.0f, false); } +void Test_EnergyMeter_ResetBug() { + SIM_ClearOBK(0); + SIM_ClearAndPrepareForMQTTTesting("miscDevice", "bekens"); + + PIN_SetPinRoleForPinIndex(9, IOR_Relay); + PIN_SetPinChannelForPinIndex(9, 1); + + CMD_ExecuteCommand("startDriver TESTPOWER", 0); + // 230V, 10A, 2300W, 50Hz + CMD_ExecuteCommand("SetupTestPower 230 10 2300 50 0", 0); + CMD_ExecuteCommand("SetupEnergyStats 1 60 60 0", 0); + + // Run for a while to accumulate energy + // 100 seconds at 2300W + // 2300W * 100s = 230,000 Joules + // 230,000 / 3600 = 63.88 Wh + Sim_RunSeconds(100, false); + + // Verify we have some energy + // $energy is in kWh for TOTAL + // 63.88 Wh = 0.06388 kWh + // So $energy is > 0.06 but < 0.07 + SELFTEST_ASSERT_EXPRESSION("$energy>0.06", 1); + SELFTEST_ASSERT_EXPRESSION("$energy<0.07", 1); + SELFTEST_ASSERT_EXPRESSION("$today>0.06", 1); + SELFTEST_ASSERT_EXPRESSION("$yesterday==0", 1); + + // reset with 0??? + CMD_ExecuteCommand("EnergyCntReset", 0); + + // Verify TOTAL is 0 + SELFTEST_ASSERT_EXPRESSION("$energycounter", 0); + + // Verify TODAY is 0 + SELFTEST_ASSERT_EXPRESSION("$today", 0); + SELFTEST_ASSERT_EXPRESSION("$yesterday", 0); + + SIM_ClearMQTTHistory(); +} void Test_EnergyMeter() { + Test_EnergyMeter_ResetBug(); Test_EnergyMeter_CSE7766(); #ifndef LINUX // TODO: fix on Linux