Overview
The optimization engine automatically controls up to 3 switchable loads based on available surplus solar power and grid import levels. It uses priority-based decision making with sophisticated anti-flapping mechanisms to prevent rapid on/off cycling.Optimization can be enabled/disabled at runtime without restarting Home Assistant.
Load Configuration
Each load slot supports the following configuration parameters:Load Slots
Load 1
Load 1
Configuration Keys (const.py:16-20):
load_1_entity: Switch entity IDload_1_min_surplus_w: Minimum surplus power required (default: 1200W)load_1_min_on_time_min: Minimum minutes to stay on (default: 10)load_1_cooldown_min: Minimum minutes between cycles (default: 10)load_1_priority: Priority level (default: 1, lowest first)
Load 2
Load 2
Configuration Keys (const.py:21-25):
load_2_entity: Switch entity IDload_2_min_surplus_w: Minimum surplus power required (default: 1200W)load_2_min_on_time_min: Minimum minutes to stay on (default: 10)load_2_cooldown_min: Minimum minutes between cycles (default: 10)load_2_priority: Priority level (default: 2)
Load 3
Load 3
Configuration Keys (const.py:26-30):
load_3_entity: Switch entity IDload_3_min_surplus_w: Minimum surplus power required (default: 1200W)load_3_min_on_time_min: Minimum minutes to stay on (default: 10)load_3_cooldown_min: Minimum minutes between cycles (default: 10)load_3_priority: Priority level (default: 3)
LoadConfig Data Structure
Definition (engine.py:9-18):Runtime State Tracking
The coordinator maintains runtime state for each configured load:LoadRuntime Data Structure
Definition (engine.py:20-27):The coordinator tracks
last_on and last_off timestamps in memory (coordinator.py:75-76).Decision Engine
The optimization engine makes one decision per update cycle, choosing between turning loads on or off based on the configured strategy.Turn On Decision
Function Signature (engine.py:50-58):Check Export Duration
Only proceed if exporting power for at least
min_surplus_duration_min (default: 10 minutes)Turn Off Decision
Function Signature (engine.py:80-89):Check Import Conditions
Only proceed if:
- Importing >
import_threshold_w(default: 800W) - Importing for at least
duration_threshold_min(default: 10 minutes)
Anti-Flapping Protection
Two mechanisms prevent rapid cycling:Minimum On Time
Check Function (engine.py:44-47):Purpose
Prevents turning OFF a load that was recently turned ON. Ensures loads run for at least
min_on_time_min minutes before being eligible for shutdown.Cooldown Period
Check Function (engine.py:38-41):Purpose
Prevents turning ON a load that was recently turned OFF. Ensures at least
cooldown_min minutes pass between cycles to protect equipment.Optimization Strategies
The system supports two primary strategies that control decision priority:Maximize Self-Consumption (Default)
Constant (const.py:37, 43):Prioritizes turning loads ON when surplus is available. Only turns loads OFF if no loads can be turned ON.
Avoid Grid Import
Constant (const.py:44):Prioritizes turning loads OFF when importing from grid. Only turns loads ON if no loads can be turned OFF.
Action Execution
When the engine returns an action, the coordinator executes it: Execution Logic (coordinator.py:309-327):Last Action Tracking
Last Action Sensor
- Icon:
mdi:clipboard-text-clock-outline - Key:
last_action
Runtime Control
Optimization can be toggled at runtime using the switch entity or select entity:Enable/Disable
Coordinator Method (coordinator.py:133-138):Change Strategy
Coordinator Method (coordinator.py:140-143):Example Configuration
Priority Behavior
With this configuration:
- Water heater turns on first (priority 1) when 2000W surplus available
- Pool pump turns on second (priority 2) when 1500W surplus available
- EV charger turns on last (priority 3) when 2500W surplus available
- When importing, EV charger turns off first (highest priority number)
Load Configuration Reading
Loading Logic (coordinator.py:329-371):Only loads with a configured
entity_id are loaded. Empty slots are automatically skipped.Next Steps
Energy Monitoring
Understand the sensor data driving optimization
Alerts
Configure notifications for energy events
Configuration
Set up load entities and thresholds
Strategies
Learn about optimization strategies