TapHome

Forecast.Solar

Packet Parser → HTTP
Trimis de
Ultima actualizare: 03. 2026
Forecast.Solar

Forecast.Solar este un API cloud gratuit care oferă predicția producției de energie a sistemelor fotovoltaice în funcție de locație, orientarea panourilor și puterea instalată. Combină datele de iradiere din Sistemul european de informații geografice fotovoltaice (PVGIS) cu prognozele meteo, pentru a estima câtă energie va produce o instalație solară.

TapHome se conectează la acest serviciu prin HTTPS, cu un șablon HTTP PacketParser. Șablonul interoghează endpointul /estimate o dată pe oră (în limita de 12 cereri pe oră a variantei gratuite) și oferă șase senzori de energie numai pentru citire: patru intervale orare ale zilei curente și totalurile zilnice pentru azi și mâine. Nu este necesară autentificarea și nici o cheie API.

Configurare

La importul șablonului sunt necesari cinci parametri. Aceștia descriu instalația solară și se folosesc pentru construirea URL-ului cererii API:

  • Latitude — latitudinea zecimală a amplasamentului sistemului fotovoltaic (de ex. 48.1778 pentru Bratislava). Interval: -90 până la 90, precizie 0,0001 (~10 m).
  • Longitude — longitudinea zecimală a amplasamentului sistemului fotovoltaic (de ex. 17.1426 pentru Bratislava). Interval: -180 până la 180.
  • PV_declination — unghiul de înclinare al panourilor în grade. 0 = orizontal (acoperiș plat), 90 = vertical (montaj pe perete). Valori tipice pentru locuințe: 20–45.
  • PV_azimuth — orientarea panourilor față de punctele cardinale. -180 sau 180 = nord, -90 = est, 0 = sud, 90 = vest. Pentru panourile orientate spre sud folosiți 0.
  • PV_kWp — puterea fotovoltaică totală instalată în kilowați-vârf (de ex. 5 pentru un sistem de 5 kWp).

Toți cei cinci parametri se salvează în TapHome ca variabile ale modulului (Module Variables) și pot fi modificați după import, fără reimportarea șablonului.

Forecast.Solar API folosește o convenție pentru azimut diferită de cea a altor instrumente. În acest API 0 = sud, iar valorile cresc în sensul acelor de ceasornic (-90 = est, 90 = vest, 180/-180 = nord). Dacă preluați valoarea din Home Assistant (unde 180 = sud), scădeți 180 din valoarea din HA.

Pentru a afla coordonatele, faceți clic dreapta pe locația dvs. în Google Maps și copiați valorile latitudinii/longitudinii.

Cum funcționează

Modulul trimite o singură cerere HTTP la fiecare ciclu de interogare:

1
2
GET /estimate/{Latitude}/{Longitude}/{PV_declination}/{PV_azimuth}/{PV_kWp}
Accept: application/json

API-ul returnează un răspuns JSON care conține valorile cumulate în wați-oră la fiecare oră (watt_hours), energia pe perioadă (watt_hours_period), puterea instantanee (watts) și totalurile zilnice (watt_hours_day). Șablonul procesează watt_hours și watt_hours_day și din ele derivă toate cele șase valori ale dispozitivelor.

Din metadatele răspunsului se citesc două atribute de service: Loc (numele locației identificate, de ex. „Bratislava, Slovakia”) și Fus orar (de ex. „Europe/Bratislava”). Acestea sunt vizibile în detaliile modulului și confirmă că API-ul a identificat corect locația.

Funcțiile dispozitivului

Șablonul oferă șase senzori de energie numai pentru citire. Toate valorile sunt în wați-oră (Wh) și reprezintă producția fotovoltaică prevăzută.

Predicția energiei pe intervale orare

Ziua este împărțită în patru intervale orare. Fiecare dispozitiv arată producția de energie așteptată pentru intervalul respectiv:

  • Energie 0–9h — producția prevăzută de la miezul nopții până la 9:00. Citește valoarea cumulată în wați-oră la marcajul de timp 09:00. În majoritatea locațiilor acoperă intervalul de la răsărit până dimineața devreme.
  • Energie 9–12h — producția prevăzută de la 9:00 la 12:00. Se calculează ca diferența dintre valorile cumulate la 12:00 și la 09:00.
  • Energie 12–15h — producția prevăzută de la 12:00 la 15:00. Se calculează ca diferența dintre valorile cumulate la 15:00 și la 12:00. De obicei este intervalul cu cea mai mare producție.
  • Energie 15–0h — producția prevăzută de la 15:00 până la sfârșitul zilei. Se calculează ca totalul zilnic minus valoarea cumulată la 15:00. În practică acoperă intervalul de la 15:00 până la apus, deoarece după lăsarea întunericului producția scade la zero.

