SlopScore
00 crowd

pentameter

Prometheus metric exporter for Pentair IntelliCenter (Prometheus with Grafana dashboards included). Vibe coded in Go.
Open repo on GitHubgithub.com/astrostl/pentameter
Go · ★ 2 · 1 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)iot
listed 1 hour ago by astrostl · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-09-16: Prometheus metric exporter for Pentair IntelliCenter (Prometheus with Grafana dashboards included). Vibe coded; its own README says "Vibe coded in Go". 2 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as astrostl. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Prometheus metric exporter for Pentair IntelliCenter (Prometheus with Grafana dashboards included). Vibe coded in Go.
topics
exportergografanahome-automationintellicenteriotmetricsmonitoringpentairpoolprometheus
created
2025-06-30 · pushed 1 day ago · 263 commits · 2 contributors
release
v0.6.3 · 2026-09-14
languages
Go 91%Makefile 9%Ruby 1%Dockerfile 0%
paperwork
code of conductcode of conduct filecontributinglicensereadme 100% health
dependencies
✓ 11 deps, none with known advisories · OSV.dev, checked 1 hour ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
iot
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
dockerfilegomakefileruby
topic (detected)
exportergografanahome-automationintellicenteriotmetricsmonitoringpentairpoolprometheus
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: Prometheus metric exporter for Pentair IntelliCenter (Prometheus with Grafana dashboards included). Vibe coded; its own README says "Vibe coded in Go". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

Pentameter - Pentair IntelliCenter Metrics & Dashboarding

Go Report Card

⚠️ AI-Generated Code Warning: This project was "vibe coded" using generative AI and should be thoroughly reviewed before use. It comes with no warranty or guarantee of functionality, security, or reliability.

Pentameter Grafana Dashboard

Pentameter is a Prometheus exporter for Pentair IntelliCenter pool controllers that connects via WebSocket and exposes pool equipment data as Prometheus metrics with pre-configured Grafana dashboards for visualization.

Features

Real-Time Data Collection

  • Temperature Monitoring: Pool, spa, and outdoor air sensors
  • Pump Monitoring: Variable speed RPM and flow rates
  • Equipment Status: Circuit and feature on/off states
  • Connection Health: Automatic failure detection and recovery
  • Auto-Discovery: Finds IntelliCenter automatically via mDNS (multicast DNS)

Data Export and Visualization

  • Prometheus Metrics: Standard format compatible with any monitoring tool
  • Pre-configured Dashboards: Grafana dashboards with automatic provisioning
  • Kiosk Mode: Clean displays for dedicated monitoring screens
  • Historical Trends: Long-term data visualization and analysis

Smart Features

  • Intelligent Filtering: Focus on meaningful equipment vs virtual controls
  • User-Controlled Feature Visibility: Respects IntelliCenter's "Show as Feature" settings
  • Graceful Degradation: Handle missing sensors without errors
  • Browser Compatibility: Standard metrics endpoint works everywhere

Technical Features

  • WebSocket connection to IntelliCenter controllers
  • Automatic IntelliCenter discovery via mDNS (finds pentair.local on network)
  • Listen mode for real-time equipment change monitoring and debugging
  • Robust connection management with exponential backoff retry logic
  • Health checks with automatic reconnection on failures
  • Configurable via command line flags or environment variables
  • Health check endpoint

Architecture Overview

Pentameter connects to IntelliCenter controllers via WebSocket and transforms pool data into standard Prometheus metrics for monitoring and alerting.

System Components

  1. Go Service - Core monitoring service

    • WebSocket client for IntelliCenter communication
    • Prometheus metrics endpoint (/metrics)
    • Health checks and connection management
  2. IntelliCenter Interface

    • WebSocket connection (default port 6680)
    • JSON message protocol using GetParamList API
    • Exponential backoff retry with health checks
    • Request/response polling - API does not support push notifications (verified 2025-11-08)
    • Persistent connection with configurable poll intervals (2s for listen mode, 60s default)
  3. Metrics Export

    • HTTP server (default port 8080)
    • Standard Prometheus format
    • Compatible with any monitoring tool
  4. Docker Deployment

    • Multi-stage builds with scratch base images (~12MB)
    • Docker Compose orchestration
    • Prometheus and Grafana included

