A Cheap Yellow Display pointed at this site's own data instead of a third-party service - no cloud weather API, no external dashboard, just the CYD's screen polling larsi.org's own weather and sensors APIs directly for one chosen station's latest readings and history.
Source at github.com/larsi-org/cyd-station. ☕ If you build one, consider sponsoring.
One Arduino sketch, cyd-station.ino - a read-only API client, no credentials
required beyond WiFi. It polls one of larsi.org's weather or
sensors sections for a chosen station's channel list and latest readings,
and shows them on the display. Both sections speak the same API shape (channel list, then latest
values), so which one a given device shows is purely a matter of which server URL it's configured
with, not a compile-time choice - one sketch, flashed identically onto every board.
A Display setting picks what auto-cycles onto the screen (10 seconds per page): paginated text pages listing every channel's latest value and age, a single page with a stack of 3 mini history graphs (one full-width row per configurable channel), or both in sequence. Each graph auto-scales its own y-axis from its fetched window's min/max, and the lookback window itself is picked per section - 6 hours for sensors' faster logging rate, 3 days for weather's slower one - so both land roughly one sample per column across the graph's width. An Inverse Display option swaps the default dark background for a white one, with its own set of darker text colors chosen for contrast rather than just reusing the dark-mode palette as-is.
No secrets baked in at build time - setup happens entirely over plain web forms, no serial monitor needed, in two independent stages:
CYD-Station-Setup-xxxxxx) with a
captive portal - pick a network, enter its password, save.Config: <ip>) for as long as it's running. Set a
server root and a section (Weather or Sensors), fetch that section's real station list live from
the server, then pick one - no free-text entry. Pick a Display mode and a channel for each of
the 3 graph slots, also live-fetched from the currently-selected station.Both stages save independently and restart the device; settings persist across reboots and firmware updates.
Same CYD wiring as the Internet Radio build (GPIO
14/13/12 SPI, not the ESP32's default VSPI pins). No touch, no audio, no external parts needed -
just the display. Verifies larsi.org's TLS certificate against a small curated CA bundle rather
than skipping verification, copied in from the same source the
sensor-node library uses.