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

led-ticker isn't on PyPI, so install it editable from a sibling checkout. This repo's pyproject.toml pins led-ticker to ../led-ticker via [tool.uv.sources]:

git clone https://github.com/JamesAwesome/led-ticker ../led-ticker   # sibling checkout
git clone https://github.com/JamesAwesome/led-ticker-pool && cd led-ticker-pool
uv venv
uv pip install -e ../led-ticker -e ".[dev]"
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.1.1.tar.gz (48.0 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.1.1-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: led_ticker_pool-0.1.1.tar.gz
  • Upload date:
  • Size: 48.0 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.1.1.tar.gz
Algorithm Hash digest
SHA256 1b766d4db7abdafad5a3d8c6676f1e9f7fa825d9d6dbe7f6e6712c466af868f9
MD5 f7df4a16740fc721d2e2545b79c37efc
BLAKE2b-256 604992e9bdc69eca1449b9a0d4a526e63300ade472728d527c8857629ee06be3

See more details on using hashes here.

Provenance

The following attestation bundles were made for led_ticker_pool-0.1.1.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.1.1-py3-none-any.whl.

File metadata

  • Download URL: led_ticker_pool-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.7 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.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1f50b1f45ad75e45005b343a57bc87c0f246ee8ac742c4f96e28c9443bfc287f
MD5 2de627fef4cd88b6340b469ac1def0cb
BLAKE2b-256 dc7e2ff327d3abe9af09fa078776887d3d99ad6fd6c0b444fb4cd58b7963533d

See more details on using hashes here.

Provenance

The following attestation bundles were made for led_ticker_pool-0.1.1-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

0.2.0

2 files

This release

0.1.1 This release

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