From 86c6557c8d45a2c6dbca36f37406812f99f88336 Mon Sep 17 00:00:00 2001 From: zggutierrez96 Date: Wed, 1 Apr 2026 14:05:05 -0500 Subject: [PATCH] Add dynamic strategy addition for CB PF values --- src/EPMS/RPP/RPP_Cortex_TCP/State_Standby.cpp | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/EPMS/RPP/RPP_Cortex_TCP/State_Standby.cpp b/src/EPMS/RPP/RPP_Cortex_TCP/State_Standby.cpp index cf74d5b..04fbc13 100644 --- a/src/EPMS/RPP/RPP_Cortex_TCP/State_Standby.cpp +++ b/src/EPMS/RPP/RPP_Cortex_TCP/State_Standby.cpp @@ -85,7 +85,9 @@ StandbyState::StandbyState() { addStrategy("CB16_kW", new SingleValueStrategy(3.1F, 3.0f, 1000)); addStrategy("MainCB_PF", new SingleValueStrategy(0.9F, 0.05f, 1000)); - + for (int i = 1; i <= 8; i++) { + addStrategy("CB" + std::to_string(i) + "_PF", new SingleValueStrategy(0.9F, 0.05f, 1000)); + } } /** @@ -193,7 +195,21 @@ State* StandbyState::update(Equipment* equipment) setPointValue(equipment, "MainCB_L3_max_kW", mainCB_maxTotalKw); setPointValue(equipment, "MainCB_L3_max_current", mainCB_maxTotalCurrent); - + static unsigned long lastMillis = millis(); + unsigned long now = millis(); + float dt_hours = (now - lastMillis) / 3600000.0f; + lastMillis = now; + + for (int i = 1; i <= 8; i++) { + std::string kw_name = "CB" + std::to_string(i) + "_kW"; + std::string total_name = "CB" + std::to_string(i) + "_TotalKW"; + std::string pf_name = "CB" + std::to_string(i) + "_PF"; + + float kw = getPointValue(equipment, kw_name.c_str()); + float accumulated = getPointValue(equipment, total_name.c_str()); + setPointValue(equipment, total_name.c_str(), accumulated + kw * dt_hours); + setPointValue(equipment, pf_name.c_str(), getPointValue(equipment, pf_name.c_str())); + } // Apply any strategies defined for the standby state _applyStrategies(equipment); return nullptr;