Add dynamic strategy addition for CB PF values

This commit is contained in:
2026-04-01 14:05:05 -05:00
committed by GitHub
parent 080b04f8f9
commit 86c6557c8d

View File

@@ -85,7 +85,9 @@ StandbyState<ModbusIP>::StandbyState() {
addStrategy("CB16_kW", new SingleValueStrategy(3.1F, 3.0f, 1000)); addStrategy("CB16_kW", new SingleValueStrategy(3.1F, 3.0f, 1000));
addStrategy("MainCB_PF", new SingleValueStrategy(0.9F, 0.05f, 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<ModbusIP>* StandbyState<ModbusIP>::update(Equipment<ModbusIP>* equipment)
setPointValue(equipment, "MainCB_L3_max_kW", mainCB_maxTotalKw); setPointValue(equipment, "MainCB_L3_max_kW", mainCB_maxTotalKw);
setPointValue(equipment, "MainCB_L3_max_current", mainCB_maxTotalCurrent); 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 // Apply any strategies defined for the standby state
_applyStrategies(equipment); _applyStrategies(equipment);
return nullptr; return nullptr;