github springfall2008/batpred v9.7.2
Car charging costed as billed, load double-count fix, fleet target split, Solis local template

28 minutes ago

What's Changed

This release makes Predbat's day cost match what you are billed when the car charges: past the Intelligent Octopus 6-hour cap, and when the car is outside the CT clamp. It also stops a coarse load sensor counting load twice, which inflated the load forecast. Mixed-size battery fleets now reach their full target when one battery is full, and there is a new local Solis Modbus template.

Fixes

  • Car charging is costed as billed. Found from a +1289p jump in one half hour of the History view on an Intelligent Octopus system.

    • Charging past the Intelligent Octopus 6-hour cap. Once the cap ran out, cost_today added the peak premium for the whole planned charge at once. A dispatch planned to 06:00 put about 44 kWh at peak into the day, when the car had drawn 3.4 kWh past the cap before midnight. The premium is now added per minute, only for minutes past the cap, on the energy the car sensor measured. cost_today now grows as the car charges instead of jumping. Days already recorded are unchanged.
    • The cap now ends on time in the live plan. It could end up to 30 minutes late (23:49 rather than 23:30), because part of the half hour in progress wasn't counted towards it.
    • A car outside the CT clamp is in the day's cost. With car_energy_reported_load off, the meter bills the car but the import sensor doesn't see it, so its cost only went into cost_today_car. It is now costed as the meter sees it: export the clamp counted goes into the car first, and the rest is import at that minute's rate. If the car is inside the clamp, nothing changes.
    • History view kWh include a car outside the clamp, so they match the supplier's metered kWh.
    • Late export billing is picked up. Export billing can arrive several days after import. Predbat stopped re-reading a day at 3 days old, and now waits until 5 days.
    • docs/car-charging.md explains what car_energy_reported_load off does to the cost, and that import_today/export_today should come from the inverter. A smart-meter sensor already includes the car, so it would be counted twice.

    @springfall2008 in #6023

  • Load history no longer counts load twice on a coarse load sensor. When the load_today counter sat flat, Predbat filled the gap from load_power and also kept the energy the counter added at its next step, so that energy was counted twice. On four days of real history that added 1.2 kWh with a 0.1 kWh counter and 18.4 kWh with a 0.5 kWh counter. Overnight load could show as about 1.8×, which fed into the load forecast. Predbat now works out the counter's step size and fills from load_power only where readings were really lost. @chalfontchubby in #5921, fixes #5855

  • Mixed-size battery fleets reach their target when one battery is full. Each inverter is given a share of the fleet's target by its charge rate. If an inverter is full (or at its reserve), its share was lost and the fleet finished short. On a 9.5 + 5.2 kWh fleet a 95% target landed at 90%. What a full inverter can't take now goes to the others, so the fleet reaches 95%. When no inverter is full, the split is the same as before.

    • Exports are now shared by each inverter's export rate, and other discharges by its discharge rate, instead of the charge rate. Most fleets have the same rates in both directions and see no change.
    • Each inverter is now sent its own export target, not the fleet %.

    @gcoan in #5906

New features

  • Solis local Modbus template. templates/solis_local.yaml works with Pho3niX90's solis_modbus integration. It controls battery charge and discharge directly through the inverter's remote-control registers, instead of rewriting the time-of-use schedule each time. See Solis local in the inverter setup docs. @graememorgan in #5881, fixes #5203
  • Billing reads are spread out when plan_random_delay is set. This setting is used to spread load across many installations, for example on Predbat.com. With it set, the first billing read after a start waits a random 0–30 minutes, and each day's query waits a random 0–60 seconds. The read runs in the background, so Octopus dispatch polling isn't held up. With plan_random_delay at 0 nothing changes. @springfall2008 in #6024

For developers

  • Triage bot: every flow now has the shared team memory, using the bot's own token, limited to the public predbat-devs scope. The bot can add and amend memories but not delete them. @springfall2008 in #6027

Full Changelog: v9.7.1...v9.7.2

Don't miss a new batpred release

NewReleases is sending notifications on new releases.