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
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



