Skip to main content

led-ticker-pool

A pool water-temperature monitor widget for led-ticker, backed by an InfluxDB v2 server (e.g. pool_monitor). It's a led-ticker plugin — installing this package contributes a pool.monitor widget you reference in your led-ticker config.

It cycles four screens — a title card, today's current temperature with a trend arrow (^/v/-) and hi/lo, a 7-day mean with hi/lo, and a season (current-year) hi/lo. Temperature is zone-colored — blue below 70°F, green 70–79°F, orange 80–89°F, red 90°F+ — so the comfort level is readable at a glance. Data is fetched in the background via async polling, so the display keeps running even if the server is briefly unreachable.

Screenshots

layout = "ticker" (default — single-row segmented screens, smallsign-friendly):

Pool widget in ticker layout — single-row segmented screens with trend arrow and hi/lo

layout = "two_row" (stacked label-on-top / big-number-on-bottom, bigsign / longboi):

Pool widget in two_row layout — stacked label-on-top, big-number-on-bottom

Prerequisites

  • A running led-ticker (the sign + its config). This widget plugs into it.
  • A running InfluxDB v2 server holding pool temperature data. The reference stack is pool_monitor, which provides the bucket and sensor schema this widget expects.
  • An InfluxDB auth token — set INFLUXDB_TOKEN in your led-ticker .env (or as a per-widget config key). The widget raises ValueError at startup if it's missing. See InfluxDB setup for all four connection variables.

Install

The widget auto-registers via the led_ticker.plugins entry point — once the package is installed, no [plugins] config change is needed.

Into a containerized led-ticker (recommended): add this package to config/requirements-plugins.txt (copy it from config/requirements-plugins.example.txt), then rebuild:

led-ticker-pool
# in your led-ticker checkout
docker compose up -d --build

Standalone (a venv that already has led-ticker):

pip install led-ticker-pool

See the led-ticker Plugins docs for the constraint-based install the Docker image uses.

Configuration

Reference the widget in a playlist section by type = "pool.monitor":

[[playlist.section.widget]]
type = "pool.monitor"
title = "POOL TEMPS"
units = "imperial"

Options

Option Type Default Description
title string "POOL TEMPS" Label shown on the title screen.
sensor_id string none Sensor ID to filter on. Omit to use the only/first sensor in the bucket. Must match [A-Za-z0-9_-]+.
units string "imperial" "imperial" (°F) or "metric" (°C).
update_interval int 300 Seconds between InfluxDB fetches (5 min default).
current_window string "-24h" How far back to search for the latest reading, as a negative Flux duration ("-24h", "-90m"). Older than this → -- placeholder. Widen it if your sensor reports infrequently.
stale_after float 14400 Seconds since the last reading before the temperature dims to gray (stale signal). 4 h default.
influxdb_url string $INFLUXDB_URL / "http://influxdb:8086" InfluxDB v2 base URL. Config overrides the env var.
influxdb_org string $INFLUXDB_ORG / "pool" InfluxDB organization.
influxdb_bucket string $INFLUXDB_BUCKET / "pool_temps" InfluxDB bucket.
influxdb_token string $INFLUXDB_TOKEN InfluxDB v2 token. Required — the widget raises ValueError at startup if it's missing.
layout "ticker" | "two_row" "ticker" Render mode (see below).
label_color [r,g,b] white Color for prefix labels / separators.
font / font_size / font_threshold font name / int / int "6x12" Main text font. A BDF alias (6x12, 5x8) or a hires font name (Inter-Regular) with font_size in real pixels. In two_row, the per-row knobs below override this.
top_font / top_font_size / top_font_threshold font / int / int inherit font two_row only: top (label) row font knobs.
bottom_font / bottom_font_size / bottom_font_threshold font / int / int inherit two_row only: bottom (value) row font knobs.
top_row_height int (logical rows) None two_row only: top band height. None = symmetric 8/8 split.

The per-row knobs apply ONLY when layout = "two_row"; setting them under ticker fails config validation.

Layouts

  • ticker (default) — single-row segmented screens; the today screen shows current temp + trend arrow and hi/lo, the 7-day screen the mean + hi/lo, the season screen HI/LO together. Best for small panels (smallsign 160×16).
  • two_row — stacked label-on-top / big-number-on-bottom. Cycles four screens with top-row labels POOL (title), POOL 24H (current temp, zone-colored), POOL 7D (7-day HI/LO), and POOL SEASON (season HI/LO) — HI in orange, LO in blue, shown together on one screen (e.g. 84/72F). The trend arrow is dropped (bottom is the value only). Best for bigsign / longboi (256×64 / 512×64).

A two_row example:

[[playlist.section.widget]]
type = "pool.monitor"
title = "POOL TEMPS"
layout = "two_row"
units = "imperial"
font = "Inter-Regular"
font_size = 32
label_color = [130, 220, 255]

InfluxDB setup

The widget reads connection details from your led-ticker .env (or per-widget overrides). INFLUXDB_TOKEN is required; the rest default to the standard pool_monitor Docker Compose stack.

Variable Required Default Description
INFLUXDB_TOKEN yes InfluxDB v2 auth token.
INFLUXDB_URL no http://influxdb:8086 Base URL.
INFLUXDB_ORG no pool Organization.
INFLUXDB_BUCKET no pool_temps Bucket.

The widget queries water-temperature readings with Flux over HTTP and computes today / 7-day / season aggregates. Stale data (older than stale_after) renders dim gray; the trend arrow compares the latest reading to a ~45-minute trailing average (sub-0.5°F shows -).

Development

Install dev deps and run the suite:

uv sync --extra dev      # resolves led-ticker-core from PyPI
uv run pytest -q

Note: tests that need a headless canvas obtain one via HeadlessBackend(...).create_canvas() from led_ticker.plugin — the software backend shipped in led-ticker-core ≥ 2.1. No rgbmatrix test stub or PYTHONPATH plumbing is required.

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

led_ticker_pool-0.2.0.tar.gz (49.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

led_ticker_pool-0.2.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file led_ticker_pool-0.2.0.tar.gz.

File metadata

  • Download URL: led_ticker_pool-0.2.0.tar.gz
  • Upload date:
  • Size: 49.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for led_ticker_pool-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5be1fb0e1d9e5c80596165b50618622e0daafc6822e8260cba74efffd3913768
MD5 ff488f6847431b4a3a6aaf4e9ad05d7b
BLAKE2b-256 811893854642aae1f303171bc5fa197117097e5f8ada1023b51aa55b97821e94

See more details on using hashes here.

Provenance

The following attestation bundles were made for led_ticker_pool-0.2.0.tar.gz:

Publisher: publish.yml on JamesAwesome/led-ticker-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file led_ticker_pool-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: led_ticker_pool-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for led_ticker_pool-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3c6413eaeab882d662a5ad287abcf743440eb8a9aa7eb432c6eaea6ffeefd688
MD5 a1d5d9f6900d296c576364890df29c1c
BLAKE2b-256 df851e2399f88df5953b032d8a1411b8e0d88d80da938333011c682e4990b69e

See more details on using hashes here.

Provenance

The following attestation bundles were made for led_ticker_pool-0.2.0-py3-none-any.whl:

Publisher: publish.yml on JamesAwesome/led-ticker-plugins

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page