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 fc0255a
Browse filesBrowse the repository at this point in the historyBrowse files
Snapshot the uncommitted Predbat edits running on the Pi
These nine files were edited in /opt/predbat/config on the Pi and never
pushed. They are all listed in manifest.yaml, so the next update from the
Predbat UI would mv -f over them and the work would be gone.
Captured as-is from the running v712.18 install, with one exception:
predbat.py takes main's version (keeping the now_utc timezone fix, which
the Pi predates) plus only the Pi's own four-line addition, so neither
change is lost.
The inverter.py and predbat.py edits are one change - GivTCP REST export
target writeback, where the discharge_target_soc register never reads back
on some hardware. The "unwritable" set moves off the Inverter, which is
rebuilt every cycle, onto the base, and rest_write_acknowledged() falls
back to the POST result when the readback cannot confirm a write.
The rest is annual/web_annual work: costs, weather and tariff.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"""Return the heat pump payback rows, or a reason they could not be built.
201
+
202
+
One row per hardware scenario, because the answer genuinely differs between them:
203
+
a heat pump's extra electricity is far cheaper for a household that can charge a
204
+
battery overnight and run the heat pump off it than for one importing every kWh at
205
+
the daytime rate. Collapsing that to a single number would hide the interaction this
206
+
tool exists to measure.
207
+
208
+
Like ``build_payback``, this refuses a partial year rather than extrapolating one:
209
+
heating is the most seasonal load in the house, so a year missing January is not
210
+
eleven twelfths of an answer - it is missing the part that matters most.
211
+
"""
212
+
ifnotheat_scenarios:
213
+
return {"available": False, "reason": "No month produced a usable heat pump result, so there is nothing to pay back."}
214
+
ifmonths_included!=12:
215
+
return {
216
+
"available": False,
217
+
"reason": "Heat pump payback needs a full year, but only {} of 12 months could be modelled. Heating is strongly seasonal, so a partial year cannot be scaled up. The missing months are named in the caveats.".format(months_included),
0 commit comments