Available Strategies
The integration provides three strategies defined inconst.py:43-50:
maximize_self_consumption(default)avoid_grid_importbalanced
Strategy Behaviors
Maximize Self Consumption
Goal: Prioritize using available solar surplus before worrying about grid import. Decision Order:- Turn ON loads when surplus is sustained
- Turn OFF loads when grid import is sustained
- You want to maximize usage of your solar production
- Your priority is avoiding export to the grid
- You’re comfortable with occasional grid import if solar isn’t sufficient
- You want to heat water, charge batteries, or run high-consumption devices during peak solar hours
Avoid Grid Import
Goal: Minimize grid import by turning off loads first. Decision Order:- Turn OFF loads when grid import is sustained
- Turn ON loads when surplus is sustained
- You want to minimize electricity costs
- Peak demand charges make grid import expensive
- You’re on a time-of-use rate and want to avoid importing during peak hours
- Battery capacity is limited and you want to preserve it
coordinator.py:274-290, the avoid_grid_import strategy checks turn-off conditions first:
Balanced
Goal: Balance between maximizing self-consumption and avoiding grid import. Decision Order: Same asmaximize_self_consumption (turn on first, then turn off).
In the current implementation (v0.1.x),
balanced behaves identically to maximize_self_consumption. Future versions may add distinct balancing logic.- You want the default behavior
- You’re not sure which strategy fits your needs
- You want to experiment before committing to a specific strategy
How Strategies Affect Decisions
Turn-On Decision Logic
Fromoptimization/engine.py:50-77, loads turn ON when:
Sustained surplus exists
export_duration_min >= min_surplus_duration_minDefault: 10 minutes of continuous exportTurn-Off Decision Logic
Fromoptimization/engine.py:80-108, loads turn OFF when:
Changing Strategies at Runtime
Using the UI
Use the strategy selector
Find
select.energy_control_pro_strategy and choose:- Maximize Self Consumption
- Avoid Grid Import
- Balanced
Using Automations
You can change strategies dynamically based on conditions:Strategy Configuration
Default Strategy
Set inconst.py:37:
- Creating a new integration instance
- No strategy has been selected
- Configuration is reset
Configuring Initial Strategy
During initial setup
When adding the integration, select your preferred strategy from the Strategy dropdown.
Priority System Interaction
All strategies respect load priority settings:Priority Values
- Priority 1: Highest priority (turns ON first, turns OFF last)
- Priority 2: Medium priority
- Priority 3: Lowest priority (turns ON last, turns OFF first)
Example Configuration
- Water heater (priority 1, needs 1200W)
- Pool pump (priority 2, needs 800W)
- EV charger (priority 3, needs 2000W)
- EV charger (priority 3) turns off first
- Pool pump (priority 2) turns off second
- Water heater (priority 1) turns off last
Anti-Flapping Protections
All strategies include built-in protections fromconst.py:39-41:
- Minimum on-time: 10 minutes (default)
- Prevents turning off loads too quickly after turning them on
- Cooldown: 10 minutes (default)
- Prevents turning on loads too quickly after turning them off
- Duration threshold: 10 minutes (default)
- Requires sustained conditions before taking action
Monitoring Strategy Performance
Track strategy effectiveness using:-
sensor.energy_control_pro_last_action: Shows the most recent optimization decision- Example:
"Turned ON switch.boiler (surplus 1100W for 10 min)"
- Example:
-
Integration logs: Check
Settings → System → Logsand filter forenergy_control_pro- Look for:
"Optimization action: Turned ON/OFF <entity_id> (<reason>)"
- Look for:
-
Energy state sensors:
sensor.energy_control_pro_energy_statesensor.energy_control_pro_import_duration_minsensor.energy_control_pro_export_duration_min
Best Practices
Test in simulation mode first
Use simulation profiles to understand how each strategy behaves before connecting real loads.
Adjust thresholds before changing strategies
Often, tuning
import_threshold_w and export_threshold_w is more effective than switching strategies.Use avoid_grid_import for cost optimization
If you have time-of-use rates or demand charges, this strategy can reduce bills.
Next Steps
- Configure load entities with appropriate priority and thresholds
- Set up the dashboard to visualize optimization decisions
- Review troubleshooting if strategies aren’t behaving as expected