Requirements on submitted time series

Requirements on submitted time series

 

Interpretation

Reservoir telemetry

Incoming reservoir levels will be snapped to the closest full interval in the plant's granularity.

Each data point in the stored timeseries takes the value of the incoming reservoir level
data point whose timestamp is closest to the new granularity perfect timestamp.
In this context, "close" is defined as half a granularity step above or below the new timestamp.

If there is no close data point available, the perfect data point will be omitted, creating a gap.

Example:

[ # Assuming a plant granularity of 15 minutes { "reservoirId": "Reservoir_1", "timeseries": [ { "timestamp": 1700064060000, # 15. November 2023 16:41:00 (UTC) "value": 4.1 }, { "timestamp": 1700064420000, # 16:47:00 (UTC) "value": 4.2 }, { "timestamp": 1700064480000, # 16:48:00 (UTC) "value": 4.3 }, { "timestamp": 1700064840000, # 16:54:00 (UTC) "value": 3.9 }, { "timestamp": 1700064900000, # 16:55:00 (UTC) "value": 3.8 } # Notice that none of these values match a perfect granularity interval of # 15 minutes (16:30, 16:45, 17:00) ] } ]

 

The value of 4.1 meters recorded at 4:41pm falls within the acceptable tolerance (half the granularity interval) for the 4:45pm granularity timestamp (only 4 minutes away). However, the value of 4.2 meters recorded at 4:47pm is closer to the 4:45pm timestamp (just 2 minutes away). Since the HYDROGRID System selects the closest data point for each granularity timestamp, the 4:41pm reading is omitted.

The 4:47pm data point (4.2 m) is the closest measurement to the 4:45pm granularity timestamp. The HYDROGRID System snaps this data point to the nearest granularity timestamp and interprets it as follows:

“The reservoir level was 4.2 meters at the granularity perfect timestamp of 4:45pm.”

The value of 4.3 meters at 4:48pm is also within tolerance of the 4:45pm timestamp, but since the 4:47pm measurement is closer, the 4:48pm data point is omitted.

Similarly, the value of 3.9 meters at 4:50pm is within tolerance of the 5:00pm granularity timestamp. Yet, because the 4:55pm measurement is closer, the 4:50pm reading is omitted.

The value of 3.8 meters at 4:55pm is the closest data point to the 5:00pm granularity perfect timestamp. The HYDROGRID system snaps this value to the nearest full interval and interprets it as:

“The reservoir level was 3.8 meters at the granularity perfect timestamp of 5:00pm.”

No data will be stored for 4:30pm (the closest incoming point 4:41pm is 11 minutes away, more than half a granularity step of 7.5 minutes) or 5:15pm (the closest incoming point 4:55pm is 20 minutes away, more than half a granularity step of 7.5 minutes).

Similarly, no data will be stored for the 4:30pm interval, as the closest available measurement (4:41pm) is 11 minutes away, exceeding the tolerance (half the granularity interval of 7.5 minutes). Similarly, no data will be stored for the 5:15pm interval, as the closest measurement (4:55pm) is 20 minutes away, which also exceeds half the granularity interval.

Turbine and Gate telemetry

In a timeseries like below, every value is interpreted as being the average power over the timespan between timestamp ts and ts+1. (Similar for throughput/opening on gates.)

Example:

[ { "turbineId": "Turbi_1", "timeseries": [ { "timestamp": 1700053200000, # 15. November 2023 13:00:00 (UTC) "value": 4.0 }, { "timestamp": 1700056800000, # 14:00:00 (UTC) "value": 4.2 }, # notice span of 2 hour here between the data points { "timestamp": 1700064000000, # 16:00:00 (UTC) "value": 3.8 }, { "timestamp": 1700067600000, # 17:00:00 (UTC) "value": null } ] } ]

 

The value 4.0 with the timestamp 1pm is followed by another timestamp at 2pm. So this is interpreted in the way

The average production over this timespan 1pm and 2pm (one hour) was 4.0MW”.

Analog the value 4.2 with the timestamp 2pm does not have a following timestamp until 4pm. So the HYDROGRID System interprets this data as:

The average production over this timespan 2pm and 4pm (two hours) was 4.2 MW”.

Rules

  • Timestamps interval

    • for gates and turbine

      • should be at least in market granularity (or finer) e.g. one value every 15 minutes

    • for reservoirs

      • best in plant granularity (e.g. 15min), but please provide at least one sensor reading a day

  • Continuously provide data in one time-series in a 48 hour rolling window

    • Each time data is sent, provide telemetry of actual time and telemetry for the last 48 hours. (see below)

  • Timestamps

    • Cannot be older than 2 weeks (otherwise the entire dataset will be rejected)

    • Cannot be in the future (otherwise the entire dataset will be rejected)

  • Data

    • Should only be positive values (>= 0)

Format

The format is a time series. A time series is a list of pairs of timestamp and an actual value (no planned data).

Reservoir: Unix timestamp in ms, value in masl

→ The value represents the instantaneous measurement at the point in time

Turbine: Unix timestamp in ms + value in MW

→ The value represents the average power which was produced over the timespan between the timestamp and the next timestamp that is contained in the provided dataset

Gate: Unix timestamp in ms + value in m³/s (throughput, preferred) or cm (opening) or % (opening)

→ The value represents the average throughput (or opening) that was achieved over the timespan between the timestamp and the next timestamp that is contained in the provided dataset

Submit sensor data as time series in 48 hours rolling window with intervals in at least market granularity. i.E: Market granularity is hourly → data is sent hourly

Variants of submitted time series

HYDROGRID Insight processes each submitted time series as one consistent time series. It can process continous and split time-series.

Continuous time series

Split time series

Reservoir

Turbine / Gate

Data processing

On the turbine and gate endpoints (i.e. turbine power, gate discharge, gate opening) the terminating timestamp should provide the value NULL to indicate the end marker for the previous datapoint. If it is missing, the last datapoint will be discarded. To ensure data consistency, please provide an extra timestamp with a value of NULL. This indicates for how long of a duration the previous value is valid for. On reservoir level endpoints you send your telemetry as a current state, so there is no end marker necessary.