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.
Every value carries several timestamps
Section titled “Every value carries several timestamps”| Time | What it describes |
|---|---|
| Measurement time | When the plant or device recorded the observation |
| Received time | When SolarSENS received the observation |
| Calculation time | When a derived indicator was calculated or recalculated |
| Published time | When a processed result or report dataset was prepared for use |
| Displayed time | When 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.
Refresh schedule
Section titled “Refresh schedule”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.
How corrections move through the system
Section titled “How corrections move through the system”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 completed | What is newer now | What may still be old |
|---|---|---|
| Stored inputs updated | The measurement or configuration value itself. | Every calculated, daily, monthly, and report value built from it. |
| Affected values recalculated | Calculated results for the corrected plant, metric, device set, or period. | Charts, dashboards, and reports that have not regenerated yet. |
| Charts, dashboards, or reports regenerated | The specific chart, dashboard, or report that reran. | Other views built from a different dataset. |
| Browser refresh | Nothing 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.
| State | What it means | What to check next |
|---|---|---|
| Missing / blank | No usable result for that field and scope. Blank is not zero. | Plant, period, required inputs, and any visible status or remark |
| Zero | The 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” |
| Stale | A result exists but an upstream layer has not advanced. | Timestamps or evaluation dates across the compared views |
| Provisional / current-day | The period is still active and can receive data or corrections. | Wait for the processed-period result before comparing against closed periods |
| Recalculated | An 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”- Confirm both values use the same plant, device scope, and period.
- Confirm both use the same definition and unit — see Where calculated results appear for each view’s grain and caveats.
- Compare their timestamps or evaluation dates. If one layer is older, wait for propagation before treating the difference as an error.
- If scope, definition, and freshness all match and the values still disagree, escalate with both values, their timestamps, and the selected period.