Mitt anlegg
Registrer solcelleanlegget ditt, send inn faktiske produksjonstall (fil eller løpende), og få en prognose tilpasset akkurat ditt anlegg. Vi tolker filen for deg, kontrollerer den mot sola, og kalibrerer prognosen for skygge, tap og vekselretterbegrensning.
- POST /api/anlegg
- GET /api/anlegg
- GET /api/anlegg/{id}
- DELETE /api/anlegg/{id}
- POST /api/anlegg/{id}/produksjon
- POST /api/anlegg/{id}/produksjon/{opplasting}/bekreft
- POST /api/anlegg/{id}/produksjon/{opplasting}/avvis
- GET /api/anlegg/{id}/produksjon
- POST /api/anlegg/{id}/maalinger
Hva du får
Prognosen fra Solkart regner produksjonen ut fra innstrålingen og anleggets takflater. Det virkelige anlegget avviker alltid litt: skygge fra trær og naboer, tap i kabler og vekselretter, smuss, eller en vekselretter som er mindre enn panelene og kapper toppen. Med Mitt anlegg sender du inn hva anlegget faktisk har produsert, og prognosen for anlegget tilpasses.
- Last opp en fil i nesten hvilket som helst format — eksport fra vekselretter-appen (Fronius, SolarEdge, Huawei, SMA, APsystems, Enphase …), fra nettselskapet, eller et regneark. SunPoint datatolkning finner ut hvilke kolonner som er tid og produksjon, tidssone, enhet og om det er en tellerstand.
- Tolkningen kontrolleres mot sola: produksjon om natta, en døgnkurve som topper seg på feil tid, høyere effekt enn anlegget kan gi, eller tall som ser ut som eksport til nettet. Feil tidssone og W lest som kW rettes automatisk og vises åpent.
- Send tall løpende, typisk én gang i døgnet — som fil i samme format (legges inn uten spørsmål) eller som JSON til
/maalinger. - Prognosen for anlegget (
/api/forecast?anlegg_id=) har både den tilpassede og den opprinnelige produksjonen.
Pilot
Mitt anlegg er i lukket pilot. Under piloten kreves i tillegg headeren X-Anlegg-Beta med tilgangskoden du har fått. Alle kall krever en API-nøkkel; anleggene tilhører nøkkelen.
Personvern: data lagres i EU, kan slettes når som helst, og slettes automatisk etter 365 dager uten bruk. Se personvernerklæringen.
Kom i gang
# 1. Registrer anlegget (samtykke kreves)
curl -X POST https://api.solkart.no/api/anlegg \
-H "X-API-Key: $SOLKART_API_KEY" -H "X-Anlegg-Beta: $BETA" -H "Content-Type: application/json" \
-d '{ "navn": "Låvetaket", "latitude": 60.79, "longitude": 11.07, "samtykke": true,
"flater": [ { "name": "Sør", "kwp": 48, "tilt_deg": 20, "azimuth_deg": 180 } ] }'
# 2. Last opp en eksport (fila som kropp)
curl -X POST "https://api.solkart.no/api/anlegg/anl_…/produksjon?filnavn=eksport.csv" \
-H "X-API-Key: $SOLKART_API_KEY" -H "X-Anlegg-Beta: $BETA" --data-binary @eksport.csv
# 3. Se tolkningen, og bekreft den
curl -X POST https://api.solkart.no/api/anlegg/anl_…/produksjon/opp_…/bekreft \
-H "X-API-Key: $SOLKART_API_KEY" -H "X-Anlegg-Beta: $BETA"
# 4. Prognose for anlegget
curl "https://api.solkart.no/api/forecast?anlegg_id=anl_…" -H "X-API-Key: $SOLKART_API_KEY"
POST /api/anlegg: registrer et anlegg
| Felt | Type | Påkrevd | Standard | Beskrivelse |
|---|---|---|---|---|
latitude, longitude |
tall | ja | Posisjon i Norge (WGS84). lat/lon godtas også. |
|
flater[] |
liste | ja | Én oppføring per takflate: name, kwp, tilt_deg (0–90), azimuth_deg (0–360, 180 = sør). arrays godtas også. |
|
samtykke |
true |
ja | Bekrefter at du har lest personvernerklæringen og har rett til å laste opp tallene. | |
navn |
streng | nei | «Mitt anlegg» | |
ytelsesfaktor |
0,5–1 | nei | 0,85 | Systemvirkningsgrad (som performance_ratio i prognosen). |
privat |
boolsk | nei | false |
Anlegget står på en bolig. |
Svar 201 med anlegget og id (anl_…). 400 med code ved manglende samtykke (CONSENT_REQUIRED), koordinater (COORDINATES) eller flater (ARRAYS).
GET /api/anlegg lister anleggene til nøkkelen. GET /api/anlegg/{id} gir anlegget, datagrunnlaget (data.timer, fra, til, kwh_totalt), gjeldende kalibrering og de siste opplastingene.
POST /api/anlegg/{id}/produksjon: last opp en fil
Fila sendes som rå kropp (--data-binary, valgfritt ?filnavn=) eller som multipart/form-data med feltet fil. CSV/TXT/TSV (alle vanlige skilletegn, desimalkomma, UTF-8 eller Windows-1252), Excel (.xlsx, .xls) og JSON (liste med objekter). Maks 10 MB.
Svar 201:
{
"opplasting_id": "opp_7c1e…",
"status": "venter",
"tolkning": {
"beskrivelse": "Fila er en eksport fra en vekselretter-portal. Tabellen starter på linje 6 …",
"usikkerheter": ["Viser telleren produksjonen fra hele anlegget, eller bare fra én vekselretter?"],
"sikkerhet": 0.88,
"kilde": "SunPoint datatolkning",
"detaljer": { "tid": { "format": "MMM D, YYYY HH:mm", "tidssone": "UTC", "stempel": "start" },
"verdi": { "enhet": "Wh", "storrelse": "teller" }, "intervall_min": 60 }
},
"endringer": ["Tidene er flyttet +1 time(r), fordi produksjonen ellers toppet seg på feil tid av døgnet."],
"kontroll": {
"status": "ok",
"funn": [],
"oppsummering": { "fra": "2026-06-01T00:00:00.000Z", "til": "2026-06-22T00:00:00.000Z",
"timer": 504, "kwh_totalt": 742.3, "andel_av_klarvaer": 0.7, "tyngdepunkt_avvik_timer": 0 }
},
"forhandsvisning": [ { "dato": "2026-06-01", "malt_kwh": 41.2, "klarvaer_kwh": 58.9 } ]
}
| Felt | Beskrivelse |
|---|---|
tolkning.beskrivelse |
Hvordan fila er lest, i klartekst. |
tolkning.usikkerheter |
Spørsmål til deg om det som ikke kunne avgjøres fra fila. |
tolkning.kilde |
SunPoint datatolkning, regelbasert (reserve) eller lagret tolkning (samme format som en fil du har bekreftet før). |
endringer |
Rettelser kontrollen gjorde og fant bekreftet, med begrunnelse. |
kontroll.status |
ok, advarsel eller feil. Med feil kan opplastingen ikke bekreftes. |
kontroll.funn[] |
kode, alvor og tekst: natt, tid, topp_hoy, topp_lav, niva_hoy, niva_lav, negative, dekning, ikke_produksjon. |
forhandsvisning[] |
Målt produksjon per døgn mot hva anlegget kan gi i rent klarvær (siste 60 døgn). |
Fila lagres ikke som produksjon før den er bekreftet: POST …/produksjon/{opplasting}/bekreft (eller …/avvis). Med ?bekreft=true på opplastingen bekreftes den i samme kall når kontrollen ikke finner feil.
Lagret tolkning
Når du har bekreftet en fil, huskes tolkningen. Neste fil med de samme kolonneoverskriftene tolkes likt, uten AI, og legges inn automatisk (status: "bekreftet", lagt_inn_automatisk: true) — så lenge kontrollen ikke finner feil og ingen rettelser trengs. Daglige eksporter i samme format går altså rett inn.
Samme time sendt på nytt erstatter den gamle verdien, så overlappende filer gir ikke dobbelt telling.
POST /api/anlegg/{id}/maalinger: løpende innsending
For systemer som sender tall jevnlig, typisk én gang i døgnet med døgnets timer. Fast format, ingen tolkning, svar på millisekunder.
curl -X POST https://api.solkart.no/api/anlegg/anl_…/maalinger \
-H "X-API-Key: $SOLKART_API_KEY" -H "X-Anlegg-Beta: $BETA" -H "Content-Type: application/json" \
-d '{ "enhet": "kWh",
"verdier": [ { "tid": "2026-10-06T10:00:00Z", "verdi": 3.21 },
{ "tid": "2026-10-06T11:00:00Z", "verdi": 4.05 } ] }'
| Felt | Type | Standard | Beskrivelse |
|---|---|---|---|
verdier[] |
liste | påkrevd | { "tid", "verdi" } (også time/value) eller [tid, verdi]. Høyst 20 000 per kall. |
enhet |
W, kW, MW, Wh, kWh, MWh |
kWh |
|
storrelse |
energi, effekt |
energi for Wh-enheter, ellers effekt |
Energi i intervallet, eller gjennomsnittlig effekt. |
intervall_min |
heltall | 60 | Lengden på hvert intervall. 15-minuttersverdier summeres til timer. |
stempel |
start, slutt |
start |
Om tid er starten eller slutten av intervallet. |
tidssone |
UTC, Europe/Oslo, +01:00 |
UTC |
Brukes bare for tider uten sone. |
Svar 201 med lagret, fra, til. Verdier som ikke kan stemme — mer enn ~1,15 × kWp på en time, eller negative — gir 422 med problemer[], og ingenting lagres. Fra ett døgn med data kjøres også den fulle kontrollen.
Prognose for anlegget
GET /api/forecast?anlegg_id={id} (eller "anlegg_id" i JSON-kroppen) bruker anleggets posisjon og takflater. Alle vanlige parametre virker (daily, snow, nowcast …). I tillegg:
| Felt | Beskrivelse |
|---|---|
pv_timeseries, pv_system |
Produksjonen tilpasset anlegget (når kalibreringen er i bruk). |
pv_timeseries_ukorrigert, pv_system.ukorrigert |
Den opprinnelige produksjonen, uten tilpasning. |
kalibrering |
brukt, faktor, klipp_kw, metode, forelopig, grunn (i klartekst), oppdatert. |
anlegg |
id og navn. |
Med kalibrering=false (spørrestreng eller kropp) er hovedserien den opprinnelige, og den tilpassede utelates.
Kalibreringen
Kalibreringen oppdateres hver natt for anlegg som har fått nye tall (første gang med en gang). Trinn 1, som er i bruk nå:
- Ytelse fra klare dager. På dager med rent klarvær følger produksjonen klarværsmodellen tett, og forholdet mellom målt og modellert viser om anlegget gir mer eller mindre enn konfigurasjonen sier. Faktoren tilpasses på annenhver klare dag og testes på resten; den brukes bare når avviket er over 10 % og slår den ukorrigerte modellen på testdagene. Krever minst 6 klare dager. Merket
forelopig: klarværsmodellen har selv noen prosents usikkerhet. - Vekselretterbegrensning. Når toppen flater ut på samme verdi mens sola fortsatt stiger, er vekselretteren mindre enn panelene. Grensen (
klipp_kw) legges på prognosen.
Neste trinn bruker den faktiske innstrålingen for de samme timene i stedet for klarvær, og korrigerer for skygge etter solens posisjon.
Slett
DELETE /api/anlegg/{id} sletter anlegget, alle opplastede filer og alle produksjonstall straks. Det kan ikke angres. Anlegg som ikke er brukt på 365 dager, slettes automatisk.
Feil
| Status | Kode | Når |
|---|---|---|
| 401 | API_KEY_REQUIRED |
Mangler API-nøkkel. |
| 403 | BETA |
Mangler eller feil X-Anlegg-Beta under piloten. |
| 404 | Anlegget finnes ikke, eller tilhører en annen nøkkel. | |
| 409 | FAILED_CHECKS |
Opplastingen kan ikke bekreftes fordi kontrollen fant feil. |
| 413 | Fila er over 10 MB, eller mer enn 20 000 verdier. | |
| 422 | UNREADABLE, NOT_INTERPRETED, FAILED_CHECKS |
Fila kunne ikke leses eller tolkes, eller målingene ble avvist. |