You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit accbf99
Browse filesBrowse the repository at this point in the historyBrowse files
- compare.py runs (save=False): the rates read the saved cancellation while the
slots followed a decision made fresh in that run. So a car that had started or
stopped charging since the last live cycle was priced one way and planned the
other. The check now records this run's decision in dynamic_load_car_effective,
and rate_add_io_slots() and the feed strip read that instead.
- An install with no load history (load_forecast only, where load_last_period is
hard-coded to 0) counted as low load, so with car_energy_reported_load on every
dispatch was cancelled 10 minutes in. No load data is now no evidence.
- An unknown/unavailable reading left the grace timer running, so off ->
unavailable -> off cancelled without a fresh grace. No evidence now restarts it.
- A cancelled slot kept its cost. The cost is now zeroed, and publish_car_plan()
includes kwh_cancelled in the planned attribute, so the entity attributes say
why kWh is 0.
- The "will never be trusted" warning now lists only cars with an
octopus_intelligent_slot of their own, not every car without a sensor.
- The feed strip re-strips the same minutes every cycle. It now logs only when
the number stripped changes.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
self.log("Warn: octopus_intelligent_trust_slots is Off but car(s) {} have no car_charging_now sensor and are outside the CT clamp, so their Intelligent slots will never be trusted".format(cars))
# An unknown stretch is no evidence either way: the car may have been charging through it, so a
185
+
# "not charging" reading after it starts a fresh grace period rather than resuming the old one
186
+
print("Test 4c: an unavailable reading restarts the grace clock")
187
+
_reset(my_predbat)
188
+
_sensor(my_predbat, "off")
189
+
_cycle(my_predbat, 840)
190
+
_sensor(my_predbat, "unavailable")
191
+
_cycle(my_predbat, 841)
192
+
_sensor(my_predbat, "off")
193
+
changed=_cycle(my_predbat, 842, 30)
194
+
failed|=_check("t4c not cancelled on the old sighting", (notchanged) and_kwh(my_predbat) == [3.5, 3.5], "changed {} kwh {}".format(changed, _kwh(my_predbat)))
195
+
changed=_cycle(my_predbat, 844, 30)
196
+
failed|=_check("t4c cancelled after a fresh grace", changedand_kwh(my_predbat) == [0, 0], "changed {} kwh {}".format(changed, _kwh(my_predbat)))
197
+
179
198
# A static literal is not a sensor, and without the CT clamp there is no load evidence either
180
199
# A configured entity HA does not have (deleted, renamed, integration reloading) resolves to the
181
200
# read's default - that must be no evidence, not a "not charging" reading (#5229 review)
@@ -212,6 +231,18 @@ def _run(my_predbat):
212
231
changed=_cycle(my_predbat, 855)
213
232
failed|=_check("t6 load back up resumes", changedand_kwh(my_predbat) == [3.5, 3.5], "changed {} kwh {}".format(changed, _kwh(my_predbat)))
214
233
234
+
# A load_forecast-only install has no load_today history and a hard-coded load_last_period of 0,
235
+
# which is not evidence of anything (#5229 review)
236
+
print("Test 6c: no load history is not low-load evidence")
0 commit comments