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_todayadded 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_todaynow 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_loadoff, the meter bills the car but the import sensor doesn't see it, so its cost only went intocost_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.mdexplains whatcar_energy_reported_loadoff does to the cost, and thatimport_today/export_todayshould come from the inverter. A smart-meter sensor already includes the car, so it would be counted twice.
- Charging past the Intelligent Octopus 6-hour cap. Once the cap ran out,
-
Load history no longer counts load twice on a coarse load sensor. When the
load_todaycounter sat flat, Predbat filled the gap fromload_powerand 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 fromload_poweronly 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 %.
New features
- Solis local Modbus template.
templates/solis_local.yamlworks 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_delayis 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. Withplan_random_delayat 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-devsscope. The bot can add and amend memories but not delete them. @springfall2008 in #6027
Full Changelog: v9.7.1...v9.7.2