-
Notifications
You must be signed in to change notification settings - Fork 248
Description
Seemingly due to a change in the entsoe web api https://web-api.tp.entsoe.eu/api - query_generation_per_plant() no longer seems to work as intended - for EntsoePandasClient: and the parser might be the problem.
I have tested the method using these control areas | BZs:
Area.NO, Area.NO_1, Area.NO_2, Area.NO_3, Area.NO_4, Area.NO_5
Area.SE, Area.SE_1, Area.SE_2, Area.SE_3, Area.SE_4
Area.DK, Area.DK_1, Area.DK_2
Testing different datetimes (1 day intervals) this year, last year, last month... as well as parameters psr_type, include_eic, eic_code (specified or left open) I always get:
- For control areas: ValueError: All objects passed were None
- For BZ: entsoe.exceptions.NoMatchingDataError
I then proceeded to test directly towards the entsoe web api, and found the possible reason.
-
Calling the api with a BZ instead of a control area doesn't work; returning an empty xml file (empty as in no data, still some metadata). This might always have been the case, just wasn't very clear.
-
Also, all data returned from the web api call will have the control-area as inBiddingZone_Domain.mRID (in the XML file returned), despite stating that its a BZ, which it isnt.
-
The reason why query_generation_per_plant() still doesnt work - pandasClient, even when passing a control area, like Area.NO, might be due to a new format of the XML file. After the 15 min update xml files has gotten more generalized, with a period, resolution and interval, so that each datapoint doesn't come with its own timestamp. This seems to cause the parser to fail:
entsoe-py/entsoe/entsoe.py, line 2400-2438
...
df = parse_generation(text, per_plant=True, include_eic=include_eic)
...
A parser needs to look for period, start and resolution and use these to add timestamps to each point in a timeseries.