Troubleshooting Guide¶
Common issues and solutions for the Heating Curve Optimizer integration.
Sensor Issues¶
All Sensors Unavailable¶
Symptoms: All 17 sensors show "unavailable" after installation
Causes:
- Integration not loaded properly
- Configuration incomplete
- First initialization in progress
Solutions:
- Go to Settings → Devices & Services
- Find Heating Curve Optimizer
- Verify status is "Configured" not "Error"
- If error, click to see details
First update can take 2-5 minutes. Be patient!
Outdoor Temperature Unavailable¶
Symptoms: sensor.heating_curve_optimizer_outdoor_temperature shows "unavailable"
Causes:
- No internet connectivity
- open-meteo.com API unreachable
- Invalid coordinates in Home Assistant
Solutions:
Check Internet
Check configuration:
# configuration.yaml - verify coordinates
homeassistant:
latitude: 52.0907 # Must be valid
longitude: 5.1214
Firewall: Ensure HA can reach open-meteo.com (port 443)
Logs to check:
ERROR custom_components.heating_curve_optimizer.sensor
Failed to fetch outdoor temperature: [SSL: CERTIFICATE_VERIFY_FAILED]
Solution: Update CA certificates on HA server
Heating Curve Offset Always Zero¶
Symptoms: Offset stays at 0°C, never changes
Causes:
- No price forecast: Optimization requires future prices
- Fixed pricing: All prices equal, no temporal optimization
- Configuration issue: Planning window or time base incorrect
Debug Steps:
Settings → Devices & Services → Heating Curve Optimizer → Configure
- Price sensor selected?
- Sensor has valid state?
Solutions:
| Cause | Solution |
|---|---|
| No price sensor configured | Add price sensor in configuration |
| Price sensor unavailable | Fix price integration |
| Price sensor has no forecast | Use different sensor or integration |
| Fixed pricing (intentional) | Accept limited optimization (COP only) |
Heat Buffer Always Zero¶
Symptoms: sensor.heating_curve_optimizer_heat_buffer never accumulates
Causes:
- No solar gain: Windows not configured or winter conditions
- High heat demand: Loss always exceeds gain
- Optimization not utilizing buffer: Configuration issue
Debug Steps:
Check solar gain sensor:
sensor.heating_curve_optimizer_window_solar_gain:
state: 0.0 # Check if this ever increases
attributes:
glass_south_m2: 0 # Problem: No windows configured!
solar_radiation: 450 # Radiation available but...
Check net heat loss:
sensor.heating_curve_optimizer_net_heat_loss:
state: 7.5 # Always positive = never excess solar
attributes:
heat_loss: 8.0
solar_gain: 0.5 # Too small to overcome loss
Solutions:
| Cause | Solution |
|---|---|
| Windows not configured | Add window areas in configuration |
| Wrong orientation | Check if windows actually face south/east/west |
| Winter period | Accept lower buffer (solar angle low) |
| Very cold weather | Buffer only works in mild conditions |
| Cloudy weather | Wait for sunny day |
Optimization Issues¶
High Electricity Costs Despite Optimization¶
Symptoms: Bills still high even with integration active
Reality Check:
Optimization reduces costs, doesn't eliminate them. Expected outcomes:
- Dynamic pricing: Higher cost reduction potential
- Fixed pricing: Lower cost reduction potential
- Cold weather: Limited optimization opportunities
- Mild weather: Better optimization opportunities
Debug Steps:
Critical: Are you actually applying the optimized offset?
# Check if this automation exists and is enabled
automation:
- alias: "Apply Heating Offset"
trigger:
- platform: state
entity_id: sensor.heating_curve_optimizer_heating_curve_offset
action:
- service: number.set_value
target:
entity_id: number.your_heat_pump_offset # YOUR HEAT PUMP
data:
value: "{{ states('sensor.heating_curve_optimizer_heating_curve_offset') }}"
If missing: Integration calculates optimal offset but you're not using it!
Track costs before/after:
sensor:
- platform: integration
source: sensor.heat_pump_power
name: "Heating Energy Total"
unit_time: h
Compare week-to-week:
| Week | Energy (kWh) | Avg Outdoor °C | Normalized kWh |
|---|---|---|---|
| Before | 420 | 5 | 420 / 5 = 84 |
| After | 380 | 7 | 380 / 7 = 54 |
Example calculation: Temperature-normalized comparison
Offset Changes Too Frequently¶
Symptoms: Offset changes every hour, seems unstable
Expected Behavior: Offset should change hourly (default time base)!
Acceptable: Changes of ±1°C per hour
Problem: Changes > ±1°C per hour (violates constraints)
Causes (if truly problematic):
- Price forecast changes drastically (bad data)
- Configuration error
- Bug in optimization
Debug:
# Check offset history
sensor.heating_curve_optimizer_heating_curve_offset:
history:
- time: 10:00, offset: 2
- time: 11:00, offset: 1 # OK: -1°C
- time: 12:00, offset: 0 # OK: -1°C
- time: 13:00, offset: -1 # OK: -1°C
Solutions:
- Increase time base: 60 → 120 minutes (slower changes)
- Check price sensor: Bad data causes instability
- Verify k-factor: Too low can cause aggressive swings
Limited Optimization in Cold Weather¶
Symptoms: Minimal cost reduction during winter
This is normal! See Cold Snap Example.
Why:
- Heat demand ≈ capacity (no optimization room)
- Low COP in cold (less efficiency gain)
- Minimal solar gain (short days, low angle)
Expected outcomes: - Extreme cold: Very limited optimization opportunities - Mild weather: Better optimization opportunities
Solution: Accept physics. Focus on annual average performance.
Configuration Issues¶
Invalid Energy Label¶
Symptoms: Sensor unavailable, log shows "Invalid energy label"
Cause: Typo in configuration
Valid labels: A+++, A++, A+, A, B, C, D, E, F, G
Solution: Reconfigure with correct label
COP Seems Wrong¶
Symptoms: COP values don't match heat pump datasheet
Debug:
sensor.heating_curve_optimizer_quadratic_cop:
state: 3.45
attributes:
base_cop: 3.8
k_factor: 0.028
compensation_factor: 0.90
outdoor_temp: 5.0
supply_temp: 40.0
# Calculated: (3.8 + 0.025*5 - 0.028*(40-35)) * 0.90
# = (3.8 + 0.125 - 0.14) * 0.90
# = 3.785 * 0.90 = 3.41 ≈ 3.45 ✓
Calibration:
- Find datasheet COP at A7/W35 → base_cop
- Measure or estimate k-factor (0.025-0.035 typical)
- Measure actual system efficiency → adjust compensation
Example:
- Datasheet: COP 4.2 at A7/W35
- Measured: System COP 3.8 (including pumps, losses)
- Compensation: 3.8 / 4.2 = 0.90
Performance Issues¶
Slow Updates¶
Symptoms: Sensors take minutes to update
Causes:
- Large planning window (24 hours)
- Small time base (15 minutes)
- Slow API responses
Solutions:
| Change | Impact |
|---|---|
| Planning window: 24h → 6h | 4× faster |
| Time base: 15min → 60min | 16× faster |
| Disable unused sensors | Marginal improvement |
Acceptable update times:
- 6h window, 60min base: 0.3-0.8 seconds
- 12h window, 30min base: 2-4 seconds
- 24h window, 15min base: 10-20 seconds
Integration Causes HA Slowdown¶
Symptoms: Home Assistant sluggish after installing integration
Unlikely: Integration is lightweight.
Check:
- Logs for errors: Repeated errors can cause slowdown
- API rate limiting: open-meteo.com calls (should be cached)
- Database size: Large history on 17 sensors
Solutions:
# Exclude sensors from recorder to reduce DB size
recorder:
exclude:
entities:
- sensor.heating_curve_optimizer_diagnostics
- sensor.heating_curve_optimizer_energy_price_level
API & Network Issues¶
Open-Meteo API Failures¶
Symptoms: Outdoor temperature unavailable, log shows HTTP errors
Causes:
- Internet connectivity issue
- Firewall blocking API
- API rate limit (unlikely, free tier is generous)
- API maintenance (rare)
Solutions:
Allow outbound HTTPS (port 443) to api.open-meteo.com
Integration automatically retries failed requests (3 attempts).
If persistent failures: - Check HA server internet - Verify DNS resolution - Check proxy settings (if any)
Price Sensor Not Updating¶
Symptoms: Optimization stale because price sensor stuck
This is not an integration issue! Fix your price sensor.
Common price integrations:
- Nordpool: Prices update ~13:00 CET for next day
- ENTSO-E: Similar schedule
- Fixed price: No updates (expected)
Check:
# Developer Tools → States
sensor.nordpool_kwh_nl_eur_3_10_0:
last_updated: "2025-11-15T13:05:00" # Should be recent
Advanced Debugging¶
Enable Debug Logging¶
Restart HA, then check logs:
DEBUG Optimization completed in 450ms, states explored: 48200
DEBUG Price forecast: [0.25, 0.28, 0.35, 0.32, 0.28, 0.22]
DEBUG Demand forecast: [7.0, 6.5, 5.2, 3.8, 4.5, 5.8]
DEBUG Optimal offsets: [2, 1, 0, -1, 0, 1]
DEBUG Buffer evolution: [0, 1.2, 2.5, 2.1, 0.8, 0]
Diagnostics Download¶
- Settings → Devices & Services
- Heating Curve Optimizer → (⋯) → Download Diagnostics
- Examine JSON file for configuration and state
Check State Restoration¶
After HA restart, buffer and offsets should restore:
sensor.heating_curve_optimizer_heat_buffer:
restored: true
last_state: 3.2 # Should match pre-restart value
Getting Help¶
Before Asking¶
- ✓ Read this troubleshooting guide
- ✓ Check logs for errors
- ✓ Download diagnostics
- ✓ Verify configuration
Where to Ask¶
- GitHub Issues: Report bugs
- Home Assistant Community: General questions
- Discord: Real-time help (if available)
Include This Information¶
**Integration Version**: 1.0.2
**Home Assistant Version**: 2024.11.1
**Installation Method**: HACS / Manual
**Issue**: Brief description
**Symptoms**: What's happening
**Expected**: What should happen
**Logs**: (paste relevant errors)
**Configuration**:
- Area: 150 m²
- Energy Label: C
- Heat Pump: Brand X, Model Y
- Price Sensor: sensor.nordpool_kwh_nl_eur_3_10_0
**Diagnostics**: (attach JSON file)
Known Limitations¶
Not Bugs (Working as Designed)¶
- No optimization without price forecast: Integration requires future prices for temporal shifting
- Limited savings in extreme cold: Physics limits optimization when at capacity
- Buffer limited by thermal mass: Cannot store infinite heat
- Update latency: 60-minute time base means hourly updates (configurable)
- Weather forecast dependency: Accuracy depends on open-meteo.com
Feature Requests¶
See GitHub Issues for planned features and roadmap.
Still stuck? Open an issue with details!