Această împărțire permite ca smart rules să vizeze anumite părți ale zilei — de exemplu, programarea încărcării bateriei în vârful de producție 12–15h sau amânarea sarcinilor mari consumatoare de energie până la orele cu cea mai mare producție așteptată.

Totaluri zilnice
  • Predicția producției solare (azi) — producția totală de energie prevăzută pentru ziua curentă. Citește direct valoarea watt_hours_day pentru data de azi.
  • Predicția producției solare (mâine) — producția totală de energie prevăzută pentru ziua următoare. Folosește data de mâine din același răspuns API.

Aceste totaluri sunt utile pentru planificarea zilnică — de exemplu, pentru a decide dacă pompa de căldură funcționează cu energie fotovoltaică sau din rețea, în funcție de producția solară așteptată.

Funcții suplimentare

Forecast.Solar API oferă și estimări ale puterii instantanee (wați pe perioade de 15 minute), date despre energia pe fiecare perioadă, fără cumulare și identificarea orei de producție maximă. Variantele plătite adaugă suport pentru mai multe orientări ale panourilor (2–4 planuri), date istorice de producție, estimări pentru cer senin și factori de atenuare pentru ajustarea la umbrire. Acestea pot fi adăugate într-o actualizare viitoare a șablonului.

Exemple de automatizare

Încărcarea bateriei în funcție de predicție

Folosiți dispozitivul Predicția producției solare (azi) într-o smart rule:

  • Condiție: Predicția producției solare (azi) > 15000 (Wh = 15 kWh)
  • Acțiune: setați bateria în modul „încărcare numai din fotovoltaic”

În zilele înnorate, cu o predicție scăzută, treceți în schimb la încărcarea din rețea în orele cu tarif redus.

Programarea sarcinilor mari consumatoare de energie

Folosiți dispozitivele pe intervale orare pentru a găsi cea mai potrivită perioadă pentru sarcinile cu consum mare:

  • Condiție: Energie 12–15h > 3000 (Wh)
  • Acțiune: porniți la 12:00 pompa piscinei, încălzitorul de apă sau încărcarea vehiculului electric

Depanare

Toate dispozitivele afișează zero sau NaN
  1. Verificați conexiunea la internet a TapHome Core — șablonul necesită acces HTTPS de ieșire către api.forecast.solar
  2. Verificați dacă API-ul răspunde — deschideți https://api.forecast.solar/estimate/48.1778/17.1426/45/0/5 într-un browser (înlocuiți cu parametrii dvs.)
  3. Dacă eroarea conține un cod de stare (de ex. „429”), limita de cereri a fost depășită. Varianta gratuită permite 12 cereri pe oră — așteptați resetarea ferestrei glisante
  4. Codul de stare 400 înseamnă de obicei coordonate invalide (latitudinea și longitudinea pot fi inversate sau locația se află pe apă)
Valorile prevăzute par prea mari sau prea mici
  1. Verificați dacă parametrul PV_kWp corespunde puterii instalate reale — acesta scalează direct toate valorile prevăzute
  2. Verificați PV_declination — un panou orizontal (0) produce mai puțin decât un panou înclinat optim (30–40 în Europa Centrală)
  3. Verificați PV_azimuth — orientarea trebuie să corespundă realității. Rețineți: în acest API 0 = sud
  4. API-ul folosește date de prognoză meteo care pot să nu reflecte condițiile locale (clădiri din apropiere, copaci, umbrire temporară). Pentru ajustarea la umbrire folosiți factorul de atenuare din varianta plătită a API-ului
Energie 15–0h afișează valori neașteptat de mici

Acesta este comportamentul așteptat. Dispozitivul „15–0h” calculează totalul zilnic minus producția cumulată la 15:00. Deoarece producția fotovoltaică se oprește practic la apus, această valoare reprezintă producția de la 15:00 până la apus — nu până la miezul nopții. În lunile de iarnă, cu apus timpuriu, valoarea poate fi foarte mică.

Forecast.Solar API efectuează mentenanța trimestrială în prima zi a fiecărui trimestru, în jurul miezului nopții UTC (ianuarie, aprilie, iulie, octombrie). În timpul mentenanței, API-ul returnează HTTP 503, iar dispozitivele afișează temporar erori.

Dispozitive disponibile

Forecast.Solar Modul
Atribute de service
LocNumele locației identificate de API din coordonatele trimise — confirmă că API-ul a identificat locația corectă
Fus orarFusul orar determinat de API pentru locația configurată — se folosește pentru alinierea corectă a marcajelor de timp
Variabile personalizate
Latitude (numeric)Latitudinea geografică a instalației fotovoltaice în grade zecimale (se setează la import)
Longitude (numeric)Longitudinea geografică a instalației fotovoltaice în grade zecimale (se setează la import)
PV_declination (numeric)Unghiul de înclinare al panourilor fotovoltaice în grade (0 = orizontal, 90 = vertical)
PV_azimuth (numeric)Orientarea panourilor fotovoltaice, în grade (0 = sud, -90 = est, 90 = vest, ±180 = nord)
PV_kWp (numeric)Puterea de vârf instalată a sistemului fotovoltaic în kilowați

