Pool Monitor Card
![hacs_badge](https://img.shields.io/badge/HACS-Custom-41BDF5.svg?style=for-the-badge)
Click me to see more screenshots
Multilanguage ReadMe
Click on the following button to choose the language of your ReadMe :
![en](https://img.shields.io/badge/lang-en-red.svg)
TOC
Description
The "Pool Monitor Card" is a home assistant plugin that display information of 12 pre-defined sensors of your swimming pool : temperature, pH, ORP levels and TDS but also if you need them : salinity, CYA, calcium, phosphate, alkalinity, free chlorine, total chlorine, filter pressure
-
Temperature: This refers to the temperature of the water in your pool. The ideal range for temperature in a pool is between 26°C and 28°C. Knowing the temperature can help you decide if it's warm enough for swimming or if it's too cold and might need to be heated.
-
pH: This is a measure of how acidic or alkaline the water in your pool is. The ideal range for pH in a pool is between 7.0 and 7.4. Maintaining the proper pH level can help prevent skin and eye irritation and keep the pool water safe for swimming.
-
ORP: This stands for Oxidation Reduction Potential and measures the ability of the water to oxidize or reduce substances in the pool. The ORP level is related to the amount of chlorine or other sanitizers in the pool. The ideal range for chlorine in a pool is between 650 and 750 mV. Maintaining the correct ORP level can help ensure that the pool water is properly sanitized and free of harmful bacteria.
-
TDS: This stands for Total Dissolved Solids and measures the amount of inorganic and organic substances in the water, such as minerals, salts, and other particles. High levels of TDS can affect water clarity and make it difficult to balance chemicals in the pool. The ideal range for TDS in a saltwater pool is between 3000 and 5000 parts per million (ppm) (3 and 5 g/L).
Click me to continue to list 8 other possible sensors
- **Salinity**: This measures the amount of salt in the water. A saltwater pool requires a specific range of salt to function properly. The ideal range for salt in a saltwater pool is between 2500 and 3500 ppm.
- **CYA**: This stands for Cyanuric Acid and measures the amount of stabilizer in the water. Stabilizer helps to protect the chlorine from being broken down by sunlight. The ideal range for CYA in a pool is between 30 and 50 ppm.
- **Calcium**: This measures the amount of calcium in the water. High levels of calcium can lead to scaling on pool surfaces and equipment. The ideal range for calcium hardness in a pool is between 200 and 400 ppm.
- **Phosphate**: This measures the amount of phosphate in the water. Phosphates in the water can provide food for algae to grow. The ideal range for phosphate in a pool is below 200-300 ppm.
- **Alkalinity**: This measures the ability of the water to resist changes in pH. Proper alkalinity can help to prevent the water from becoming too acidic or alkaline. The ideal range for alkalinity in a pool is between 80 and 120 ppm.
- **Free Chlorine**: This measures the amount of active chlorine in the water that is available to sanitize the pool. The ideal range for free chlorine in a pool is between 1 and 3 ppm.
- **Total Chlorine**: This measures the combined concentration of both free chlorine and chlorine that has combined with contaminants in the water. The ideal range for total chlorine in a pool is up to 5 ppm.
- **Filter pressure**: This measures the pressure inside the pool filter. A high filter pressure can indicate that the filter is dirty and needs to be cleaned. The ideal filter pressure can vary depending on the make and model of the pool filter.
With the "Pool Monitor Card", you can easily monitor these important aspects of your swimming pool and make any necessary adjustments to ensure that the water is safe and comfortable for swimming.
Support
Hey dude! Help me out for a couple of :beers: or a :coffee:!
![coffee](https://www.buymeacoffee.com/assets/img/custom_images/black_img.png)
Install
via HACS
Until the Home Assistant Pool Monitor card is available by default in the HACS directory, click on:
![Open your Home Assistant instance and open a repository inside the Home Assistant Community Store.](https://my.home-assistant.io/badges/hacs_repository.svg)
Manualy
- Download the
pool_monitor_card.js
file from the latest release available and save it in your configuration/www
folder.
- Go to
Configuration > Lovelace dashboard > Resources
in Home Assistant and click on Add resource
.
- Add
/local/community/pool-monitor-card/pool_monitor_card.js
to the URL.
- Choose
Javascript Module
as Resource type.
Lovelace Set up
Using UI
Not yet possible.
Using YAML
- You just need to add a new empty card with
type: 'custom:pool-monitor-card'
to your cards list and any of the config that you will find below if you want to customize more your card.
Example of code
type: 'custom:pool-monitor-card'
temperature: sensor.your_temperature_sensor
ph: sensor.your_ph_sensor
Parameters
Sensors Options
Here's a list of sensors that may be important to monitor, depending on your pool's specific needs. Maintaining levels within the recommended ranges is essential to keep your pool healthy and swimmable.
*All are optionals but you need to define at least one of theses entities
Name |
Type |
Requirement |
Description |
Default |
type |
string |
Required |
custom:pool-monitor-card |
temperature |
string |
**Optional*** |
The entity that measures the water temperature. |
none |
ph |
string |
**Optional*** |
The entity that measures the acidity or basicity of the water. |
none |
orp |
string |
**Optional*** |
The entity that measures the Oxidation Reduction Potential of the water. |
none |
tds |
String |
**Optional*** |
The entity that measures the Total Dissolved Solids in the water. |
none |
salinity |
String |
**Optional*** |
The entity that measures the salt level in the water (for saltwater pools). |
none |
cya |
String |
**Optional*** |
The entity that measures the Cyanuric Acid level in the water. |
none |
calcium |
String |
**Optional*** |
The entity that measures the Calcium Hardness level in the water. |
none |
phosphate |
String |
**Optional*** |
The entity that measures the Phosphate level in the water. |
none |
free_chlorine |
String |
**Optional*** |
The entity that measures the concentration of free chlorine in the water. |
none |
total_chlorine |
String |
**Optional*** |
The entity that measures the concentration of both free chlorine and combined chlorine in the water. |
none |
alkalinity |
String |
**Optional*** |
The entity that measures the alkalinity of the water. |
none |
pressure |
String |
**Optional*** |
The entity that measures the filter pressure in the pool. |
none |
Advanced options
You can go further with the card by modifying the user interface (UI).
User eXperience (UX)
Name |
Type |
Requirement |
Description |
Default |
title |
string |
Optional |
Pool Monitor Card Title |
none |
compact |
boolean |
Optional |
Compact Mode |
false |
show_names |
boolean |
Optional |
Display the name of the entity |
true |
show_labels |
boolean |
Optional |
Display the state qualification (Low, Ideal, High) |
true |
show_last_updated |
boolean |
Optional |
Display the last updated sensor relative date [Only for compact = false] |
false |
language |
string |
Optional |
Interface language (en, fr, es) |
en |
Needed to change the unit, setpoint, and steps ? No problem, see additionnal parameters below for each measured entity .
Temperature
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `temperature_name` | String | **Optional** | Sensor Name |`Temperature` [Multilanguage]|
| `temperature_unit` | String | **Optional** | Temperature Unit (°C or °F) |`°C`|
| `temperature_setpoint` | Number | **Optional** | Temperature Set Point |If unit=°C:`27`
If unit=°F:`80`|
| `temperature_step` | Number | **Optional** | Temperature Step |If unit=°C:`1`
If unit=°F:`2`|
NOTE: I added a second parameter named temperature_2 (with same logic for unit, setpoint, step) for thoses who have multiple temperature sensors.
pH
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ph_name` | String | **Optional** | Sensor Name |`pH` [Multilanguage]|
| `ph_unit` | String | **Optional** | pH Unit |`pH`|
| `ph_setpoint` | Number | **Optional** | pH Set Point |`7.2`|
| `ph_step` | Number | **Optional** | pH Step |`0.2`|
ORP
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `orp_name` | String | **Optional** | Sensor Name |`ORP` [Multilanguage]|
| `orp_unit` | String | **Optional** | ORP Unit |`mV`|
| `orp_setpoint` | Number | **Optional** | ORP Set Point |`700`|
| `orp_step` | Number | **Optional** | ORP Step |`50`|
TDS
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tds_name` | String | **Optional** | Sensor Name |`TDS` [Multilanguage]|
| `tds_unit` | String | **Optional** | TDS Unit (g/L or ppm) |`g/L`|
| `tds_setpoint` | Number | **Optional** | TDS Set Point |If unit=g/L:`4`
If unit=ppm:`4000`|
| `tds_step` | Number | **Optional** | TDS Step |If unit=g/L:`1`
If unit=ppm:`1000`|
Salinity
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `salinity_name` | String | **Optional** | Sensor Name |`Salinity` [Multilanguage]|
| `salinity_unit` | String | **Optional** | Salinity Unit (ppm or g/L) |`ppm`|
| `salinity_setpoint` | Number | **Optional** | Salinity Set Point |If unit=g/L:`4.5`
If unit=ppm:`3000`|
| `salinity_step` | Number | **Optional** | Salinity Step |If unit=g/L:`0.5`
If unit=ppm:`500`|
Cyanuric Acid
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `cya_name` | String | **Optional** | Sensor Name |`Cyanuric Acid` [Multilanguage]|
| `cya_unit` | String | **Optional** | Cyanuric Acid Unit |`ppm`|
| `cya_setpoint` | Number | **Optional** | Cyanuric Acid Set Point | `40` |
| `cya_step` | Number | **Optional** | Cyanuric Acid Step |`10`|
Calcium
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `calcium_name` | String | **Optional** | Sensor Name |`Calcium` [Multilanguage]|
| `calcium_unit` | String | **Optional** | Calcium Unit |`ppm`|
| `calcium_setpoint` | Number | **Optional** | Calcium Set Point | `300` |
| `calcium_step` | Number | **Optional** | Calcium Step |`100`|
Phosphate
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `phosphate_name` | String | **Optional** | Sensor Name |`Phosphate` [Multilanguage]|
| `phosphate_unit` | String | **Optional** | Phosphate Unit |`ppb`|
| `phosphate_setpoint` | Number | **Optional** | Phosphate Set Point | `100` |
| `phosphate_step` | Number | **Optional** | Phosphate Step |`100`|
Alkalinity
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `alkalinity_name` | String | **Optional** | Sensor Name |`Alkalinity` [Multilanguage]|
| `alkalinity_unit` | String | **Optional** | Alkalinity Unit |`ppm`|
| `alkalinity_setpoint` | Number | **Optional** | Alkalinity Set Point | `100` |
| `alkalinity_step` | Number | **Optional** | Alkalinity Step |`20`|
Free Chlorine
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `free_chlorine_name` | String | **Optional** | Sensor Name |`Free Chlorine` [Multilanguage]|
| `free_chlorine_unit` | String | **Optional** | Free Chlorine Unit |`ppm`|
| `free_chlorine_setpoint` | Number | **Optional** | Free Chlorine Set Point | `2` |
| `free_chlorine_step` | Number | **Optional** | Free Chlorine Step |`1`|
Total Chlorine
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `total_chlorine_name` | String | **Optional** | Sensor Name |`Total Chlorine` [Multilanguage]|
| `total_chlorine_unit` | String | **Optional** | Total Chlorine Unit |`ppm`|
| `total_chlorine_setpoint` | Number | **Optional** | Total Chlorine Set Point | `3` |
| `total_chlorine_step` | Number | **Optional** | Total Chlorine Step |`1`|
Filter Pressure
click me to open
| Name | Type | Requirement | Description | Default |
| -------------- | ----------- | ------------ | ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pressure_name` | String | **Optional** | Sensor Name |`Filter Pressure` [Multilanguage]|
| `pressure_unit` | String | **Optional** | Filter Pressure Unit (psi or bar) |`psi`|
| `pressure_setpoint` | Number | **Optional** | Filter Pressure Set Point | `20` |
| `pressure_step` | Number | **Optional** | Filter Pressure Step |`10`|
Hardware
Here is a non-exhaustive, non-tested and non-affiliated list of different materials that may capture some of the above values:
NOTE: ✔️ indicates that the model is able to measure the specified parameter, while ❌ indicates it is not.
The last column is about info to connect it to Home Assistant.
Click me to see more hardware