This model describes the core concepts used by API and dashboard.
- latitude: float
- longitude: float
- start_utc: datetime (UTC)
- end_utc: datetime (UTC)
- resolution_minutes: int
Values: wind_turbine, solar_inverter, battery, meter
- timestamp_utc: datetime (UTC)
- temperature_c: Optional[float]
- wind_speed_mps: Optional[float]
- wind_direction_deg: Optional[float]
- cloud_cover_pct: Optional[float]
- shortwave_radiation_wm2: Optional[float]
- direct_radiation_wm2: Optional[float]
- diffuse_radiation_wm2: Optional[float]
- source: str
- timestamp_utc: datetime
- ghi_wm2: Optional[float]
- dni_wm2: Optional[float]
- dhi_wm2: Optional[float]
- temperature_c: Optional[float]
- source: str
- timestamp_utc: datetime
- balancing_authority: str
- demand_mw: Optional[float]
- demand_forecast_mw: Optional[float]
- net_generation_mw: Optional[float]
- source: str
- timestamp_utc: datetime
- region: str
- price_per_mwh: Optional[float]
- source: str
- timestamp_utc: datetime
- asset_id: str
- site_id: str
- asset_type: AssetType
- output_kw: Optional[float]
- capacity_kw: float
- curtailment_flag: bool
- auxiliary_data: dict
- location: GeoPoint
- window: ForecastWindow
- samples: tuple[WeatherSample, ...]
- source: str
- location: GeoPoint
- window: ForecastWindow
- samples: tuple[SolarResourceSample, ...]
- source: str
- balancing_authority: str
- window: ForecastWindow
- samples: tuple[GridDemandSample, ...]
- source: str
- timestamp_utc: datetime
- balancing_authority: str
- wind_mw, solar_mw, natural_gas_mw, coal_mw, nuclear_mw, hydro_mw, other_mw: Optional[float]
- source: str
- portfolio_id: str
- window: ForecastWindow
- expected_generation_mwh: float
- p10_generation_mwh, p50_generation_mwh, p90_generation_mwh: float
- primary_constraints: tuple[str, ...]
- forecast_basis: tuple[str, ...]
- site_id
- name
- asset_type (solar or wind)
- region, latitude, longitude
- capacity_mw
- ts (UTC)
- weather/resource signals (temperature, wind, irradiance, cloud, humidity, precipitation, pressure)
- unit metadata via hourly_units
- observed_mw (weather-to-power estimate for dashboard analysis)
- expected baseline per hour
- residual = observed - expected
- ts
- p10
- p50
- p90
- holdout_year (forced to 2025 when available)
- training_months and holdout_months
- monthly projected vs actual
- error_pct
- hit flag (true when error <= 6%)
- label
- period_h
- amplitude
- variance_share_pct
- interpretation
- current_signals
- normalized_signals
- residuals
- structural_drift
- recommendations
- audit_trace
Values: GOOD, UNCERTAIN, BAD, MISSING, STALE
Maps OPC UA / IEC quality codes to a canonical five-state enum.
Unified connector output (timestamp-quality-value). All connector adapters produce this type.
- source_id: str
- channel_id: str
- asset_id: Optional[str]
- timestamp_utc: datetime
- value: float | str | bool | None
- unit: Optional[str]
- quality: Quality
- source_timestamp_utc: Optional[datetime]
- ingest_timestamp_utc: datetime
- tags: dict[str, str]
- audit_hash: str (auto-computed SHA-256 truncated to 16 hex chars)
Single timestamped, typed signal value as received from an asset.
- timestamp_utc: datetime
- site_id, asset_id: str
- asset_type:
solar_inverter|wind_turbine|bess|meter|weather_station - signal: str (field name)
- value: float | str | bool | None
- unit: Optional[str]
- quality:
good|suspect|bad|missing - source: str
Normalised per-asset operational snapshot. Combines generation, health, and asset-type-specific signals. All signal fields are Optional so a snapshot can be partially populated.
- timestamp_utc, site_id, asset_id, asset_type: str
- capacity_kw: float
- power_kw, expected_power_kw, availability_pct: Optional[float]
- Solar inverter: dc_voltage_v, dc_current_a, ac_power_kw, inverter_efficiency_pct, frequency_hz, string_current_a
- Wind turbine: rotor_rpm, wind_speed_mps, wind_direction_deg, nacelle_direction_deg, yaw_error_deg, blade_pitch_deg, gearbox_temperature_c, generator_temperature_c, vibration_mm_s
- BESS: state_of_charge_pct, state_of_health_pct, charge_power_kw, discharge_power_kw, cell_temperature_c, pack_voltage_v, pack_current_a, cycle_count, thermal_derate_flag, inverter_status
- Meter/grid: reactive_power_kvar, voltage_v, power_factor, export_limit_kw, curtailment_signal
- Common: temperature_c, fault_code, curtailment_flag, quality_score, data_source
- Site has many TimeseriesSample
- Site has many ProjectionPoint
- HoldoutEvaluation is derived from Site monthly aggregates
- SpectralSignal is derived from modeled output history
- PipelineArtifact links projection and explainability outputs
- AssetTelemetrySnapshot is the normalised form of multiple TelemetryPoint records
- TelemetrySample is the universal connector output used by all industrial-protocol connectors