Repository navigation
Conversation
Expand variable-size blocks through skipped positions to each period’s end, respecting unavailable values and the future timestamp cutoff. Add decoder tests and correct integration expectations.
Reject malformed timing and missing, duplicate, or out-of-range positions before generating predictions. Require complete A01 periods, preserve valid neighboring periods, and update regression tests.
Persist unavailable A01 intervals and A03 blocks as null values. Add decoding and persistence regression tests, and document that null predictions retain their timestamped entries.
Exclude windows containing null tariffs while preserving timestamp alignment in both EMS implementations. Add regression coverage and document the ENTSO-E consumer migration requirements.
Restore mid-period filtering and multiple-period coverage, and verify every predicted timestamp and price including final A03 blocks.
Contributor
Author
|
@igorrutka Might be worth you double check the changes in EMS and maybe you need to adapt some rules in custom projects when this gets used. |
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.
Description
ENTSO-E A44 publications could leave stale prices in predictions or produce incomplete forecasts because curve types and period boundaries were not fully respected. This change decodes A01/A03 curves, preserves explicit unavailability, and clears existing future predictions in validated gaps between periods. Both EMS implementations now handle unavailable tariffs without failing optimisation.
curveType, default an omitted value to A01, and reject unsupported types. Require complete A01 positions; expand A03 constant-price blocks through the next point or the exclusive period end.AssetDatapointAllQuery; OpenRemote 1.33.0 or later is required. The branch retains the existing 1.34.0-SNAPSHOT dependency.EmsOptimisationandEmsOptimisationBeta, exclude moving-average windows containing null tariffs from charge/discharge zone selection while preserving the indices of later valid windows. Import and export forecasts are evaluated independently; other optimisation logic continues when no eligible tariff window exists.Breaking behaviour and migration
Forecast consumers must handle unavailable values before deploying this update. For example, a previously stored
(12:15, 80)prediction can now become(12:15, null). The entry retains its timestamp; it is not deleted. A later publication can restore a numeric price.This affects custom rules, other extensions, and external applications as well as EMS. Unboxing or performing arithmetic on every datapoint without checking availability can fail. Treat null as unavailable, not zero, and do not carry a previous price through an explicitly unavailable interval. Dropping null entries must not cause remaining points to be treated as consecutive or shift decisions to different timestamps.
The core
allquery retains an unavailable entry'sxtimestamp but omits its JSONyproperty. LTTB omits unavailable points entirely and does not preserve gap markers. The core JSON-null fix alone does not adapt downstream consumers.Detailed migration guidance is included in entsoe/RELEASE_NOTES.txt and linked from the ENTSO-E README.
Validation
git diff --checkpasses. The full repository test suite and a live ENTSO-E deployment were not exercised.Scope and known limitation
Consumers outside this repository still require review. Changing resolution inside a covered period can leave old prediction timestamps; this PR handles gaps between periods, not removal of those older timestamps.