Pool Systems Dashboard: Difference between revisions
Matt Parnell (talk | contribs) |
Matt Parnell (talk | contribs) |
||
| (22 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
The dashboard provides a visual interface for the [[Pool Systems Automation]]. | |||
== System == | == System == | ||
| Line 5: | Line 5: | ||
=== Hardware === | === Hardware === | ||
Communication with the | 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 [https://www.raspberrypi.com/products/raspberry-pi-5/ Raspberry Pi 5] (4 GB). The Pi hardware was upgraded in 2025; previously it ran on a [https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ 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 [[Pool Systems Automation#Programmable Logic Controller|Programmable Logic Controller]] and [[Pool Boiler Temperature Controller|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 [https://beagleboard.org/black 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 [https://forum.beagleboard.org/t/1680x1050x60-resolution-via-hdmi/2692/2 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 === | === Software === | ||
All software operates on [https://www.raspberrypi.org/software/operating-systems/ Raspberry Pi OS] (the "Lite" distribution), which is based on Debian GNU/Linux. | |||
==== InfluxDB ==== | |||
[https://www.influxdata.com/products/influxdb-overview/ InfluxDB] is a time series database, used to store data collected by [https://www.influxdata.com/time-series-platform/telegraf/ Telegraf]. | |||
Previously, [https://www.influxdata.com/time-series-platform/chronograf/ Chronograf] was used to display the data in a visually useful way on the dashboard. [https://www.influxdata.com/time-series-platform/kapacitor/ 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 [https://grafana.com/ Grafana]. This seems to be the preferred direction for InfluxDB 3 onward. Grafana offers far more DB (input) hooks than Chronograf. | |||
==== Node-RED ==== | |||
[https://nodered.org/ 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 == | == Gauges == | ||
| Line 13: | Line 58: | ||
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. | 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. | ||
=== Tank Pressure === | === Filter Tank Pressure === | ||
Shows the pressure in pounds per square inch (psi) for a [[Sand Filters|sand filter]] tank per | Shows the pressure in pounds per square inch (psi) for a [[Sand Filters|sand filter]] tank per the PLC [[Pool Systems Automation#Filter Tank Pressure|Filter Tank Pressure]] measurement (via WiFi link). | ||
The color bands are determined as follows: | The color bands are determined as follows: | ||
| Line 40: | Line 83: | ||
|18+ | |18+ | ||
|Yellow/Red | |Yellow/Red | ||
|[[Backwash]] Recommended | |[[Backwashing|Backwash]] Recommended | ||
|} | |} | ||
| Line 49: | Line 92: | ||
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. | 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 | === Surge Tank Level === | ||
Shows the depth in inches for the surge tank. | Shows the level (depth) in inches for the surge tank per the PLC [[Pool Systems Automation#Surge Tank Level|Surge Tank Level]] measurement (via WiFi link). | ||
The color bands are determined as follows: | The color bands are determined as follows: | ||
| Line 64: | Line 105: | ||
|< 16 | |< 16 | ||
|Red | |Red | ||
|Critical | |Critical Level | ||
|- | |- | ||
|16-46 | |16-46 | ||
|Yellow | |Yellow | ||
|Low | |Low Level (Auto-Fill Threshold) | ||
|- | |- | ||
|46-60 | |46-60 | ||
|Green | |Green | ||
|Nominal | |Nominal Level (See Note) | ||
|- | |- | ||
|60-76 | |60-76 | ||
|Blue | |Blue | ||
|Excess | |Excess Level | ||
|- | |- | ||
|> 76 | |> 76 | ||
|Red | |Red | ||
|Overflow | |Overflow Level | ||
|} | |} | ||
Note: The "Nominal | 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 | 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 | The tank nears overflow at the "Overflow Level" threshold. No specific action is taken by the PLC at this point. | ||
=== Out Flow === | === Out Flow === | ||
Shows the out flow rate in gallons per minute (GPM). | Shows the out flow rate in gallons per minute (GPM). | ||
| Line 127: | Line 166: | ||
=== Inlet Temperature === | === 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]]). | 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]]). | ||
| Line 155: | Line 192: | ||
=== pH === | === pH === | ||
Shows the sampled water pH per a [[Chemtrol Pool Controller]] measurement (via RS-485/Ethernet link). | Shows the sampled water pH per a [[Chemtrol Pool Controller]] measurement (via RS-485/Ethernet link). | ||
| Line 191: | Line 226: | ||
=== ORP === | === ORP === | ||
Shows the sampled water oxidation reduction potential (ORP) per a [[Chemtrol Pool Controller]] measurement (via RS-485/Ethernet link). | Shows the sampled water oxidation reduction potential (ORP) per a [[Chemtrol Pool Controller]] measurement (via RS-485/Ethernet link). | ||
| Line 198: | Line 231: | ||
== Graphs == | == Graphs == | ||
To be updated. | |||