Entities¶
Pool Manager creates a device for each configured pool, with the following
entities attached to it. All entity IDs follow the pattern
{domain}.{pool_name}_{key}, where {pool_name} is derived from the pool
name you set during configuration.
Sensors¶
The integration creates 22 sensor entities:
Reading sensors¶
These sensors mirror your source sensor values, giving you a unified view under the Pool Manager device.
| Entity | Name | Unit | Device Class | Description |
|---|---|---|---|---|
sensor.{pool}_temperature |
Water temperature | °C | temperature |
Water temperature reading |
sensor.{pool}_ph |
pH | -- | ph |
pH level reading |
sensor.{pool}_orp |
ORP | mV | -- | Oxidation-Reduction Potential reading |
sensor.{pool}_free_chlorine |
Free chlorine | ppm | -- | Free chlorine level reading |
sensor.{pool}_ec |
Electrical conductivity | µS/cm | -- | Electrical conductivity reading (diagnostic/trending) |
sensor.{pool}_tds |
Total dissolved solids | ppm | -- | TDS reading (computed from EC or manual measurement) |
sensor.{pool}_salt |
Salt level | ppm | -- | Salt level reading (salt electrolysis pools) |
Computed sensors¶
These sensors are calculated by Pool Manager from your readings.
| Entity | Name | Unit | Description |
|---|---|---|---|
sensor.{pool}_filtration_duration |
Recommended filtration | h | Recommended daily filtration hours, computed from water temperature, filter type efficiency, outdoor temperature, and pump capacity. See Pool Modes for the full algorithm. |
sensor.{pool}_water_quality_score |
Water quality | % | Overall water quality score from 0 (poor) to 100 (perfect). See Water Chemistry for scoring details. |
sensor.{pool}_recommendations |
Recommendations | -- | Number of active recommendations. See details below. |
sensor.{pool}_chemistry_actions |
Chemistry actions | -- | Number of chemistry-related actions (excludes filtration). See details below. |
sensor.{pool}_active_treatments |
Active treatments | -- | Number of currently active chemical treatments. See Chemistry Tracking for details. |
sensor.{pool}_safe_at |
Safe to swim at | -- | Timestamp (timestamp device class) indicating when the pool will be safe for swimming after treatments. None if already safe. |
Recommendations sensor attributes¶
The recommendations sensor exposes additional detail through its state attributes:
| Attribute | Type | Description |
|---|---|---|
actions |
list of strings | Human-readable description of each active recommendation (e.g., "Add 450g of ph_minus") |
critical_count |
integer | Number of high or critical priority recommendations |
These attributes can be used in automations, templates, or Lovelace cards to display detailed recommendation information.
Chemistry actions sensor attributes¶
The chemistry_actions sensor exposes chemistry-related recommendations
(chemical treatments and alerts, excluding filtration) through its
state attributes:
| Attribute | Type | Description |
|---|---|---|
actions |
list of objects | Each action includes kind (suggestion/requirement), message, product, quantity_g, spoon_count, and spoon_name |
suggestion_count |
integer | Number of actions classified as suggestions |
requirement_count |
integer | Number of actions classified as requirements |
When measuring spoon sizes are configured, each action object also includes:
| Field | Type | Description |
|---|---|---|
spoon_count |
integer or null | Number of spoons equivalent to the gram dosage (null for tablet products or when no spoons are configured) |
spoon_name |
string or null | Name of the selected spoon size (null when spoon_count is null) |
See Spoon Equivalents for details on how spoon counts are calculated.
Actions are classified as either suggestions (optional improvements) or requirements (needed to keep the pool safe). See Action Kind for details.
Chemistry status sensors¶
These sensors provide a quick good / warning / bad status for each chemistry parameter. See Water Chemistry -- Chemistry Status for how the status is determined.
| Entity | Name | Options | Description |
|---|---|---|---|
sensor.{pool}_ph_status |
pH status | good, warning, bad |
pH level status |
sensor.{pool}_orp_status |
ORP status | good, warning, bad |
Oxidation-Reduction Potential status |
sensor.{pool}_free_chlorine_status |
Free chlorine status | good, warning, bad |
Free chlorine level status |
sensor.{pool}_salt_status |
Salt status | good, warning, bad |
Salt level status (salt electrolysis pools) |
sensor.{pool}_tac_status |
TAC status | good, warning, bad |
Total alkalinity status |
sensor.{pool}_cya_status |
CYA status | good, warning, bad |
Cyanuric acid (stabilizer) status |
sensor.{pool}_hardness_status |
Hardness status | good, warning, bad |
Calcium hardness status |
sensor.{pool}_tds_status |
TDS status | good, warning, bad |
Total dissolved solids status |
Each status sensor exposes additional detail through its state attributes:
| Attribute | Type | Description |
|---|---|---|
value |
float | Current reading for this parameter |
target |
float | Ideal target value |
minimum |
float | Lower bound of the acceptable range |
maximum |
float | Upper bound of the acceptable range |
score |
integer | Individual quality score from 0 (poor) to 100 (perfect) |
Dashboard ideas
Use the status sensors to build a chemistry dashboard card that shows at a glance which parameters need attention. Combine with the extra attributes to display the actual reading alongside its target range.
Active treatments sensor attributes¶
The active_treatments sensor exposes additional detail through its state attributes:
| Attribute | Type | Description |
|---|---|---|
treatments |
list of objects | Details of each active treatment: product, applied_at, safe_at, quantity_g |
Activation step sensor¶
The activation_step sensor tracks progress through the
Activation Wizard. It shows the next
pending step when the pool is in Activating mode, or has no state
when the pool is in any other mode.
| Entity | Name | Device Class | Options | Description |
|---|---|---|---|---|
sensor.{pool}_activation_step |
Activation step | enum |
remove_cover, raise_water_level, clean_pool_and_filter, shock_treatment, intensive_filtration |
Current (next pending) activation wizard step |
Activation step sensor attributes¶
| Attribute | Type | Description |
|---|---|---|
completed_steps |
list of strings | Steps already confirmed |
pending_steps |
list of strings | Steps still to be confirmed |
progress |
string | Progress in the format "N/5" (e.g. "2/5") |
started_at |
string (ISO 8601) | When the activation process was started |
These attributes are empty when the pool is not in activating mode.
The checklist state persists across Home Assistant restarts via the
RestoreEntity mechanism.
Binary Sensors¶
The integration creates 3 binary sensor entities for quick status checks:
| Entity | Name | Device Class | ON when... |
|---|---|---|---|
binary_sensor.{pool}_water_ok |
Water quality | safety |
No high or critical priority recommendations exist and no active treatment safety period is in effect |
binary_sensor.{pool}_action_required |
Action required | problem |
At least one recommendation is active (any priority) |
binary_sensor.{pool}_swimming_safe |
Swimming safe | safety |
No active treatment safety period is in effect (all swim wait times have elapsed) |
Automation ideas
Use binary_sensor.{pool}_action_required to trigger notifications when your pool needs attention, binary_sensor.{pool}_water_ok to confirm that water chemistry is within acceptable ranges, or binary_sensor.{pool}_swimming_safe to notify when the pool is safe for swimming after a treatment.
Event Entities¶
The integration creates 18 event entities, one per chemical product,
to track treatment applications. Each entity fires an applied event
when a treatment is recorded via the poolman.add_treatment service.
Treatment-specific products (e.g., bromine_tablet) are disabled by
default when the pool's configured treatment type doesn't match.
Universal products (e.g., ph_minus, flocculant) are always enabled.
See Chemistry Tracking for the full list of products, safety profiles, and usage details.
Select¶
The integration creates select entities to control operational settings:
| Entity | Name | Options | Default | Description |
|---|---|---|---|---|
select.{pool}_mode |
Pool mode | active, hibernating, winter_active, winter_passive, activating |
active |
Controls the current operational mode. Persisted across restarts. See Pool Modes for details on each mode. |
Changing the mode immediately triggers a data refresh and recalculation of all computed values.
Filtration Control Entities¶
When a pump switch entity is configured in the integration, additional entities are created for automatic pump scheduling. These entities are conditional -- they only appear when a pump entity is set.
See Filtration Control for full details on scheduling behavior, cross-midnight support, and automation examples.
Switch¶
| Entity | Name | Description |
|---|---|---|
switch.{pool}_filtration_control |
Filtration control | Enables or disables automatic daily pump scheduling. Turning off immediately stops the pump. |
Duration Mode Select¶
| Entity | Name | Default | Options | Description |
|---|---|---|---|---|
select.{pool}_filtration_duration_mode |
Filtration duration mode | Dynamic | manual, dynamic, split_static, split_dynamic |
Controls how filtration duration is determined and whether it is split across two periods. See Filtration Control -- Duration Mode. |
Time¶
| Entity | Name | Default | Availability | Description |
|---|---|---|---|---|
time.{pool}_filtration_start_time |
Filtration start time | 10:00 | Always | Daily start time for the first filtration period |
time.{pool}_filtration_start_time_2 |
Filtration start time 2 | 16:00 | Split modes only | Start time for the second filtration period |
Number¶
| Entity | Name | Default | Range | Availability | Description |
|---|---|---|---|---|---|
number.{pool}_filtration_duration_setting |
Filtration duration | 8 h | 1--24 h (step 0.5) | Always | Duration of the first filtration period. In dynamic mode, automatically updated to match the recommendation. |
number.{pool}_filtration_duration_setting_2 |
Filtration duration 2 | 4 h | 0--24 h (step 0.5) | Split modes only | Duration of the second filtration period. In split (dynamic) mode, auto-computed from the recommendation. |
Event¶
| Entity | Name | Event types | Description |
|---|---|---|---|
event.{pool}_filtration |
Filtration | filtration_started, filtration_stopped, boost_started, boost_consumed, boost_cancelled |
Fires when the pump is turned on or off by the scheduler, or when a boost is activated, consumed, or cancelled |
Filtration Boost¶
| Entity | Name | Type | Options / Unit | Description |
|---|---|---|---|---|
select.{pool}_filtration_boost |
Filtration boost | Select | none, +2h, +4h, +8h, +24h |
Activate a preset boost or cancel the current boost |
sensor.{pool}_filtration_boost_remaining |
Filtration boost remaining | Sensor | hours | Remaining boost hours (0 when no boost is active) |
See Filtration Control -- Filtration Boost for full details on boost behavior, persistence, and automation examples.
Events¶
Pool Manager fires poolman_event events on the Home Assistant event bus
whenever a status transition is detected between two consecutive data updates.
These events can be used to trigger automations (e.g. send a notification when
pH becomes bad).
Note
Events are not fired on the first data update after Home Assistant starts, since there is no previous state to compare against.
Chemistry status changed¶
Fired when an individual chemistry parameter transitions between good,
warning, and bad, or becomes available/unavailable.
| Field | Type | Description |
|---|---|---|
device_id |
string | Device registry ID of the pool device |
type |
string | chemistry_status_changed |
parameter |
string | ph, orp, free_chlorine, salt, tac, cya, hardness, or tds |
previous_status |
string | null | Previous status (good, warning, bad), or null if the parameter was unavailable |
status |
string | null | New status (good, warning, bad), or null if the parameter became unavailable |
Water status changed¶
Fired when the overall water quality flips between OK and not OK (based on whether high/critical recommendations exist).
| Field | Type | Description |
|---|---|---|
device_id |
string | Device registry ID of the pool device |
type |
string | water_status_changed |
parameter |
string | water |
previous_status |
string | ok or not_ok |
status |
string | ok or not_ok |