An e-ink dashboard on the kitchen wall
Weather, a couple of tickers and whether my sites are up, refreshed every 15 minutes on an ESP32.
E-ink is perfect for things you glance at: it costs nothing to display and looks like paper. This one shows the weather, a five-day forecast, two tickers and the uptime of my sites.



Deep sleep is the whole trick
#include <GxEPD2_BW.h>
#include <WiFi.h>
constexpr uint64_t SLEEP_MINUTES = 15;
void setup() {
connectWifi();
auto data = fetchDashboard(); // one JSON call to my own endpoint
drawDashboard(data);
display.hibernate();
// Sleep until the next refresh; the panel keeps the image for free.
esp_sleep_enable_timer_wakeup(SLEEP_MINUTES * 60ULL * 1000000ULL);
esp_deep_sleep_start();
}
void loop() {} // never reached
All the logic lives server-side: the ESP32 fetches a single pre-rendered JSON document and draws it. Changing the layout means editing PHP, not reflashing.
{
"weather": { "now": 17, "icon": "cloudy" },
"forecast": [18, 16, 15, 19, 21],
"sites": { "up": 11, "down": 0 }
}