Skip to content

IOG future planned dispatches treated as cheap home rate before EV charging earns the slot #4516

Description

@PlainSeer

Summary

With native Intelligent Octopus charging enabled, PredBat appears to treat a future planned daytime IOG dispatch as a guaranteed cheap home-electricity period before any EV charging has actually occurred.

On the current Intelligent Octopus Go tariff behaviour, this is unsafe for home-battery planning because daytime dispatches are provisional and can be moved or removed by Octopus. The cheap home rate is only actually earned when the EV charges in the relevant half-hour.

I reproduced a case where PredBat could see a future daytime planned dispatch, marked that future half-hour cheap, and altered the battery plan around it. Octopus then moved the planned session before it occurred. This means PredBat can potentially force-export the home battery in anticipation of a cheap recharge opportunity that subsequently disappears.

Reproduction

Setup:

  • Intelligent Octopus Go
  • EV charging controlled by Octopus through a Hypervolt charger
  • PredBat native Intelligent Charging enabled with switch.predbat_octopus_intelligent_charging
  • PredBat has access to the Intelligent Octopus planned dispatch entity and EV SoC/charge requirement

Observed sequence:

  1. Octopus creates a future daytime planned dispatch.
  2. The EV is not charging yet and has not charged during that future half-hour.
  3. PredBat imports the future planned dispatch and treats that half-hour as cheap for the house.
  4. PredBat incorporates that assumed cheap slot into the battery optimisation. In my test this made an earlier force-export strategy possible because PredBat expected a cheap recharge opportunity later.
  5. Before the planned dispatch starts, Octopus changes/moves the dispatch.
  6. The previously assumed cheap home slot therefore never occurs.

This creates a real risk that the house battery is exported based on a cheap rate that was only provisional.

Why this matters with the current IOG tariff

Under the newer IOG 4-rate behaviour, a daytime planned EV dispatch is not necessarily a guaranteed cheap half-hour for the home merely because it appears in planned_dispatches.

The home daytime cheap rate is effectively conditional on the EV actually charging in that half-hour within the Intelligent charging allowance. Octopus can move planned dispatches before they occur.

So there are two different concepts that PredBat currently appears to treat as equivalent:

  • planned/provisional dispatch: useful for forecasting EV charging, but can move/disappear;
  • earned cheap home half-hour: safe to use as an actual cheap import rate once EV charging has genuinely occurred for that billing period.

For home-battery optimisation, relying on the first as though it were the second can result in an incorrect export/charge decision.

Expected behaviour

Ideally PredBat should distinguish between forecast EV charging slots and confirmed/earned cheap home-rate slots.

Possible approaches:

  1. Future planned Intelligent dispatches may still be used to forecast EV demand, but should not automatically override the home's future import tariff for battery arbitrage until the slot becomes sufficiently confirmed/active.
  2. Once EV charging actually starts during a daytime dispatch, the corresponding billing half-hour can be promoted to a confirmed cheap-home slot.
  3. If a planned dispatch moves before it starts, PredBat should not have made irreversible battery decisions (particularly force export) based on the old provisional cheap slot.
  4. A configurable option could allow users to choose whether planned IOG slots are trusted for home-rate optimisation, while preserving current behaviour for users on tariff arrangements where the planned slot really is guaranteed.

Possible solution

A possible approach would be to separate future EV dispatch planning from home battery tariff planning.

PredBat could continue using future planned_dispatches to forecast when the EV is likely to charge, but it should not automatically treat those future daytime dispatches as guaranteed cheap import periods for the house.

For Intelligent Octopus Go daytime dispatches outside the fixed 23:30–05:30 cheap window:

  • future/unstarted dispatches: use for EV demand forecasting only, while keeping the normal home import rate for battery optimisation;
  • active/confirmed dispatches: promote the relevant 30-minute settlement period to the cheap home rate and immediately re-plan;
  • completed dispatches: retain as confirmed cheap periods historically.

This does mean PredBat cannot fully optimise the home battery around future daytime Intelligent slots, because Octopus may still move or revoke them. However, that seems safer than allowing PredBat to make irreversible decisions such as force-exporting or deferring charging based on a cheap rate that is not yet guaranteed.

This would complement #4483 rather than replace it: #4483 limits future slots the EV no longer needs, whereas this would address future slots the EV does still need but which remain provisional until they actually occur.

Related issues

Debug file

I can provide a predbat_debug.yaml from a reproduction if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions