Add a steam boiler pool - #1429
Open
shsms wants to merge 10 commits into
Open
Conversation
Steam boilers are controllable electrical loads. Their active power and its inclusion/exclusion bounds, together with the per-phase power, current, voltage and frequency, are reported through the corresponding AC_* metrics. SteamBoilerData derives directly from ComponentData and declares its own fields and from_samples/to_samples handling, rather than reusing another category's type, so steam boilers are not coupled to the CHP data model. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
Adds the timeseries.steam_boiler_pool package: the SteamBoilerPool, its reference store and report types, and a SteamBoilerSystemBoundsTracker that aggregates the active-power bounds of the working boilers, mirroring the PV pool. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
The data sourcing actor handles the steam boiler component category so the power formula can resample per-boiler power. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
The SteamBoilerStatusTracker reports per-boiler health so that broken boilers can be excluded from power distribution, mirroring the PV inverter status tracker. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
The SteamBoilerManager splits the target power equally across the working boilers. Each allocation stays inside the boiler's inclusion bounds: a share below a boiler's minimum operating power is raised to the minimum when the remaining budget covers it, and the boiler is kept off otherwise. Like the PV manager, the measured draw of unreachable boilers is subtracted from the target, so the working boilers don't make the site overshoot it. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
Wires the steam boiler pool into the data pipeline factory, using the plain matryoshka power-manager algorithm with DefaultPower.ZERO, so that unmanaged boilers are switched off and fall back to gas heating, and documents the new pool in the microgrid module docs. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
Adds SteamBoilerDataWrapper, steam boiler streaming in the mock microgrid, resampling in the mock resampler, and graph-generator support. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
Tests for the steam boiler pool power formula (including its meter fallback) and the power control methods. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
Tests for the SteamBoilerManager's distribution (minimum-power and unreachable-power handling, formula delegation, shutdown) and the status tracker. Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
Signed-off-by: Sahas Subramanian <sahas.subramanian@proton.me>
shsms
force-pushed
the
steam-boiler-pool
branch
from
August 26, 2026 14:27
8cda58a to
ba9e618
Compare
shsms
marked this pull request as ready for review
August 26, 2026 14:29
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.
Steam boilers are controllable electrical loads the SDK could not monitor or
manage. This adds a steam boiler pool with power readings and power control,
following the structure of the EV charger and PV pools.
Changes
microgrid.new_steam_boiler_pool()returning aSteamBoilerPoolwithpower,power_status, and a consumption-onlypropose_power(negative power is rejected).SteamBoilerDatacomponent data type and data sourcing support.DefaultPower.MAX(like EV chargers) when no actor is proposing.SteamBoilerManagersplits the target power equally across the workingboilers, keeping every allocation inside the boiler's inclusion bounds: a
share below a boiler's minimum operating power is raised to the minimum, or
the boiler is kept off. Like the PV manager, it subtracts the measured draw
of unreachable boilers from the target.
SteamBoilerStatusTrackerfor per-boiler health, mirroring the PV tracker.Worth a look
boiler can't be afforded instead of topping up earlier boilers
(
test_unaffordable_minimum_strands_excesspins this).same behavior as the PV and EV managers; a follow-up could make all three
send an
Errorresult the way the battery manager does.