Már régóta éreztem, hogy a szervereim állapota valahogy csak akkor kerül a látómezőmbe, amikor már késő, és valami összeomlott. Ülök a gép előtt, a monitoromon ezer ablak, a terminál pedig valahol mélyen eltemetve. Arra gondoltam, milyen jó lenne egy dedikált kis eszköz, ami csendben, energiatakarékosan teszi a dolgát az asztalomon, és csak a lényeget mutatja. Így született meg a terv, hogy hogyan alakíts át egy olcsó e-ink kijelzőt és egy ESP32-t élő, valós idejű szerver-statisztikai monitorrá, ami sosem merül le. Ez az apró szerkezet nemcsak hasznos, de a technikai kíváncsiságomat is kielégíti minden egyes pillantással.
A projekt szíve egy ESP32 fejlesztői panel, ami azért zseniális, mert beépített Wi-Fi és Bluetooth képességekkel rendelkezik, miközben az áramfogyasztása töredéke egy Raspberry Pi-ének. Az e-ink kijelzők, vagyis az elektronikus papír technológia pedig azért különleges, mert csak akkor fogyasztanak áramot, ha frissítik a képet. Ha a kijelzőn marad a statisztika, az gyakorlatilag nullát eszik.
Így oldottam meg a tápellátás kérdését:
Ezzel a módszerrel a szerkezet hónapokig képes működni anélkül, hogy a töltőkábel után kellene kutatnom. A tapasztalat azt mutatja, hogy ha jól optimalizálod a kódot, a napfény ereje is bőven elég az akkumulátor szinten tartásához.
Nem kell mérnöki diploma ahhoz, hogy össze tudd kötni ezt a kettőt. A legtöbb e-ink kijelző SPI protokollt használ, ami az ESP32-n könnyen konfigurálható. Fontos, hogy figyelj a feszültségszintekre, mert az ESP32 3.3V-on üzemel. Ha véletlenül 5V-ot kapna a kijelző vezérlője, az könnyen tönkreteheti a panelt.
A fizikai kivitelezésnél ezekre figyeltem:
A kijelző mérete bőven elég ahhoz, hogy a CPU terhelést, a RAM használatot és a hálózati forgalmat is kényelmesen leolvasd. Én még a szerver uptime idejét is rátettem, mert jó látni, mennyi ideje futnak stabilan a szolgáltatásaim.
A legnagyobb móka az, ahogy az adatokat eljuttatod a kijelzőre. A szervereden futtathatsz egy egyszerű Python szkriptet, ami lekéri a statisztikákat. Én a psutil könyvtárat használom, ami pillanatok alatt kigyűjti a rendszerinformációkat.
A folyamat lényege:
Itt jön a képbe a hatékonyság. Ne próbáld meg folyamatosan streamelni az adatokat, mert a Wi-Fi kapcsolat kiépítése fogyasztja a legtöbb energiát. Érdemes a lekérdezéseket időzíteni, például tíz vagy harminc másodperces időközönként. Így a rádió csak egy rövid pillanatra kapcsol be, elvégezi a dolgát, aztán már alszik is tovább.
Amikor először összeraktam a rendszert, a kijelző néha furcsa szellemképeket mutatott. Az e-ink technológia sajátossága, hogy a frissítés után néha ott maradnak az előző karakterek körvonalai. Ezt úgy küszöböltem ki, hogy minden tizedik frissítésnél egy teljes képernyős villantást (full refresh) vezéreltem be a kódba.
Néhány dolog, amire érdemes figyelni a hosszú távú üzemeltetés során:
Ez a projekt nem csak a szerverstatisztikákról szól. Arról szól, hogy olyan eszközt hoztál létre, ami pontosan azt tudja, amire neked szükséged van, felesleges sallangok nélkül. Nincs benne hirdetés, nem kell hozzá havidíjas felhőszolgáltatás, és ha a net elmegy, a szervereden lévő adatok még mindig elérhetőek a helyi hálózaton keresztül.
Ráadásul megtanulod, hogyan működik a gyakorlatban az alacsony fogyasztású hardverek programozása. Ez a fajta tudás később más projekteknél is hasznos lesz, legyen szó okosotthon-automatizálásról vagy éppen környezeti szenzorok építéséről. Az asztalomon most ott a kis kijelző, és ha ránézek, látom a szervereim "lélegzetvételét". Nem egy bonyolult dolog, de őszintén szólva, a legegyszerűbb megoldások szoktak a leghasznosabbak lenni.
A kód megírása közben arra is rájöttem, hogy az egész folyamat végtelenül testreszabható. Lehet benne éjszakai mód, amikor a kijelző nem frissül, vagy akár színkódolhatod is az adatokat, ha olyan e-ink kijelzőt választasz, ami képes a fekete és fehér mellett például vörös vagy sárga megjelenítésére is. A lehetőségek tárháza csak a képzeleteden múlik.