Technology Stack

  • Language: Go with standard library HTTP server
  • WebSocket: github.com/gorilla/websocket
  • Metrics: github.com/prometheus/client_golang
  • Build: Makefile with Docker integration
  • Deployment: Docker Compose with restart policies

Installation Options

Pentameter offers multiple installation methods to suit different deployment preferences:

Method Platform Use Case Features
Homebrew macOS Single exporter, integrate with existing monitoring Instant install, pre-built binaries
Docker Compose All platforms Complete monitoring stack Grafana dashboards, Prometheus included
Docker All platforms Container deployment Lightweight, configurable
Go Install All platforms Go developers, build from source Latest source, Go toolchain integration
Source Build All platforms Development, customization Full control, latest changes

Quick Start

Option 1: Homebrew (macOS) - Instant Installation

Recommended for macOS users who want just the metrics exporter:

# One-line install (automatically adds tap)
brew install astrostl/pentameter/pentameter

# Start the exporter (auto-discovers IntelliCenter)
pentameter

# Or manually specify IP address if needed
export PENTAMETER_IC_IP=192.168.1.100
pentameter

Alternative two-step install:

# Add the tap (one time setup)
brew tap astrostl/pentameter https://github.com/astrostl/pentameter
brew install pentameter

Instant installation - No build time, no dependencies
Pre-built binaries - Intel and Apple Silicon supported
Automatic updates - brew upgrade pentameter

Metrics are available at http://localhost:8080/metrics

For complete monitoring with Grafana dashboards, use the Docker Compose option below.

Option 2: Go Install - Build from Source

Recommended for Go developers who want to build from source:

# Install latest version
go install github.com/astrostl/pentameter@latest

# Or install specific version
go install github.com/astrostl/pentameter@v0.2.2

# Start the exporter (auto-discovers IntelliCenter)
pentameter

# Or manually specify IP address if needed
export PENTAMETER_IC_IP=192.168.1.100
pentameter

Latest source - Always up-to-date with repository
Go toolchain integration - Uses your existing Go installation
All platforms - Works wherever Go runs

Note: Version information (pentameter --version) will show as "dev" since go install doesn't include build-time version injection.

Metrics are available at http://localhost:8080/metrics

Option 3: Docker Compose - Complete Monitoring Stack

Recommended for full monitoring setup with Grafana dashboards:

# Clone the repository (includes all config files)
git clone https://github.com/astrostl/pentameter.git
cd pentameter

# Start the complete monitoring stack (auto-discovers IntelliCenter)
docker compose up -d

# Or manually configure IP if auto-discovery doesn't work
cp .env.example .env
# Edit .env and set your PENTAMETER_IC_IP
docker compose up -d

Complete monitoring - Pentameter + Prometheus + Grafana
Pre-configured dashboards - Ready-to-use Grafana setup
No build time - Uses published DockerHub images
All platforms - Works on macOS, Linux, Windows

Access Points:

  • Grafana Dashboard: http://localhost:3000/d/pentameter/
  • Metrics: http://localhost:8080/metrics
  • Prometheus: http://localhost:9090

Endpoints

  • Metrics: http://HOSTNAME:8080/metrics - Prometheus metrics
  • Health: http://HOSTNAME:8080/health - Health check
  • Prometheus: http://HOSTNAME:9090 - Prometheus web interface
  • Grafana: http://HOSTNAME:3000/d/pentameter/ - Grafana dashboards (no login required)
  • Kiosk Mode: http://HOSTNAME:3000/d/pentameter/?kiosk - Clean dashboard display

Feature Visibility Control

Pentameter respects IntelliCenter's "Show as Feature" settings to avoid duplicate controls and maintain clean dashboards.

How It Works

IntelliCenter allows users to control whether features appear in the interface through a "Show as Feature" checkbox in the Feature Circuits configuration. Pentameter automatically detects and respects this setting.

