Skip to content

def demand_control(self, demand_kw, limit_kw): if demand_kw >= limit_kw: self.shed_level(2) # shed all non‑critical loads elif demand_kw >= limit_kw * 0.95: self.shed_level(1) # shed first stage loads elif demand_kw < limit_kw * 0.85: self.restore_level(1) if demand_kw < limit_kw * 0.70: self.restore_level(2)

For kVA demand (common for utilities), measure voltage and current, then:

Two‑stage shedding + restoration.

"limit_kw": 160.0, "warning_threshold_pct": 85, "window_minutes": 15, "auto_reset_peak_on": "monthly"

# Calculate total kWh in complete window total_kwh = sum(self.buffer) demand_kw = total_kwh / (self.window_size / 60.0)

return demand_kw When demand approaches limit, shed non‑critical loads.

# Update peak if demand_kw > self.peak_demand_kw: self.peak_demand_kw = demand_kw self.peak_timestamp = now_timestamp