Skip to content

Releases: Keralots/StatNode

StatNode v1.3.0

Choose a tag to compare

@Keralots Keralots released this 22 Aug 12:33

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 at 0x0 (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

Choose a tag to compare

@Keralots Keralots released this 28 Jul 16:52

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

Choose a tag to compare

@Keralots Keralots released this 18 Jul 17:33

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 at 0x0 with 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

Choose a tag to compare

@Keralots Keralots released this 25 Jul 14:46

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/.