Skip to content

Data freshness and corrections

When two views disagree, find out which part of the data journey is older. A value can be freshly displayed while the measurement, calculation, or report behind it is hours or days older. SolarSENS processes data in layers that complete separately, so there is no single moment when “everything” is up to date.

TimeWhat it describes
Measurement timeWhen the plant or device recorded the observation
Received timeWhen SolarSENS received the observation
Calculation timeWhen a derived indicator was calculated or recalculated
Published timeWhen a processed result or report dataset was prepared for use
Displayed timeWhen a view requested and showed the result — possibly from a prepared results layer

Not every screen exposes every timestamp. When a view shows an evaluation date, report status, or remark, read it alongside the selected plant and period — it usually identifies which layer you are looking at.

Refreshing the browser only re-requests what is already available to that view. It cannot make a measurement newer or force a calculation to finish. If a refresh doesn’t change a value, the delay is upstream.

SolarSENS uses configured refresh schedules for collection and processing. Collection is when measurements arrive from devices, edge systems, or upstream data sources. Processing is when SolarSENS calculates, evaluates, aggregates, or prepares customer-visible values from that collected data.

The first chart shows the recurring jobs. Each diamond marks when a run starts; the chart shows the first half hour after midnight, and the same pattern repeats all day at the interval in each label. The Collection lane is when measurements arrive; the Processing lane is when SolarSENS turns them into customer-visible values. Actual clock time follows the configured plant or deployment timezone. Read the schedule as configuration, not as a service promise: a scheduled refresh can still wait on source delivery, retries, calculation completion, or a downstream view that has not picked up the newer result.

gantt
    title Recurring refresh runs (first half hour shown, pattern repeats all day)
    dateFormat  YYYY-MM-DD HH:mm
    axisFormat  %H:%M
    todayMarker off

    section Collection
    Inverter, every 5 to 15 min      :milestone, inv_c1, 2026-01-01 00:01, 0min
    Inverter, every 5 to 15 min      :milestone, inv_c2, 2026-01-01 00:06, 0min
    Inverter, every 5 to 15 min      :milestone, inv_c3, 2026-01-01 00:11, 0min
    Inverter, every 5 to 15 min      :milestone, inv_c4, 2026-01-01 00:16, 0min
    Meter, configured source cycle   :milestone, met_c1, 2026-01-01 00:00, 0min
    Meter, configured source cycle   :milestone, met_c2, 2026-01-01 00:15, 0min
    Meter, configured source cycle   :milestone, met_c3, 2026-01-01 00:30, 0min

    section Processing
    Realtime PR, every 5 min         :milestone, rpr_p1, 2026-01-01 00:00, 0min
    Realtime PR, every 5 min         :milestone, rpr_p2, 2026-01-01 00:05, 0min
    Realtime PR, every 5 min         :milestone, rpr_p3, 2026-01-01 00:10, 0min
    Realtime PR, every 5 min         :milestone, rpr_p4, 2026-01-01 00:15, 0min
    Weather aggregation, every 10 min :milestone, wea_p1, 2026-01-01 00:00, 0min
    Weather aggregation, every 10 min :milestone, wea_p2, 2026-01-01 00:10, 0min
    Weather aggregation, every 10 min :milestone, wea_p3, 2026-01-01 00:20, 0min
    Inverter yield, every 10 min     :milestone, yie_p1, 2026-01-01 00:00, 0min
    Inverter yield, every 10 min     :milestone, yie_p2, 2026-01-01 00:10, 0min
    Inverter yield, every 10 min     :milestone, yie_p3, 2026-01-01 00:20, 0min
    Alarm evaluation, every 10 min   :milestone, alm_e1, 2026-01-01 00:03, 0min
    Alarm evaluation, every 10 min   :milestone, alm_e2, 2026-01-01 00:13, 0min
    Alarm evaluation, every 10 min   :milestone, alm_e3, 2026-01-01 00:23, 0min
    Meter status, every 15 min       :milestone, met_s1, 2026-01-01 00:02, 0min
    Meter status, every 15 min       :milestone, met_s2, 2026-01-01 00:17, 0min
    Device status, every 15 min      :milestone, dev_s1, 2026-01-01 00:02, 0min
    Device status, every 15 min      :milestone, dev_s2, 2026-01-01 00:17, 0min