forecast.solar

Citire (modul)
VAR response := SENDHTTPREQUEST("/estimate/" + Latitude + "/" + Longitude + "/" + PV_declination + "/" + PV_azimuth + "/" + PV_kWp, "GET", "", "Accept: application/json");
IF response.IsSuccess
    output := response.Content;
ELSE
    ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Atribute de service
Place
PARSEJSON(output, "$.message.info.place")
Time zone
PARSEJSON(output, "$.message.info.timezone")
Energie 0–9h Variabilă Doar citire

Energia fotovoltaică prevăzută de la miezul nopții până la 9:00 — valoarea cumulată în wați-oră la marcajul de timp 09:00

numeric Unitate: Wh json_path

Energie 0–9h

Citire
var date := tostring(NOW(), "yyyy-MM-dd");

var tmp := PARSEJSON(output,"$.result.watt_hours");

PARSETEXT(tmp, date + " 09:00:00\":", ",");
Energie 9–12h Variabilă Doar citire

Energia fotovoltaică prevăzută de la 9:00 la 12:00 — diferența dintre valorile cumulate în wați-oră la 12:00 și la 09:00

numeric Unitate: Wh json_path

Energie 9–12h

Citire
var date := tostring(NOW(), "yyyy-MM-dd");

var tmp := PARSEJSON(output,"$.result.watt_hours");

var h9 := PARSETEXT(tmp, date + " 09:00:00\":", ",");
var h12 := PARSETEXT(tmp, date + " 12:00:00\":", ",");

h12 - h9
Energie 12–15h Variabilă Doar citire

Energia fotovoltaică prevăzută de la 12:00 la 15:00 — diferența dintre valorile cumulate în wați-oră la 15:00 și la 12:00

numeric Unitate: Wh json_path

Energie 12–15h

Citire
var date := tostring(NOW(), "yyyy-MM-dd");

var tmp := PARSEJSON(output,"$.result.watt_hours");

var h12 := PARSETEXT(tmp, date + " 12:00:00\":", ",");
var h15 := PARSETEXT(tmp, date + " 15:00:00\":", ",");

h15 - h12
Energie 15–0h Variabilă Doar citire

Energia fotovoltaică prevăzută de la 15:00 până la sfârșitul zilei — totalul zilnic minus valoarea cumulată în wați-oră la 15:00

numeric Unitate: Wh json_path

Energie 15–0h

Citire
var date := tostring(NOW(), "yyyy-MM-dd");

var tmp := PARSEJSON(output,"$.result.watt_hours");

var last := PARSEJSON(output, "$.result.watt_hours_day." + date);

var h15 := PARSETEXT(tmp, date + " 15:00:00\":", ",");

last - h15
Predicția producției solare (azi) Variabilă Doar citire

Producția totală de energie solară prevăzută pentru ziua curentă, în wați-oră

numeric Unitate: Wh json_path

Predicția producției solare (azi)

Citire
var date := tostring(NOW(), "yyyy-MM-dd");

PARSEJSON(output, "$.result.watt_hours_day." + date)
Predicția producției solare (mâine) Variabilă Doar citire

Producția totală de energie solară prevăzută pentru ziua următoare, în wați-oră

numeric Unitate: Wh json_path

Predicția producției solare (mâine)

Citire
var date := tostring(DATETIMEADD(NOW(), 0, 0, 1), "yyyy-MM-dd");

PARSEJSON(output, "$.result.watt_hours_day." + date)
Conexiune: Packet Parser → HTTP
Îmbunătățiri posibile (9)
  • Instantaneous Power (watts) — Power average (W) per 15-min period — HA integration exposes this as 'Estimated Power Production — Now'
  • Energy per Period (watt_hours_period) — Energy produced in each 15-min period — alternative to cumulative watt_hours with delta calculation
  • Remaining Energy Today — Daily total minus current cumulative — HA exposes this, template could compute from existing data
  • Peak Production Time — Timestamp of highest watts value — requires iterating watts object, not trivially extractable with PARSEJSON
  • Multi-Plane Support (2-4 planes) — Paid tiers support 2-4 panel orientations per request — requires API key import parameter
  • Historic Production Data — Past production data for comparison — requires paid API key
  • Clear Sky Estimate — Theoretical maximum production without clouds — requires Professional tier API key
  • Damping Factor (shadow adjustment) — Adjusts morning/evening predictions for shadows, trees, buildings — could be added as import parameter
  • Inverter Power Limit — Limits peak prediction to inverter capacity — could be added as import parameter

Surse

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal