Repository navigation
Heat pump: COP that follows the outside temperature, and a learned COP (#1081) - #1366
Merged
Merged
Conversation
…lan ranks its hours by the price of heat A curve of 2-3 points (outdoor °C : COP) is a per-device goal (update_device_config property cop_curve). With it, the cost-of-heat sensor uses the COP at the outdoor reading now (attributes cop_used, cop_source, outdoor_c) and the night plan ranks the heat pump's grid slots by price / COP. Rank only: kWh and cost stay electricity. The plan's why says cheapest_heat with the mean COP. No curve = no change. Classic load card: COP row and three-point editor under More. Claude-Session: https://claude.ai/code/session_01UikL7PL23jjzZtjyqe4P8w
The crawler finds the heat meter (a kWh total of heat delivered). Each hour gives heat / electricity at that hour's outdoor temperature; 2 °C bands, median, trusted after 6 hours. Standby, short runs, resets and unread or estimated hours are left out. Nothing acts until the user sets the COP source to "learned"; outside the learned range the user's curve answers. Tomorrow's preview now ranks by the price of heat too. The option surface grows by the heat meter field (#1081, declared in the .loosen file). Claude-Session: https://claude.ai/code/session_01UikL7PL23jjzZtjyqe4P8w
…ken thermometer Review findings: hour ids are whole hours since the epoch (no DST double hour); a gap drops the hour before it; another meter starts fresh; outdoor readings outside -40..50 °C are no reading; hours under 0.3 kWh are standby (the ledger rounds to 0.01 kWh). The role leaves out yesterday/last/session counters and solar, boiler or biomass heat. The plan's COP helper is a module function, so plan fakes need nothing new. Tests use AST contracts. Claude-Session: https://claude.ai/code/session_01UikL7PL23jjzZtjyqe4P8w
A meter at COP ~1 is named and learns nothing; a counter too coarse for an hour, and the hour after a stalled one, are dropped; a bad store starts fresh; the dead hot-water flag is gone. Claude-Session: https://claude.ai/code/session_01UikL7PL23jjzZtjyqe4P8w
A stall is caught before the short-run check and ends at a gap; a counter reset learns the meter's step again; a meter just under COP 1 is named as electric. Claude-Session: https://claude.ai/code/session_01UikL7PL23jjzZtjyqe4P8w
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A heat pump can get a COP curve of 2–3 points (outside °C → COP). The cost of heat uses the COP now; the plan and tomorrow's preview put the heat pump in the hours where heat is cheapest (rank only — kWh and cost stay electricity).
The crawler finds a heat meter; SEM learns COP per outside temperature from it. Used only when you pick "learned" for the heat pump.
Without a curve or that choice, nothing changes.
Simulated winter: learned 2.43 / 3.18 / 3.82 against true 2.43 / 3.20 / 3.83 at −7 / 2 / 12 °C
Full suite green, replay unchanged
Review, CI, live run on the test server
https://claude.ai/code/session_01UikL7PL23jjzZtjyqe4P8w