Releases: Keralots/StatNode
Release list
StatNode v1.3.0
StatNode v1.3.0
Highlights
- Browser web flasher — flash any supported board straight from Chrome/Edge at https://statnode.stolaris.dev (ESP Web Tools + Improv WiFi, no installs).
- Switchable metric pages — multiple metric pages with keyed history, tap-to-switch and auto-rotation, edited live from the web portal and carried in the config backup.
- Metric-page boot, rotation, and portal guards hardened.
Firmware
Two files per board:
firmware-v1.3.0-<env>.bin— full image, flash at0x0(new device / web flasher).OTA_ONLY_firmware-v1.3.0-<env>.bin— OTA update via the portal's Maintenance page.
| Env | Board | Panel |
|---|---|---|
| esp32s3 | LOLIN ESP32-S3 Mini | ST7789 240x240 |
| esp32s3_zero | Waveshare ESP32-S3-Zero | ST7789 240x240 |
| ws_lcd_154 | Waveshare ESP32-S3-Touch-LCD-1.54 | 240x240 |
| esp32c3 | LOLIN ESP32-C3 Mini | ST7789 240x240 |
| jc3248w535 | Guition JC3248W535 (16MB) | 320x480 touch |
Pick the file matching your board's env. Full setup in the README.
StatNode v1.2.0
Third release. Two glass monitor faces with their own colorways, one animated
chart pipeline shared by every face, and a fuller idle clock scene on the big
panel.
New: glass faces
Two faces render every card as a pane of glass over a generated backdrop:
Aero glass tiles (the tile grid on polished panes, each with its own chart)
and Liquid glass duo (the duo bands and pills as edge-lit capsules).
The panel has no framebuffer to blur, and does not need one: a smooth vertical
gradient, blurred, is still itself. The backdrop is a generated vertical ramp,
so a pane's color is a pure function of the panel row, and panes compose in
sprite-sized windows that join seamlessly without ever reading the panel back.
- Rounded corners, rim and outer edge are coverage-blended from a sub-pixel
inset, so nothing on these faces has a stepped edge. - Charts get monotone-clamped Catmull-Rom interpolation, an antialiased stroke
and a depth-faded area fill that blends into the pane instead of punching a
flat block through it. - A warning lights the pane's rim rather than retinting its body, so the chart
inside keeps its own identity color.
Colorways and surface controls
- Frosted glass dark and Frosted glass light join the default smoked
colorway, selected from the new Glass surface card on the Display page.
Palette ported from the Home Assistant Frosted Glass themes (wessamlauf, MIT).
Every surface amount is signed now: what separates a light card from a light
ground is the shadow under it, not a white rim. - Three sliders on the same card - highlight strength, highlight spread and
chart fill. They apply to the panel live as you drag, through a preview that
sits in front of the stored settings rather than writing them, so a drag costs
no flash write and Revert puts the panel back. - Gradient banding fixed. The compositor worked in whole 8-bit steps and
glass gradients are slow, so the composite was already a staircase before the
dither ever saw it. Color now carries four fractional bits and the crawling
alpha ramps are fractional too: the longest flat run on a 320x480 card went
from 13 rows to 3.
One chart pipeline for every face
The flat faces stepped a whole column at a time while the glass faces glided.
Every face now shares one pipeline.
- Charts glide between packets on every face. One pixel is always the same
number of samples, with the newest reading pinned to the right edge, so the
plot no longer swings sideways while the history ring fills after a boot. - New chart smoothing setting (Off / Light / Medium / Heavy). Both endpoints
are left exact, so the live end still agrees with the printed reading. - The frame interval is paced off what the last frame actually cost plus 50%
headroom. Measured on a C3 with seven slots the faces span 0.7 ms to 135 ms,
so a fixed rate would leave the heaviest one permanently overrunning and
starving WiFi.
Idle clock
The Runner face fills the ~130 px of dead sky the 320x480 panel used to leave
between the clouds and the date: two cloud layers drifting at co-prime
intervals, and a brick sky band with two characters patrolling opposite halves.
Everything extra is gated on measured space rather than on which board it is, so
a 240x240 panel renders exactly as it did before.
Fixes
- Fully covered chart pixels drew as background (a 256 alpha truncating to 0 in
a byte). Chart strokes shredded into detached specks and the Liquid pill meter
drew a single tick instead of a bar. - Chart columns spanned only half of each segment, so a one-column spike
rendered as a floating fragment above the plot. - Quantized sensors (whole percent, whole RPM) drew a staircase of flat blocks.
The auto-scale span now floors at six estimated quanta and the spline clamp
widened to the four-point neighbourhood. - Cells of identical size rendered different type: a "24.0 GB" tile sat two font
rungs below the "38 %" tile beside it. Equal cells are pre-fit as a group and
rendered at the smallest rung any member needed, unit faces included. - Network throughput read ten times high. The Windows companion packs NIC
readings as tenths of a KB/s; the device now divides at ingest, before the
history ring samples. Byte rates climb a B/s to TB/s ladder, so a busy link
reads 3.6 MB/s instead of 3668 KB/s. - Units on the glass faces sat below their numbers. A bottom datum places a box
bottom, not a baseline. - Portal saves post urlencoded. The web server allocates a fixed 32-argument
table and drops the connection past it, so the 42-field layout form always
failed with an empty response while the smaller display form always worked. - Submitting a form whose style selector had not populated yet silently reset
the face to Tiles. Absent, blank or out of range now means keep the current
face. - Every color preset listed six slot accents for an eight-slot array, so slots 7
and 8 filled with black. - The screenshot sprite hands its buffer back after each capture unless it lives
in PSRAM. Holding 57.6 KB of internal heap on the C3 left the web server
unable to allocate for new connections.
Flashing
Pick the file matching your board's env: firmware-v1.2.0-<env>.bin is the full
image for a USB or web flash at 0x0; OTA_ONLY_firmware-v1.2.0-<env>.bin is
for the portal's Maintenance page. See the README for the board/env table and
the web-flasher walkthrough.
The companion app is unchanged except that its status page knows the two new
face names. Keep using the StatNodeCompanion.exe from the v1.0.0 release, or
run it from source in StatNode-CompanionApp/.
StatNode v1.0.0
First public release.
Live PC sensor monitor for ESP32 color displays: six switchable 240x240 monitor faces, a full web portal (metrics, colors, clock, network, backup, OTA), animated idle clocks (Standard, Breakout, Mario), and a Windows/Linux companion that streams sensor readings over UDP.
Firmware
Pick the file matching your board (see the hardware table):
| Env | Board |
|---|---|
esp32s3 |
LOLIN ESP32-S3 Mini + ST7789 |
esp32s3_zero |
Waveshare ESP32-S3-Zero + ST7789 |
ws_lcd_154 |
Waveshare ESP32-S3-Touch-LCD-1.54 |
esp32c3 |
LOLIN ESP32-C3 Mini + ST7789 |
firmware-v1.0.0-<env>.bin: full image, flash at0x0with esptool-js or esptool.py (instructions)OTA_ONLY_firmware-v1.0.0-<env>.bin: upload on the device portal's Maintenance page
Companion
StatNodeCompanion.exe: Windows companion. Requires LibreHardwareMonitor running for sensor data and the WebView2 runtime (included with Windows 11). Linux users run the companion from source, see the companion README.
First run
The device opens a StatNode-XXXX WiFi AP (password statnode1234) with a captive portal at 192.168.4.1. Improv over USB serial also works in the first 3 minutes after boot.
StatNode v1.1.0
Second release. Bigger, sharper readings on every panel, a new Hardware page for
the optional peripherals, and support for eight metric slots.
Display
- Values are no longer magnified. Every face now picks a real font face sized
to the space it has, instead of stretching a 22px glyph up to 2x. The big
readings on the 240x240 panels were visibly soft before; they are crisp now.
Four digits-only faces (30/38/48/68px) ship on every board for this. - Strips readings stay legible over the chart. The label and value sit on a
translucent scrim, so a bright area fill no longer swallows them. The chart
shape still shows through, and no chart width is lost. - Units sit on the value's baseline rather than a few pixels below it.
Eight metric slots
The slot count went from six to eight. Existing bindings are migrated on update,
so nothing is lost. There is deliberately no "tile count" setting: how many
readings appear is how many slots you bind, and every face lays itself out from
that count. Fresh devices come with eight slots bound on the 320x480 panel and
six on the 240x240 squares.
New: Hardware page
A new portal page under Device, holding the optional peripherals. Only GPIOs
that cannot break the display, USB or boot are offered, and the page lists the
allowed pins for your board.
- Status LED (new): a single-color LED on a GPIO, driven through a transistor
and dimmed by PWM. It has its own night level, can follow the display off, and
can go dark while the PC is offline. The brightness slider drives the real LED
live while the page is open. - Capacitive touch pad: moved here from the Display page. The TTP223 now
works on the ESP32-S3 boards as well as the C3, the long-press window is more
forgiving, and the shipped default no longer blanks the screen on an
accidental hold.
Fixes
- Screenshot capture no longer exhausts internal heap on PSRAM boards (free heap
on a 240x240 S3 went from 18 KB to 143 KB). - Guition JC3248W535 support restored and its toolchain pinned.
- Mario clock no longer smears at the right panel edge.
Flashing
Pick the file matching your board's env: firmware-v1.1.0-<env>.bin is the full
image for a USB/web flash at 0x0; OTA_ONLY_firmware-v1.1.0-<env>.bin is for
the portal's Maintenance page. See the README for the board/env table and the
web-flasher walkthrough.
The Windows companion app is unchanged since v1.0.0 - keep using the
StatNodeCompanion.exe from that release, or run it from source in
StatNode-CompanionApp/.