blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
2
SLEDOVAŤ BLOG
Programátor
deadawp



Odstávky elektriny - ePaper s ESP32
pridal deadawp 30.8. 2025 o 20:14 (naposledy upravené 31.8. 2025 o 15:54)

Webaplikácia vypadokelektriny.sk vznikla pod VSD a ide o GIS portál, ktorý ukazuje aktuálne výpadky elektriny a nahlásené poruchy, vrátane stavu ich riešenia, opravy pre príslušný deň ma mapovom podklade Slovenska. Okrem dostupnosti týchto dát priamo na mape formou markerov, ktoré sú interaktívne a poskytujú dodatočné informácie pri kliknutí na ne, je tiež možné na stránke nájsť aj kompletný zoznam týchto  porúch v tabuľkovom prevedení pre príslušnú položku v menu.

V súčasnosti (od 2024) je do systému zapojená aj ZSD, teda vypadokelektriny.sk pokrýva aj západné Slovensko. Súčasťou webaplikácie je aj vyhľadávanie, ktoré umožňuje získať dáta o plánovaných odstávkach elektriny na základe rôznych vstupných parametrov - dátum, miesto, číslo elektrometra, číslo EIC (číslo odberného miesta). Skrz portál je možné nahlásiť výpadok elektriny on-line.

Webaplikácia pri svojom behu na pozadí využíva rôzne API, ktoré je možné zobraziť skrz Dev Tools (Inspect) v prehliadači a vidieť tak jednotlivé endpointy, na ktoré sa vykonávajú requesty. Samotné VSD neposkytuje k API žiadnu dokumentáciu. Pri analýze API, ktoré sa volajú na základe toho, kam používateľ klikne, alebo kedy odošle vyplnený HTML formulár som dospel k zaujímavým výsledkom.

Cieľom dnešného článku bude využitie mikrokontroléra ESP32 pre získanie informácii o plánovanej odstávke na adrese odberného miesta v najbližších 30-tich dňoch, pričom daná informácia bude vypísaná na ePaper B/W displej, na ktorom môžu byť aj ďalšie doplnkové dáta, napríklad aktuálne počasie, sled autobusov mestskej dopravy z najbližšej zastávky a podobne.

Z API je zrejmé, že dáta v JSON formáte sa prenášajú z a na endpointy, na ktoré sa vykonávajú volania. Dáta obsahujú napríklad GPS súradnice vo formáte WGS84, pričom súradnica X reprezentuje východnú dĺžku a súradnica Y reprezentuje severnú šírku. Údaje o dátume a čase využívajú štandard ISO 8601. Zadávaním dát do formulárov a ich spúšťaním môžeme v Inspecte vidieť, kam request smeruje, o aký request ide, aký má payload a tiež, čo z endpointu dostávame ako odpoveď servera. Celkový počet dostupných API metód nie je známy.

Pre našu potrebu využijeme API, ktoré umožňuje vrátenie JSON response s dátami o plánovanej odstávke v najbližších 30-tich dňoch od času vykonania requestu - teda api/data/outages30days/address. Rovnako tak táto API metóda vypíše aj minulú odstávku, do určitého počtu dní, neviem ale, či je to tiež 30. Request vyžaduje POST metódu, ktorá v tele správy nesie vstupné dáta o mieste vo formáte JSON, ide o vnorenú štruktúru.

Vo webaplikácii vypadokelektriny.sk sa request realizuje skrz formulár, kde je možné zadať jeden, alebo viac parametrov súčasne. Po odoslaní sa dáta naformátujú do JSON-u a vykoná sa request, ktorý môžeme odkopírovať a neskôr použiť priamo na ESP32 mikrokontroléri pre získanie aktuálnych dát o možnej plánovanej odstávke na danom mieste. Request si môžeme prv vyskúšať napr. v programe Postman, ktorým je možné otestovať API s identickými parametrami, ktoré môžeme nastaviť u ESP32. Ak bude request fungovať pod Postmanom, máme istotu, že tak tomu bude aj pod ESP32.

Do formulára na stránke vypadokelektriny.sk pri plánovaných odstávkach zadáme minimálne príslušnú obec a jej PSČ. Ak na mieste nebude prebiehať plánovaná odstávka, dostaneme prázdnu (empty) JSON odpoveď, teda []. Parametre, ktoré sa nezadali sa naformátujú ako prázdne hodnoty k prednastaveným kľúčom JSON štruktúry.

Payload requestu na strane klienta - vnorená JSON štruktúra:
{"data":
{
"OBEC":"Spišská Nová Ves",
"PSC":"05201",
"ULICA":"",
"CISLO_DOMU":"",
"EIC":"",
"CISLO_ELEKTROMERA":""
}
}

