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.

Metadata

Release files for led-ticker-pool 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for led-ticker-pool 0.2.0
File Size Uploaded Provenance
led_ticker_pool-0.2.0.tar.gz 49.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for led-ticker-pool 0.2.0
File Interpreter ABI Platform
led_ticker_pool-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 62.7 kB

Release files / led_ticker_pool-0.2.0.tar.gz

Download URL led_ticker_pool-0.2.0.tar.gz
Size 49.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5be1fb0e1d9e5c80596165b50618622e0daafc6822e8260cba74efffd3913768
BLAKE2b-256 checksum
How to use checksums
811893854642aae1f303171bc5fa197117097e5f8ada1023b51aa55b97821e94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Release files / led_ticker_pool-0.2.0-py3-none-any.whl

Download URL led_ticker_pool-0.2.0-py3-none-any.whl
Size 13.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3c6413eaeab882d662a5ad287abcf743440eb8a9aa7eb432c6eaea6ffeefd688
BLAKE2b-256 checksum
How to use checksums
df851e2399f88df5953b032d8a1411b8e0d88d80da938333011c682e4990b69e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

Security for led-ticker-pool 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for led_ticker_pool-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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