Skip to content

V6.14.0

Choose a tag to compare

@github-actions github-actions released this 21 Sep 01:36
3de197d

Changed

  • The mandatory startup-phase timer is no longer named after the heat pump. Whatever starts it,
    peak shaving leaves the charge current alone while it runs, and that holds with or without the
    heat-pump boost configured, so the timer is the way to keep the battery out of the way of any
    large appliance. Field label and help text say that now; the field itself is unchanged, so no
    instance needs reassigning.
  • One battery pack is mandatory, every further one is optional. The three BMS 2 fields (cell
    voltage and both cell temperatures) are no longer demanded by the startup check, so a
    single-pack site can leave them empty the way the BMS 3 fields already could. With them
    empty the blueprint computes with one pack throughout: capacity, temperature limit and
    cell balancing all read pack 1 alone. The worked example behind the charge rates now says
    which number is the pack count, which only read as obvious while two packs were assumed.
  • The help text of the state-of-charge field read as if the shadow-BMS field below it had to be
    filled in too. Both descriptions now say plainly that the second sensor is optional: left empty,
    the inverter's own reading alone drives the whole cascade, and only a filled-in shadow field
    brings both values into the conversion of the discharge-floor registers.

Removed

  • The escalation ceiling on the state of charge is gone as an input. No branch ever read the
    field, while the escalation itself stops at a fixed 97 % that sits in its own entry condition —
    so the field could only ever have lowered a ceiling that already held, and it never did. The
    fixed limit stays; what goes is the field that made it look adjustable per site. An instance
    that still assigns the key is unaffected, the blueprint simply ignores it, and from this release
    the configuration block of the diagnostic recording carries one key fewer than older lines.

Fixed

  • The helper template no longer gives the half-hourly meters a cycle of their own. The blueprint
    zeroes them every thirty minutes anyway, and a daily cycle put the meter's own reset on the
    same second as the run that reads the last slot before midnight, which the run loses because
    it queues behind the five-minute run. That slot then learned a zero and the running mean
    pulled it down further every night. A site that already copied the template has to drop the
    cycle: line from each half-hourly meter it actually runs — house consumption, each wallbox,
    the backup circuit; the counters evaluated per period keep theirs. Re-importing the blueprint
    does not touch its package.
  • The helper template no longer pins the charge mode to normal at startup. The mode is
    memory, not decoration: the morning blockade holds through the end of its window only by
    recognising itself, and the top-up branch leaves case B alone for the same reason. With
    initial: set, Home Assistant skips restoring the value, so every restart quietly dropped
    that memory. Without it a freshly created helper still starts on the first option. Here too a
    site that already copied the template has to delete the initial: line itself.
  • The helper template gives every timer restore: true. Without it a timer that was running when
    Home Assistant restarts comes back idle, and the branch it guards then reads a state that no
    longer exists: the cell-balancing cooldown, the peak-shaving hold, the startup phase and the
    boost runtime each end silently mid-run. A site that already copied the template has to add the
    four lines itself.
  • The help text of the startup-phase timer and of its duration field said the battery drops to
    0 A while the timer runs. It does not: that branch holds the charge current at the value it
    last had and leaves lowering to the branches that own it, which the branch comment has said
    all along. The same wrong picture had been carried from one wording to the next.
  • The logbook line for an interrupted peak-shaving hold named the heat pump as the reason. The
    condition it reports only tests that the startup-phase timer runs, and anything may have
    started it, so the line now names the timer instead of guessing the appliance.
  • A pack is now assigned as a whole or not at all: as soon as one of a pack's three sensors is
    set, the startup check demands the other two and names the missing one. A half-assigned pack
    used to compute silently wrong numbers — a missing highest cell temperature was read as 99 °C
    and throttled the charge current to zero, a missing lowest one left the pack out of the
    capacity, and a missing cell voltage left it unwatched during cell balancing.
  • The lowest cell temperature of pack 1 is a mandatory field now. Left empty, no pack counted
    as reachable and the whole system ran on the emergency charge current for good, reporting
    the BMS as offline — a state that is indistinguishable from a real outage in the logbook,
    while the cause was an unassigned field the startup check could have named.
  • The second-opinion request to the optimizer now describes the battery the inverter actually
    enforces. Its minimum state of charge is the ToU register in force instead of the general
    minimum, so the schedules it returns can be compared with the blueprint's own plan; a request
    built on a floor the inverter does not release yields schedules that could never have been
    run. The floor is capped at the current state of charge, because a floor above the starting
    point leaves no feasible schedule at all. Charge and discharge efficiency now come from the
    same constants the blueprint's own planning uses, so both sides of the comparison assume the
    same battery. Diagnosis only; no register is written on that run. In the recording, s_min_pct
    of the request now reports the floor that was actually sent instead of the general minimum, so
    those lines cannot be compared across this release.
  • The run that learns the consumption profiles now converts the discharge floor into the same
    scale as the rest of the blueprint. It keeps its own copies of the hold detection because the
    variable chain does not run there, and those copies compared the raw register against a minimum
    that is meant in the second BMS's scale. Where the two scales differ, a floor one step above the
    minimum counted as "not holding", so the night side of the loss accounting stayed silently at
    zero, and the cap on the accumulated night import came out short by the offset. Without a second
    sensor the offset is zero and nothing changes. The slot line of the recording now carries the
    offset itself, and its floor and held-back energy are in the same scale as the run line, where
    they previously were not despite the same names.