Common Use Case: Pool heating equipment often appears as both:

  • Feature: User control (e.g., "Spa Heat" - enable/disable heating)
  • Thermal Equipment: Actual equipment status (e.g., "Spa Heater" - heating/idle/cooling)

This creates duplication in monitoring dashboards where both the user control and equipment status are shown.

User Control

Users can eliminate this duplication through their IntelliCenter interface:

  1. Access IntelliCenter → Settings → Feature Circuits
  2. Select the feature (e.g., "Spa Heat")
  3. Uncheck "Show as Feature" to hide the user control
  4. Keep thermal equipment monitoring for actual operational status

Technical Implementation

Pentameter uses IntelliCenter's SHOMNU parameter to detect the "Show as Feature" setting:

  • Show as Feature: YES → Feature appears in feature_status metrics
  • Show as Feature: NO → Feature is automatically hidden from metrics

Benefits

  • User-Controlled: No hardcoded logic - users decide what to show
  • Universal: Works with any equipment configuration and naming
  • Clean Dashboards: Eliminates duplicate controls when desired
  • Flexible: Users can show both if they want different information

Example Scenarios

Scenario 1: Show Both Controls

  • feature_status{name="Spa Heat"} → User enable/disable control
  • thermal_status{name="Spa Heater"} → Equipment operational status
  • Use Case: Monitor both user intent and equipment response

Scenario 2: Show Equipment Only

  • User disables "Show as Feature" for "Spa Heat"
  • Only thermal_status{name="Spa Heater"} appears
  • Use Case: Focus on equipment operation, control via IntelliCenter

This approach ensures Pentameter works universally across different pool configurations while giving users full control over their monitoring interface.

Configuration

All configuration options can be set via command line flags or environment variables:

Flag Environment Variable Default Description
--ic-ip PENTAMETER_IC_IP (auto-discover) IntelliCenter IP address (optional, auto-discovers via mDNS if not provided)
--ic-port PENTAMETER_IC_PORT 6680 IntelliCenter WebSocket port
--http-port PENTAMETER_HTTP_PORT 8080 HTTP server port for metrics
--interval PENTAMETER_INTERVAL 60 (10 in listen mode) Polling interval in seconds
--metrics PENTAMETER_METRICS (default mode) Run as the Prometheus metrics exporter; used when no other mode is selected
--listen PENTAMETER_LISTEN false Enable live event monitoring mode
--homebridge PENTAMETER_HOMEBRIDGE false Run as a Homebridge sidecar (stdio JSON IPC)
--discover N/A N/A Discover IntelliCenter IP address and exit
--version N/A N/A Show version information

The functions (--version, --discover) and modes (--metrics, --listen, --homebridge) are all mutually exclusive — pick at most one. When no function or mode is given, pentameter runs in metrics mode. The /metrics HTTP endpoint is served in all modes.

Auto-Discovery

Pentameter can automatically discover your IntelliCenter on the local network using mDNS (multicast DNS). The IntelliCenter broadcasts itself as pentair.local on the network.

How it works:

  • When --ic-ip is not provided, pentameter automatically searches for pentair.local via mDNS
  • Discovery timeout is 60 seconds with progress indicators every 2 seconds
  • Works on most home networks without additional configuration
  • Docker support: Auto-discovery works in Docker using host networking (enabled by default)
  • Automatic re-discovery: If the IntelliCenter's IP changes (DHCP renewal, router reboot), pentameter automatically re-discovers it after 3 failed connection attempts

Test discovery:

# Test auto-discovery and show IP address
pentameter --discover

# Example output:
# IntelliCenter discovered at: 192.168.1.100

Manual IP specification:

# Bypass auto-discovery and use specific IP
pentameter --ic-ip 192.168.1.100

# Or via environment variable
export PENTAMETER_IC_IP=192.168.1.100
pentameter

Docker auto-discovery:

# Docker Compose with auto-discovery (default behavior)
docker compose up -d

# Docker run with auto-discovery
docker run -d --name pentameter --network host astrostl/pentameter:latest