Ak sa na mieste bude vykonávať plánovaná odstávka, získame JSON:
[
{
"recordNumber": "25-174452",
"date": "2025-09-02T07:30:00",
"start": "2025-09-02T07:30:00",
"end": "2025-09-02T15:00:00",
"streets": [ { "street": "Predná huta", "coordinates": [ { "gps_x": "20.53294507", "gps_y": "48.91693291", "number": "25-174452" }, { "gps_x": "20.53294507", "gps_y": "48.91693291", "number": "25-174452" } ]
} ]

]

Možností ako použiť toto API je mnoho a umožňuje to vykonanie presnejšieho requestu, čím si viete výsledok zredukovať na ulicu v rámci obce, či priamo na konkrétny dom. Môžete zadať kompletnú adresu, alebo použitie EIC čísla, čo je aj odporúčané, nakoľko nie všetky odberné mieta majú riadne nahlásenú ulicu a teda pri zadaní správnej ulice sa vám nemusí vrátiť informácia o plánovanej odstávke. S EIC, čí číslom elektrometra získate jednoznačnú odpoveď z API, keďže identifikuje vašu konkrétnu elektrickú prípojku a bude jasné, či sa jej odstávka týka.

U ESP32 môžeme štandardne vykonať request na API skrz WiFiClient, alebo HTTPClient knižnicu. Keďže ide o šifrované spojenie so serverom, je potrebné využiť aj certifikát certifikačnej autority. Získané dáta, ktoré vráti API vypadokelektriny.sk spracujeme skrz knižnicu ArduinoJSON, ktorá umožňuje parsovanie JSON dát.

Následne môžeme získané dáta vypísať na ePaper displej, avšak je nutné zbať aj na znakovú sadu, keďže základné knižnice ako GxEPD, GxEPD2 nepoznajú diakritiku. Je vhodné využiť grafickú knižnicu Adafruit_GFX, ktorá poskytuje aj fontys podporou diakritiky, resp. po nalinkovaní knižnice U8g2_for_Adafruit_GFX. Prípadne môžete používať texty bez diakritiky. V prípade, že vypíše znak s diakritikou, ktorú knižnica nepozná, znak sa preskočí a výstupný text môže byť nečitateľný, nezrozumiteľný. Arduino Core nemá priamo vstavanú knižnicu na odstránenie diakritiky. Je možné použiť napríklad vlastnú mapu znakov pre prevod, ale to by bolo zdĺhavejšie ako použiť knižnicu s fontami, ktoré disponujú diakritikou.


Chybovosť v knižnici GxEPD pri pokuse o vypísanie znakov s diakritikou

Grafiku samotnej vizualizácie môžete vyhotoviť za pomoci LVGL grafickej knižnice, pre získanie uhladeného a moderného dizajnu, bude to ale časovo náročné. V prípade, že máte dvoj, alebo trojfarebný ePaper displej, môžete vykresľovať aj vo farbe, inak len čierny text / objekt na bielu plochu ePaper displeja. Rovnako tak vypísané dáta nemusia odpovedať priamo tým, ktoré boli v JSON štruktúre, ale môžete ich pozmeniť. Najmä dátum a čas môžu byť prevedené na formát, ktorý je lepšie čitateľný.


Riešenie s výpisom znakov bez diakritiky

Čo je na ePaperi najlepšie?
Že vám vykreslené dáta ostanú na displeji aj pri výpadku elektriny. Plánovanú odstávku tak zaregistrujete na ePaper displeji aj v prípade, že ste už bez elektriny a doteraz ste si informáciu nevšimli. Rovnako tak by šlo použiť aj API pre aktuálne poruchy, ale ak už budete bez internetu, resp. elektriny, tak ESP32 už nebude napájané a nezíska logicky informáciu o tom, že je výpadok, ak je bez napájania (môže byť napájané ja batériou), alebo bez internetu.

Rutinu na ESP32 môžete spúšťať napríklad o polnoci skrz trigger reagujúci na RTC s časom vopred nastaveným z NTP služby, pričom celý deň môže byť ESP32 v režime hlbokého spánku. Ak máte low-power friendly ESP32 prevedenie, dokážete na batérii fungovať niekoĺko mesiacov až rokov v závislosti od kapacity. ePaper potrebuje len malé množstvo elektrickej energie pre prepísanie obsahu (asi 8 mA) a pri standby režime (aktívne napájanie) bez prepisovania má spotrebu len jednotiek uA. Prakticky najúspornejší displej, aký si môžete do projektu s ESP32 dať. Na druhú stranu, ePaper nemá podsvietenie a teda za zlých svetelných podmienok, alebo v noci na ňom nič neuvidíte, ak si nerozsvietite. Komunikácia medzi ESP32 a ePaperom prebieha cez 3-wire, tzv. jednosmerné SPI rozhranie.


Z článku https://chiptron.cz/mam-7-5-epaper-a-nevim-do-ceho-jej-dat-tak-aby-to-vypadalo-pekne-ctyri-reseni/

Pre pekné vizuály formou dashboardov a inšpiráciu s doplneným ďalších dát odporúčam https://wiki.zivyobraz.eu/, alebo sa môžete inšpirovať aj projektami pána Zvolánka, ktorý pod ESP32 s ePaperom postavil už niekoľko meteostaníc: https://x.com/JosefZvolanek. ePaper displeje nájdete v rôznom veľkostnom prevedení, od veľkostí menej než 1 palec až do dvojcifernej veľkosti palcov. Pri veľkých ePaper displejoch je nutné počítať s dlhším časom refreshu, ktorý môže byť až vo vyšších desiatkach sekúnd. Ak ale refresh nie je častý a prebieha napríklad o polnoci, žiadnym spôsobom to neobmedzuje pohodlie používateľa a má známe dáta pre aktuálny deň aj skoro ráno. 

 



Prístupov 295
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Tohtoročné výnosy obilia pod Tatrami
[ 31.8.2025] (príspevkov 0)
Odstávky elektriny - ePaper s ESP32
[ 30.8.2025] (príspevkov 0)
Dojmy: VIETCONG
[ 28.8.2025] (príspevkov 0)
433 MHz prijímač s Arduinom v roku 2025
[ 26.8.2025] (príspevkov 0)
Systém ochrany fotopasce - Python
[ 24.8.2025] (príspevkov 0)
Vlastný audio-streamovací systém
[ 23.8.2025] (príspevkov 0)
Výmena karburátora Homelite ST-155
[ 30.7.2025] (príspevkov 0)
AR dashboard pre IoT zariadenia
[ 30.7.2025] (príspevkov 0)
Začiatky s AR / VR pre web
[ 23.7.2025] (príspevkov 0)
NASA API cez Python, APoD, pozadie Windo...
[ 12.7.2025] (príspevkov 0)