Maximum Demand Electrical <INSTANT Workflow>

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)

// POST /api/max_demand/config

+---------------------+------------------+ | Period | Peak Demand (kW) | +---------------------+------------------+ | 2026-04-01 to 07 | 142.3 | | 2026-03-25 to 31 | 138.9 | +---------------------+------------------+ | Condition | Handling | |-----------|----------| | Power loss | Persist buffer & peak to EEPROM. On restart, wait for full window before reliable demand. | | Incomplete window at startup | Use partial window average with a flag. | | Meter rollover | Detect by comparing readings; adjust delta with max meter reading. | | Communication delay | Timestamp each reading; interpolate if needed. | 9. Sample API / Interface (for system integration) // GET /api/max_demand/current maximum demand electrical

For kVA demand (common for utilities), measure voltage and current, then: | | Meter rollover | Detect by comparing

# Store in circular buffer self.buffer[self.index] = delta_kwh self.index = (self.index + 1) % self.num_blocks Sample API / Interface (for system integration) //

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

| Priority | Load Type | Action at demand > limit | |----------|-----------|--------------------------| | 1 (low) | Water heater | Shed first | | 2 | HVAC – stage 2 | Shed second | | 3 (high) | Lighting, critical | Never shed | | Signal | Source | Use | |--------|--------|-----| | Energy pulses (kWh) | Utility meter / CT + energy IC | Calculate delta per sub‑interval | | Voltage, Current | Power quality meter | Compute kVA if PF varies | | Relay outputs | PLC / MCU | Load shedding control | | Real‑time clock | RTC / NTP | Timestamp peaks |