Pool Systems Dashboard

From Fairway Farms Swim Club
Revision as of 18:45, 30 June 2025 by Matt Parnell (talk | contribs) (→‎Graphs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The dashboard provides a visual interface for the Pool Systems Automation.

System

Hardware

The hardware is responsible for data collection and display of the dashboard. It is located on the south wall of the pump house.

Raspberry Pi

The dashboard presently runs on a Raspberry Pi 5 (4 GB). The Pi hardware was upgraded in 2025; previously it ran on a Raspberry Pi 3 Model B V1.2.

The Pi is powered via a modified USB-C cable, connected to a Mean Well DDR-15G-5. Note that previously, a a micro USB cable was used for the Pi 3B. This device drops the 12 V chassis supply down to 5 V (for the Pi) and is capable of producing 15 W (3 A). This exceeds the 2.5 A requirement cited for the Pi. The internal WiFi radio is NOT used; instead, network connectivity is provided by Ethernet (to the Lantronix PremierWave XN).

Communication with the Programmable Logic Controller and Temperature Controller requires a functional WiFi device network.

Lantronix PremierWave XN

The Lantronix PremierWave XN in the chassis with the Raspberry Pi has multiple purposes:

  • To provide serial-to-IP conversion for the RS-485 port on the Chemtrol Pool Controller.
  • To provide a link to the WiFi device network.
  • To provide an Ethernet port, bridging/routing WiFi to the connected device.

BeagleBone Black

In the early trials, a BeagleBone Black board was used. Unfortunately, it had two significant limitations:

  • A lack of 1080p (or better) monitor support. The proved problematic, as the HP Compaq LA2405x has a 1920x1200 native resolution. The pixel clock on the CPU is limited to 126.5 MHz. 1920x1080x60 requires a pixel clock of 173 MHz; clearly 1920x1200 requires an even higher frequency pixel clock. This was discussed with one of the main developers here.
  • A single-core CPU. As it turns out, the dashboard software requires a lot of CPU time to render in a browser. So much so that a single core simply couldn't keep up; render times exceeded 30 seconds as I recall. By using a CPU with multiple cores, the multiple threads of work can be spread out and processed in parallel.

Both limitations aside, the BeagleBone Black is a fantastic piece of hardware, it just wasn't ideally suited for this project.

Software

All software operates on Raspberry Pi OS (the "Lite" distribution), which is based on Debian GNU/Linux.

InfluxDB

InfluxDB is a time series database, used to store data collected by Telegraf.

Previously, Chronograf was used to display the data in a visually useful way on the dashboard. Kapacitor was used to trigger actions based upon data values.

Grafana

In the Pi 5 refresh, the Chronograf/Kapacitor portion of the InfluxDB TICK stack were replaced with Grafana. This seems to be the preferred direction for InfluxDB 3 onward. Grafana offers far more DB (input) hooks than Chronograf.

Node-RED

Node-RED is used to request and interpret data from the Chemtrol Pool Controller via its RS-485 interface (over Ethernet).

LCD Monitor

The monitor is an "old" HP Compaq LA2405x. This was an older surplus unit, installed in 2021. It is/was fully expected that this monitor may eventually fail due to the corrosive environment it's exposed to in the summer, along with a cold/damp/unconditioned environment in the winter. That said, it's still going strong as of 2025. Replacement is straightforward; screws accessible on the bottom side release it from the VESA wall mount. Any monitor with HD or better resolution and an HDMI input should suffice.

Gauges

Gauge measurements are averaged in both the PLC and dashboard software. Gauges may take several seconds (or longer) to respond to significant changes in system conditions.

Filter Tank Pressure

Shows the pressure in pounds per square inch (psi) for a sand filter tank per the PLC Filter Tank Pressure measurement (via WiFi link).

The color bands are determined as follows:

Range
(psi)
Color Description
0-4 Red Critically Low Pressure (Pump/Flow Issue)
4-8 Yellow Low Pressure (Flow Issue) - Consider Cleaning the Strainer Basket
8-18 Green Normal Operating Pressure
18+ Yellow/Red Backwash Recommended

For consistent indication, the values above and dashboard visualization thresholds should always align with those defined within the PLC thresholds.

Tank pressure is lowest when the strainer basket is clean and the sand filters have been recently backwashed. If pump outflow is restricted enough (in an effort to maintain proper flow, it is possible for pressure to dip into the "Low Pressure" range. This is not necessarily a cause for any concern.

If the associated sensor is in a fault state (the sensor has failed, there is a wiring/fuse fault or the connector is unplugged), the gauge will show a value of 0.0. A fault state is indicated by the PLC and the stack light. If the gauge is not visible (the block is blank), a communication error with the PLC has occurred or a software issue is present on the dashboard PC. Consult the system administrator.

Surge Tank Level

Shows the level (depth) in inches for the surge tank per the PLC Surge Tank Level measurement (via WiFi link).

The color bands are determined as follows:

Range
(in)
Color Description
< 16 Red Critical Level
16-46 Yellow Low Level (Auto-Fill Threshold)
46-60 Green Nominal Level (See Note)
60-76 Blue Excess Level
> 76 Red Overflow Level

Note: The "Nominal Level" of the surge tank is subject to future revision. At this time, lacking a proper drain modulating valve, it is not possible to provide "surge" capacity (keep the tank level lowered during periods of high gutter flow). As a result, some portion of the "Nominal Level" and "Excess Level" is expected when the pool level is high and/or there is a large amount of activity in the pool. Ideally, the surge tank should usually remain below the gutter inlet level.

When the "Critical Level" threshold is met, this may result in pump shutdown (per the PLC) to prevent pulling air into the pump. The surge tank water level is insufficient to maintain operation. When enabled, auto-fill begins at the upper end of the "Low Level" threshold and ends when the upper end of the "Nominal Level" is met. A large amount of surge tank level hysteresis is needed when an actual pool level measurement is lacking.

The tank nears overflow at the "Overflow Level" threshold. No specific action is taken by the PLC at this point.

Out Flow

Shows the out flow rate in gallons per minute (GPM).

The color bands are determined as follows:

Range
(°F)
Color Description
< 490 Red Very Low Flow
490-570 Yellow Low Flow (See Note)
570-670 Green Optimal Flow
> 670 Yellow High Flow

A target flow rate of 600 GPM has been established for manual adjustment. This flow rate:

  • Meets the minimum pool turnover rate of 4 times per day (every 6 hours) for a 203,500 gallon pool.
  • Is within some margin of the maximum flow rate set by the sand filters (140 GPM x 4 = 580 GPM).

To prevent channeling in the sand filters, an upper bound of 670 GPM has been set (somewhat arbitrarily). The operator should try to keep as close to 600 GPM operation as possible (without dipping below 570 GPM).

Inlet Temperature

Shows the inlet temperature in degrees Fahrenheit (°F) per the temperature controller measurement (via WiFi link). This temperature is measured directly after the filter tanks, prior to the boiler loop (refer to the Process Flow Diagram).

The color bands are determined as follows:

Range
(°F)
Color Description
< 79 Blue Low Temperature (Temperature Controller Alarm)
79-81 Yellow Low Temperature (Outside of Controlled Bounds)
81+ Green Normal Temperature

The boiler is nominally set to 82 °F. Controller hysteresis keeps the temperature to within ±1 °F or less. The temperature controller enters an "alarm" state indicating that the boiler may be in a fault state once the temperature is below 79 °F. During hot summer days, temperatures of 82 °F to 87 °F are expected and normal.

pH

Shows the sampled water pH per a Chemtrol Pool Controller measurement (via RS-485/Ethernet link).

The color bands are determined as follows:

Range
(°F)
Color Description
< 7.2 Red Corrosive Water (See Note)
7.2-7.4 Yellow pH Low
7.4-7.6 Green pH Ideal
7.6-7.8 Yellow pH High
> 7.8 Red Scaling Water (See Note)

Note: Ideal pH is between 7.4 and 7.6. A pH between 7.2 and 7.8 is generally acceptable (though possibly too low or too high). A pH below 7.2 or above 7.8 may be problematic; verify by calculating the Langelier Saturation Index (LSI).

ORP

Shows the sampled water oxidation reduction potential (ORP) per a Chemtrol Pool Controller measurement (via RS-485/Ethernet link).

Graphs

To be updated.