Lanaren xehetasuna

API Solar — datu fotovoltaikoen ingestioa, normalizazioa eta agregazioa egiteko backend-a

Backend API honek ekoizpenean dagoen instalazio fotovoltaiko baten benetako datuak kudeatzen ditu.

Bere funtzioa kanpoko iturri askotatik datozen informazio sakabanatuak zentralizatzea, formatu heterogeneoak normalizatzea eta frontend aplikazioek kontsumitzeko prest dauden datu energetiko bateratuak eskaintzea da.

Sistema autentifikazioarekin, rolekin eta baimenekin babestuta dago, datuen babeskopiak egiteko mekanismoak ditu eta datu bolumen handiak kudeatzeko diseinatuta dago.

Arazoa

Instalazio fotovoltaiko baten datuak ez daude zentralizatuta:

  • Energia hornitzailea (Iberdrola)
  • Sistemaren operadorea (REE)
  • Instalazioko inbertsorea

Iturri bakoitzak:

  • CSV fitxategi desberdinak eskaintzen ditu,
  • egitura, eremu eta formatu desberdinekin,
  • eta datu-eredu komun gabe.

Gainera:

  • CSV batzuek 5 minuturo irakurketak dituzte, beste batzuek orduko agregazioak ematen dituzte,
  • eta frontend-ak datu koherente eta konparagarriak behar ditu, jatorria edozein dela ere.

Soluzioa

API bat diseinatu nuen, datu energetikoak integratzeko, balioztatzeko eta normalizatzeko geruza gisa jarduten duena, frontend-a iturrien konplexutasunetik eta heterogeneotasunetik isolatuz.

CSV ingestio aurreratua

  • 4 CSV formatu desberdin onartzen ditu hornitzaile ezberdinetatik.
  • Fitxategi mota eta egitura automatikoki identifikatzen ditu.
  • Iturri bakoitza datu-eredu bateratu batera bihurtzen du.

📊 Erabilera errealean:

  • 1.000 CSV fitxategi baino gehiago prozesatu dira
  • Iturri eta formatu anitzetatik
  • Datu-basean karga oso eta egokiekin.

Normalizazioa eta agregazioa

Datuak beti ordutegi-datu gisa irakurtzen, eraldatzen eta persistitzen dira, CSVaren jatorrizko granularitatea edo egitura edozein dela ere.

Kargan zehar:

  • jasotako fitxategia aztertzen da,
  • CSV hornitzaileak emandako informazio errepikakorra iragazten da,
  • eta orduko datua bateratzen da, hori baita datu-basean persistitzen dena.

Eraldaketa logika hau fitxategi kargen geruzan inplementatzen da, uploads karpetan, Pythonen gaitasunak baliatuz fitxategiak eta datuak tratatzeko.

Persistitutako ordutegi-datutik abiatuta, APIak kontsultaren arabera ikuspegi desberdinak eskaintzen ditu:

  • Eguneko datuak

    urtea–hilabetea–eguna eskatzen da eta APIak 24 ordutako balio itzultzen ditu.

  • Hileko datuak

    urtea–hilabetea eskatzen da eta APIak 28, 29, 30 edo 31 eguneko balio itzultzen ditu, hilabetearen eta urtearen arabera.

  • Urteko datuak

    urtea eskatzen da eta APIak 12 hileko balio itzultzen ditu.

APIa eta SQL ikuspegiak prest daude kontsulta berari modu desberdinean erantzuteko, hileko kontsultetan gertatzen den bezala, non emaitza kopurua dinamikoki aldatzen den.

Kudeatutako metrikak

  • instalazioaren kontsumoa
  • ekoizpen fotovoltaikoa
  • sarearekiko energia-balantzea:
    • energia erositakoa
    • energia esportatua

Arkitektura bateria kudeatzeko prestatua dago, instalazio honek ez izan arren:

  • bateriarekin energia-balantzea:
    • energia biltegiratua
    • energia kontsumitua

Errendimendua

  • SQL ikuspegiak erabiltzen dira agregazio errepikatuak azkartzeko,
  • datu bateratuak persistitzen dira, kalkulu errepikatuak saihestuz,
  • datu-basea egia-iturri bakarra da ordutegi-datutik abiatuta.

Segurtasuna, rolak eta sarbide kontrola

APIa guztiz babestuta dago:

  • login eta JWT bidezko autentifikazioa
  • Rol eta baimenen kudeaketa

Administratzaile rol duten erabiltzaileek bakarrik egin dezakete:

  • datu-basea kudeatu
  • datuak kargatu edo leheneratu
  • eragiketa sentikorrak exekutatu

Segurtasun logika negozio logikatik argi bereizita dago.

Babeskopiak eta datuen babesa

Sistemak datuen babesa bermatzeko mekanismo esplizituak ditu:

  • Datu-basea JSON fitxategietara esportatzea
  • JSON fitxategiak kargatzea leheneratze edo migraziorako
  • Fitxategi hauek prozesatutako informazioaren babeskopiak dira

Horri esker:

  • datu historikoak babestu,
  • migrazioak erraztu,
  • eta arrisku operatiboak murriztu.

Arkitektura eta stack teknikoa

  • Hizkuntza: Python
  • Frameworka: Flask
  • Datu-basea: MySQL
  • ORM: SQLAlchemy
  • Migrazioak: Alembic / Flask-Migrate
  • Autentifikazioa: Flask-JWT-Extended
  • Testing: pytest, pytest-mock

Mendekotasunak requirements.txt bidez kudeatzen dira.

Operazioa eta despliegua

  • APIa PythonAnywhere-n desplegatuta
  • deploy.sh script-a deployak automatizatzeko repo eguneratu ondoren
  • Sistema ekoizpenerako erabilera errealerako pentsatua, ez demo gisa

🔗 APIa ekoizpenean

🔗 GitHub biltegia

Proiektu honek zer erakusten du

Proiektu honek nire gaitasuna erakusten du:

  • Datu errealetara orientatutako backend APIak diseinatzea
  • Kanpoko iturri heterogeneoak integratzea
  • Informazio bolumen handiak prozesatzea
  • Segurtasuna, rolak eta sarbide kontrola inplementatzea
  • Hazi eta eboluzionatzeko prest dauden sistemak diseinatzea
  • Softwarea ekoizpenean operatu eta mantentzea

Proiektuaren irudiak

APIaren egoera ekoizpenean
APIaren egoera ekoizpenean
Backend-aren biltegia eta egitura
Backend-aren biltegia eta egitura
PythonAnywhere-n despliegatzeko ingurunea
PythonAnywhere-n despliegatzeko ingurunea