Troubleshooting:

  • If auto-discovery fails, pentameter provides clear guidance on using the --ic-ip flag
  • Check that your IntelliCenter is on the same network
  • Some networks may block mDNS multicast traffic (port 5353/UDP)
  • Firewalls may need to allow multicast traffic to 224.0.0.251:5353
  • Docker: Host networking is required for mDNS (enabled by default in docker-compose.yml)
  • Use --ic-ip flag to manually specify IP address if auto-discovery doesn't work

Listen Mode - Live Equipment Monitoring

Listen mode provides real-time event logging for pool equipment changes using a hybrid push + poll architecture. Perfect for debugging, discovering equipment, and monitoring activity.

Features

  • Hybrid Push + Poll: Real-time push notifications for instant updates, plus periodic polling (default 60s) to catch equipment that doesn't push (like pump RPM changes)
  • Source Identification: Events prefixed with PUSH: or POLL: to distinguish real-time vs polled updates
  • Initial State Discovery: Shows all equipment and current state on startup
  • Unknown Equipment Detection: Automatically discovers equipment types not specifically implemented (valves, sensors, remotes, etc.)
  • Clean Output: Reports POLL: [no changes] when poll cycles find no updates

Usage

# Basic listen mode (60-second poll interval)
pentameter --ic-ip 192.168.1.100 --listen

# Custom polling interval (10 seconds)
pentameter --ic-ip 192.168.1.100 --listen --interval 10

# Via environment variable
export PENTAMETER_IC_IP=192.168.1.100
export PENTAMETER_LISTEN=true
pentameter

Example Output

2025/11/28 18:51:15 Fetching initial equipment state...
2025/11/28 18:51:15 POLL: Pool temperature detected: 22.0°F
2025/11/28 18:51:15 POLL: Spa temperature detected: 95.0°F
2025/11/28 18:51:15 POLL: VS detected: 3000 RPM
2025/11/28 18:51:16 POLL: Pool detected: ON
2025/11/28 18:51:16 POLL: Spa Heater detected: heating
2025/11/28 18:51:35 Listening for real-time changes (Ctrl+C to stop)...
2025/11/28 18:52:04 PUSH: Spa temp=97°F setpoint=98°F htmode=1 status=ON
2025/11/28 18:53:35 POLL: Spa temperature changed: 95.0°F → 96.0°F
2025/11/28 18:53:35 POLL: VS changed: 3000 → 2500 RPM
2025/11/28 18:54:35 POLL: [no changes]

Use Cases

  • Debugging: Watch equipment respond to commands in real-time via PUSH: events
  • Discovery: Find all equipment in your IntelliCenter, including unknown types
  • Monitoring: Track circuit activation, temperature changes, and pump speed adjustments
  • Testing: Verify equipment changes are being reported correctly
  • Pump Tracking: Monitor pump RPM changes (not pushed by IntelliCenter, requires polling)

Equipment Tracked

Listen mode monitors all equipment types:

  • Water & Air Temperatures: Bodies and sensors
  • Circuits: Lights, pumps, valves, cleaners
  • Features: Spa jets, fountains, automation features
  • Thermal Equipment: Heaters and heat pumps with operational states
  • Pumps: Variable speed RPM changes (via polling)
  • Unknown Equipment: Any equipment type not specifically implemented

Homebridge Mode - Apple HomeKit Integration

Homebridge mode (--homebridge) runs pentameter as a sidecar for the companion homebridge-pentair-intellicenter-ai Homebridge plugin, exposing your IntelliCenter equipment to Apple HomeKit. The sidecar speaks a small newline-delimited JSON protocol to the Node plugin over stdio, so it is normally spawned by Homebridge rather than run by hand. The Prometheus /metrics endpoint continues to be served in this mode, so a single process can drive both HomeKit and Grafana.

Exposed Accessories

  • Thermostats - One per body (pool/spa)

Read the rest on GitHub

Scan report · 2026-09-16
  • Prohibited terms or links
  • Repository eligibility
  • slopscore.md paperwork
  • Content policy
  • Risk review

0 comments

log in to comment.

report this listinglog in to report