Miközben ezt írom, a magyar áram 77%-a naperőműből jön. Napos augusztusi délelőtt van — estére ugyanez a szám nagyjából nulla lesz, és a gáz meg az import veszi át a terepet. Ez az adat nyilvános: a MAVIR (a magyar villamosenergia-rendszer irányítója) 5 percenként publikálja, miből termelünk éppen. Csak épp grafikonként, egy iframe-be csomagolva, számok nélkül. Én meg pont a számokra voltam kíváncsi.
A grafikon mögé nézve
A MAVIR „Energia MIX" oldala egy Liferay portál, ami a tényleges grafikont egy
rtdwweb.mavir.hu-s iframe-ből tölti. Az iframe egy SVG-t kér le —
egy 700 kilobájtos SVG-t, amiben benne van az egész napi görbe
minden pixele. Ezt parsolni lehetne, de nem kellene.
Szerencsére a lap JavaScript route-táblájában (jsRoutes — a Play
framework generálja) ott figyel egy getExportFile nevű végpont is.
Ez az, amit a grafikon „Letöltés" gombja hív: tetszőleges időablakra, 5 perces
bontásban adja vissza ugyanazt az adatot, amiből az SVG készül. A CSV formátum
500-as hibával elszáll (ki tudja, mióta), de az XLSX működik.
Egy sima GET, paraméterben az időablak, és jön a táblázat: 17 adatoszlop,
forrásonként megawattban. Nukleáris, lignit, gáz, szél, ipari naperőmű, biomassza,
vízerőművek, import-export szaldó — minden.
A csapda: a hiányzó cellák
Az első parser fél óra alatt kész volt, és magabiztosan hozta a rossz számokat.
Az XLSX-ben ugyanis a cellák nem pozíció szerint sorakoznak, hanem mindegyik
magával hordja a saját címét (A2, D2…) — és ami üres,
az egyszerűen nincs benne a fájlban. A „hitelesített
rendszerterhelés" oszlop a friss sorokban még üres, így aki sorrendben olvassa a
cellákat, annál minden ezt követő érték egy hellyel arrébb csúszik. Nálam a
naperőmű termelése például a biomassza rovatban landolt — 2800 MW biomassza,
azért az feltűnő.
Van egy beépített ellenőrzés az adatban: a forrásonkénti termelés összegének ki kell adnia a „Hazai termelés" oszlopot. Cellacím szerinti parsolással megawattra pontosan stimmel — pozíció szerintivel köszönőviszonyban sincs vele. Ez a fajta belső konzisztencia-teszt olcsóbb, mint bármilyen manuális összevetés, és minden lekérésnél ingyen újrafut.
Mit számolunk és miből?
A dashboard a bruttó üzemirányítási mérésekből dolgozik — ez a „mit mér a rendszerirányító éppen most" nézet, nem a később hitelesített elszámolási adat. Három dolgot mutat:
- Forrásonkénti részarány — minden forrás a bruttó hazai erőművi termelés százalékában, megawattal együtt.
- Megújuló arány — szél + nap + biomassza + víz + egyéb megújuló, egyetlen számban.
- Import-export szaldó — mennyit hozunk be (vagy viszünk ki), és ez a fogyasztás hány százaléka.
Egy finomság: a százalékok a hazai termelésre vetülnek, nem a fogyasztásra. A kettő nem ugyanaz — a fogyasztás jellemzően nagyobb, a különbséget az import fedi. Ha az érdekel, hogy „a konnektorból jövő áram hány százaléka zöld", ahhoz az importot is fel kellene bontani forrásonként, amit a szomszédos rendszerirányítók adataiból lehetne összerakni. Az már egy másik cikk.
A stack: egy PHP fájl meg egy HTML
Ez a site PHP-n fut, úgyhogy a megvalósítás is az maradt:
-
energiamix_api.php— lekéri az utolsó 3 óra XLSX-exportját, a beépítettZipArchive+SimpleXMLpárossal kibontja, megkeresi a legfrissebb teljes adatsort, és JSON-ként adja vissza a százalékokat. A választ 5 percre fájlba cache-eli — a MAVIR-t tehát akárhány olvasó mellett is óránként legfeljebb 12-szer hívjuk. Ha a MAVIR épp nem elérhető, a legutolsó jó cache megy ki. -
energiamix.html— statikus oldal, ami az API-t hívja és 5 percenként újrahúzza magát. Sávok, számok, visszaszámláló. Semmi build, semmi keretrendszer.
A színekre több gondot fordítottam, mint elsőre indokoltnak tűnne: a négy kategóriaszín (nukleáris, megújuló, fosszilis, egyéb) úgy lett megválasztva, hogy színtévesztve is megkülönböztethetőek maradjanak — ezt nem szemre lőttem be, hanem egy színkontraszt-validátorral ellenőriztem, világos és sötét módra külön-külön. Ha az ember ingyen kap egy jól megkülönböztethető palettát, kár nem használni.
Mit látni belőle?
Amire számítasz, meg amire nem. Hogy nyári délben a nap dominál, az nem hír. Az már érdekesebb, hogy mennyire: dél körül rendszeresen a hazai termelés háromnegyede fölé megy a naperőművi arány, miközben az ország összes szélerőműve épphogy egy nagyobb gázblokknyit ad. És az is látszik, ami épp nincs: amikor ezt írom, a nukleáris sáv szokatlanul rövid — a szaldó meg pont annyival nagyobb. A rendszer nem hazudik, csak számolni kell.
Este kilenckor érdemes ránézni még egyszer: ugyanaz a dashboard egy teljesen más országot mutat. Gáz, import, egy kis lignit — a naperőmű sora nullán. Ez a kettősség a magyar villamosenergia-rendszer jelenlegi legnagyobb sztorija, és 5 percenként frissülő számokban sokkal jobban átjön, mint bármilyen éves statisztikában.
Ha érdekel
Az élő dashboard itt fut: energiamix.html. Az adat a MAVIR-é, a hibák az enyémek; a számok tájékoztató jellegűek — aki kereskedni akar velük, az a hitelesített elszámolási adatokat nézze, ne az üzemirányítási pillanatképet.
A közcélú adat akkor ér valamit, ha nem csak publikus, hanem olvasható is. A kettő között néha csak egy hétvégi délelőtt a különbség.