Describe the bug
After auto-update from v8.39.3 to v8.39.4, every Predbat cycle produces three repeating warnings:
Warn: Cannot find battery charge curve (no full rate charge curve found for battery to full), one of the required settings for soc_kwh, charge_rate, battery_power and predbat.status do not have history, check apps.yaml
Warn: Cannot find battery discharge curve (no full rate discharge curve found for battery to empty), one of the required settings for soc_kwh, discharge_rate, battery_power and predbat.status do not have history, check apps.yaml
Warn: Calculate yesterday: No soc_kw_h0 data for yesterday
Operational consequences:
predbat.savings_yesterday_predbat, cost_yesterday, cost_yesterday_car, cost_yesterday_import, cost_yesterday_export all in unavailable state in HA (entity registry restored vs v8.39.3 where they 404'd entirely — partial improvement from v8.39.4 vs v8.39.3, but values never populate).
predbat.savings_total_predbat, savings_total_pvbat, savings_total_actual cumulatives no longer increment. Last state-value change: 2026-05-16T17:24 UTC, right around v8.39.4 install time.
- Forward-projection (
cost_today, compare_tariff_*, plan computation) all healthy. Predbat continues to produce plans and control the inverter.
binary_sensor.predbat_components_healthy = on, error_count = 0, ha_history = "running" — Predbat's self-monitoring doesn't reflect the cascade failure.
Suspected root cause: the new battery-degradation calculation logic in v8.39.4 (PRs #3926, #3932) appears to require evidence of a clean "charge to full at maximum rate" event in the recent history window for curve derivation. With realistic per-slot Predbat planning (targets driven by cost optimisation — e.g. today's plan target is 71%), the battery is rarely if ever driven from a low SOC to 100% at max rate in real operation, so the curve-fitter rejects valid 8-day history. The same soc_kwh history validation appears to gate Calculate yesterday, cascading into the stuck _yesterday_* family and frozen cumulatives.
Manual addon restart (2026-05-17 14:33 UTC) did NOT clear the warnings.
Expected behaviour
predbat.savings_yesterday_predbat and the cost_yesterday_* family populate with values after each midnight roll-up.
predbat.savings_total_predbat / savings_total_pvbat / savings_total_actual continue to increment daily.
- Charge/discharge curve fitter accepts partial-cycle history data when full-cycle data isn't available, or falls back gracefully without warning every cycle.
binary_sensor.predbat_components_healthy reflects validation failures (not just connection failures) so the cascade is visible to monitoring automations.
Predbat version
v8.39.4 (verified via predbat.status.version; addon wrapper v1.7.1)
Environment details
- Inverter and battery setup: GivEnergy ED2248G523 hybrid inverter, 9.52 kWh battery (single inverter,
num_inverters: 1); controlled via GivTCP REST API
- Standard HAOS installer or Docker: HA OS Green (HAOS), HA Core 2026.5.0
- Anything else:
- Tariff: Octopus Flux (peak 16:00–19:00 @ 28.15p, off-peak 21.11p)
num_cars: 0 — EV (Hyundai IONIQ 5 via Ohme Home Pro) is grid-direct and invisible to the inverter's CT clamp; HA controls Ohme charging independently
- Predbat mode: Control charge & discharge
- 8 days of HA recorder history available (
recorder.purge_keep_days: 10)
- Solcast cloud forecast input; no Forecast.Solar
- Ohme cloud credentials commented out in apps.yaml (
ohme_login/ohme_password)
predbat_pv_scaling: 0.78, predbat_pv_metric10_weight: 0.30 (non-default — calibrated to local Solcast over-prediction baseline)
predbat_set_reserve_min: 4 (95% usable battery, structural Flux choice)
Screenshots
[To attach before posting: predbat HTML plan tile + Predbat config screen + battery SOC chart for past 8 days showing partial-cycle charging pattern]
Log file
[To attach: predbat.log captured after the 2026-05-17 14:33 UTC manual restart — covers multiple cycles all reproducing the three warnings.]
Key log lines from the post-restart cycle at 15:33 BST 2026-05-17:
15:33:02 — Inverter 0 SoC: 5.33kW 56%, current charge rate 3600W, current discharge rate 200W, current battery power -3464W
15:33:02 — Looking for charge curve with sensors sensor.ed2248g523_soc_kwh, number.ed2248g523_battery_charge_rate, predbat.status and sensor.ed2248g523_battery_power
15:33:12 — Looking for charge curve, have found 8.0 days of history data, max days 8
15:33:12 — Warn: Cannot find battery charge curve (no full rate charge curve found for battery to full)…
15:33:18 — Calculating data from yesterday for savings calculation
15:33:18 — Yesterday basic charge window best: [{'start': 0, 'end': 960, 'average': 0.21}, {'start': 1140, 'end': 2370, 'average': 0.21}] charge limit best: [9.52, 9.52] based on max charge slots 1
15:33:18 — Warn: Calculate yesterday: No soc_kw_h0 data for yesterday
REST data path is healthy; HA history path returns 8 days of data but the new validation logic rejects it.
Predbat debug yaml file
[To attach: predbat_debug.yaml captured per the Web UI Dash tab instructions, renamed to predbat_debug.yaml.txt.]
predbat.log
predbat_debug.yaml.txt

Describe the bug
After auto-update from v8.39.3 to v8.39.4, every Predbat cycle produces three repeating warnings:
Operational consequences:
predbat.savings_yesterday_predbat,cost_yesterday,cost_yesterday_car,cost_yesterday_import,cost_yesterday_exportall inunavailablestate in HA (entity registry restored vs v8.39.3 where they 404'd entirely — partial improvement from v8.39.4 vs v8.39.3, but values never populate).predbat.savings_total_predbat,savings_total_pvbat,savings_total_actualcumulatives no longer increment. Last state-value change: 2026-05-16T17:24 UTC, right around v8.39.4 install time.cost_today,compare_tariff_*, plan computation) all healthy. Predbat continues to produce plans and control the inverter.binary_sensor.predbat_components_healthy = on,error_count = 0,ha_history = "running"— Predbat's self-monitoring doesn't reflect the cascade failure.Suspected root cause: the new battery-degradation calculation logic in v8.39.4 (PRs #3926, #3932) appears to require evidence of a clean "charge to full at maximum rate" event in the recent history window for curve derivation. With realistic per-slot Predbat planning (targets driven by cost optimisation — e.g. today's plan target is 71%), the battery is rarely if ever driven from a low SOC to 100% at max rate in real operation, so the curve-fitter rejects valid 8-day history. The same
soc_kwhhistory validation appears to gateCalculate yesterday, cascading into the stuck_yesterday_*family and frozen cumulatives.Manual addon restart (2026-05-17 14:33 UTC) did NOT clear the warnings.
Expected behaviour
predbat.savings_yesterday_predbatand thecost_yesterday_*family populate with values after each midnight roll-up.predbat.savings_total_predbat/savings_total_pvbat/savings_total_actualcontinue to increment daily.binary_sensor.predbat_components_healthyreflects validation failures (not just connection failures) so the cascade is visible to monitoring automations.Predbat version
v8.39.4 (verified via
predbat.status.version; addon wrapper v1.7.1)Environment details
num_inverters: 1); controlled via GivTCP REST APInum_cars: 0— EV (Hyundai IONIQ 5 via Ohme Home Pro) is grid-direct and invisible to the inverter's CT clamp; HA controls Ohme charging independentlyrecorder.purge_keep_days: 10)ohme_login/ohme_password)predbat_pv_scaling: 0.78,predbat_pv_metric10_weight: 0.30(non-default — calibrated to local Solcast over-prediction baseline)predbat_set_reserve_min: 4(95% usable battery, structural Flux choice)Screenshots
[To attach before posting: predbat HTML plan tile + Predbat config screen + battery SOC chart for past 8 days showing partial-cycle charging pattern]
Log file
[To attach:
predbat.logcaptured after the 2026-05-17 14:33 UTC manual restart — covers multiple cycles all reproducing the three warnings.]Key log lines from the post-restart cycle at 15:33 BST 2026-05-17:
REST data path is healthy; HA history path returns 8 days of data but the new validation logic rejects it.
Predbat debug yaml file
[To attach:
predbat_debug.yamlcaptured per the Web UI Dash tab instructions, renamed topredbat_debug.yaml.txt.]predbat.log
predbat_debug.yaml.txt