Technology

Rules an engineer can read. Evidence behind every number.

Solvane combines computer vision, unsupervised anomaly detection and a transparent loss model. Here is what each layer does, and where its limits are.

Pipeline

Five passes behind every upload.

01

Segment

Otsu thresholding and connected components isolate every module; module-sized regions are kept.

02

Measure

Per-module mean, 99.5th-percentile peak, per-third means, colour saturation and line texture.

03

Test

Robust z-scores against the array decide what is an outlier, and the pattern decides which defect.

04

Corroborate

String telemetry confirms image findings or adds faults the image can't show.

05

Price

The loss model turns each finding into $/yr and a P1–P4 priority with an SLA.

Vision engine

Outliers against their own neighbours.

Instead of judging a module against a fixed threshold, Solvane compares it with every other module in the same frame. Lighting, altitude and camera settings affect them all equally, so a fault stands out against its neighbours.

  • Dead string: ≥3 adjacent modules with mean z > 3 and no single-third peak
  • Bypass diode: one third uniformly warm (third z > 6), peak close to that third's mean
  • Hotspot: sharp peak far above the module mean (peak z > 6)
  • Soiling: desaturated, dust-coloured pixels on the glass
  • Vegetation: excess-green index clusters touching modules
  • Crack: line-like bright pixels inside the module frame
Runs
In the browser (on-device), no upload needed
Optional
Cloud multimodal model with structured output
Thermal
Relative intensity only, never absolute °C
Bench
8 synthetic frames · 24/24 defects · 0 false positives
String model

Weather cancels out.

Every string in a block sees the same sky. Dividing each string's daily yield by the block median gives a performance ratio near 1.0 whatever the weather. The 7-day mean of that ratio is scored with a median/MAD robust z-score, which a single outlier day can't distort.

A ratio near zero points to an open circuit. A steady 10–30% deficit points to mismatch, diodes or soiling, which an IV-curve trace can confirm.

PR(s,d) = yield(s,d) / median_s' yield(s',d) x(s) = mean_{last 7 d} PR(s,d) z(s) = 0.6745 · (x(s) − median x) / MAD(x) flag if z(s) < −3.5
Loss model

Dollars, shown with the working.

Loss per year = modules affected × module kW × specific yield × defect loss factor × PPA price. The risk score adds severity × confidence, a safety bump and a capped log-value term. Every input is visible, so an engineer can check the figure.

kWh/yr = n · P_mod · Y_spec · f_type $/yr = kWh/yr · price score = 14·sev·(0.5+0.5·conf) + 18·safety + min(26, 8·log10(1+$/yr)) critical ⇒ score ≥ 75 (P1)
Copilot

Grounded, cited, and honest about gaps.

Copilot receives the plant's findings, anomalies and inspection history as structured data and answers from it, citing finding IDs. Offline mode answers common questions directly from the record. When a language model is enabled, it gets the same data and the same rule: if the record can't answer, say so.

Limits

What it doesn't do (yet).

Oblique imagery

The on-device engine expects top-down (nadir) captures of regular module rows. Angled photos segment poorly and are reported as low quality.

Absolute temperature

Rendered thermal is treated as relative. Calibrated ΔT needs radiometric files and capture metadata.

Certification

Findings are proposals for qualified review. Solvane doesn't certify electrical safety or warranty claims.

Run the engine on your own image.