OPT-36 round 2: test_opt34 keeps its tolerances; fresh sensors read the day they are on
The silent and fresh nights diverged only because the test's fresh sensors kept reading the evening's 0.4 kWh 'left today' after midnight, while the kept figure is the 4th's 6.0 kWh (solarfc.Hold.stand_in, as_today): two different shortfalls (16.5 and 12.7 kWh) that A's ceiling hid until B was counted. Fresh sensors now read 6.0 after midnight, so fresh and kept are the same figure; the 0.3 tolerance is back, the other exact values are recomputed. test_ux54 literals are recomputed too. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
6a527de851
commit
3a18475a5a
@@ -225,9 +225,7 @@ check("Leftover solar and Cheap hours: a give block exactly on the give run "
|
||||
# OPT-36: a larger evening (4.8 kW) so that B (Cheap hours) does not cover the
|
||||
# dear hours alone and A still buys from the grid; A starts at 30 %.
|
||||
c_n = S.make("dynamic", at(0, 18), soc=(30.0, 40.0), evening=4800.0)
|
||||
RUN_END = c_n.mode_runs.cheap.end
|
||||
END_S = RUN_END.astimezone(S.brussels(RUN_END).tzinfo).strftime("%H:%M")
|
||||
END_H = S.brussels(RUN_END).hour + S.brussels(RUN_END).minute / 60.0
|
||||
END_S, END_H = "03:00", 3.0 # the run's end, recomputed for this house
|
||||
nb = tab(c_n, at(0, 18))["days"][0]["batteries"]
|
||||
check("in the night before the cheap run both charge from the grid in it "
|
||||
f"(01:00 to {END_S}), then give at 17:00",
|
||||
@@ -251,11 +249,11 @@ def at_h(b, h):
|
||||
return dict((round(x, 3), v) for x, v in b["levels"]).get(h, float("nan"))
|
||||
|
||||
|
||||
check("the curve charges in a grid block: A (planned level 64 %) and B "
|
||||
check("the curve charges in a grid block: A (planned level 73 %) and B "
|
||||
"(Cheap hours, to the end of its run) are well above where they "
|
||||
"were at 01:00, and stay put after the run",
|
||||
all(at_h(b, END_H) - at_h(b, 1.0) > 8.0
|
||||
and abs(at_h(b, END_H + 1.0) - at_h(b, END_H)) < 1e-6
|
||||
and abs(at_h(b, 4.0) - at_h(b, END_H)) < 1e-6
|
||||
for b in nb) and nb[0]["levels"][0][1] == 30.0)
|
||||
# Modes off: the verdict's legs.
|
||||
c_f = S.make("off", at(10, 7))
|
||||
|
||||
Reference in New Issue
Block a user