Once-per-day jobs run in the windows below, after the previous plant-day closes.

gantt
    title Once-per-day refresh windows (00:00 to 06:00, plant or deployment timezone)
    dateFormat  YYYY-MM-DD HH:mm
    axisFormat  %H:%M
    todayMarker off

    section Collection
    End-of-day meter collection      :meter_eod, 2026-01-01 00:00, 2026-01-01 00:15

    section Processing
    Closed-day PR processing         :daily_pr, 2026-01-01 00:00, 2026-01-01 00:15
    Availability processing          :availability, 2026-01-01 00:15, 2026-01-01 00:30
    Meter-derived daily values       :meter_daily, 2026-01-01 01:00, 2026-01-01 01:15
    Historical inverter dataset      :hist_inverter, 2026-01-01 01:30, 2026-01-01 01:45
    Soiling and cleaning processing  :soiling, 2026-01-01 05:00, 2026-01-01 05:15
    Daily portfolio dataset          :daily_portfolio, 2026-01-01 05:30, 2026-01-01 05:45

A value may be stale if it does not match the configured collection or processing schedule for the metric you are viewing. Check the selected plant, device scope, period, and timestamp before comparing two views.

The plant-day period and the clock that coordinates its processing are separate things; see How SolarSENS processes plant data.

A late measurement or configuration fix recalculates the affected scope, then downstream analytics, reports, and displayed values pick up the newer result on their own schedules. A corrected daily value can therefore appear in one view before another view for the same day has regenerated.

Reprocessing works the same way: it recalculates one named scope, such as a metric, plant, device population, or historical period. It does not automatically prove that every dependent report and screen has caught up.

flowchart LR
    A[Late measurement or
configuration fix arrives] --> B[Stored inputs
updated] B --> C[Affected values
recalculated] C --> D[Charts and dashboards
regenerated] C --> E[Reports
regenerated] D --> F[What you see
in SolarSENS] E --> F G[Browser refresh] -. only re-reads .-> F

Each step runs on its own schedule, so a correction is visible in one place before another. The browser refresh at the end only re-reads what the earlier steps have already produced.

Step that completedWhat is newer nowWhat may still be old
Stored inputs updatedThe measurement or configuration value itself.Every calculated, daily, monthly, and report value built from it.
Affected values recalculatedCalculated results for the corrected plant, metric, device set, or period.Charts, dashboards, and reports that have not regenerated yet.
Charts, dashboards, or reports regeneratedThe specific chart, dashboard, or report that reran.Other views built from a different dataset.
Browser refreshNothing upstream — the view just re-read what was already available.Everything above.

Missing, zero, stale, and corrected values

Section titled “Missing, zero, stale, and corrected values”

This is the reference other pages link to when a value looks wrong.

StateWhat it meansWhat to check next
Missing / blankNo usable result for that field and scope. Blank is not zero.Plant, period, required inputs, and any visible status or remark
ZeroThe calculation returned zero — or a fallback path displayed zero because inputs were incomplete.The metric’s remarks and data coverage before concluding “no loss” or “no production”
StaleA result exists but an upstream layer has not advanced.Timestamps or evaluation dates across the compared views
Provisional / current-dayThe period is still active and can receive data or corrections.Wait for the processed-period result before comparing against closed periods
RecalculatedAn earlier result changed after a correction.Whether downstream reports have regenerated yet

Before escalating a difference between two views

Section titled “Before escalating a difference between two views”
  1. Confirm both values use the same plant, device scope, and period.
  2. Confirm both use the same definition and unit — see Where calculated results appear for each view’s grain and caveats.
  3. Compare their timestamps or evaluation dates. If one layer is older, wait for propagation before treating the difference as an error.
  4. If scope, definition, and freshness all match and the values still disagree, escalate with both values, their timestamps, and the selected period.