Skip to content

fix: report a pump as running from its telemetry, not its STATUS - #39

Open
hacctarr wants to merge 1 commit into
dwradcliffe:mainfrom
hacctarr:fix/pump-running-binary-sensor
Open

fix: report a pump as running from its telemetry, not its STATUS#39
hacctarr wants to merge 1 commit into
dwradcliffe:mainfrom
hacctarr:fix/pump-running-binary-sensor

Conversation

@hacctarr

@hacctarr hacctarr commented Aug 8, 2026

Copy link
Copy Markdown

The PUMP binary sensor treats STATUS == "10" as running. On both of my PUMP/VSF pumps, STATUS sits at 10 whether or not the pump is turning, so both sensors read on permanently.

Two pumps read at the same moment, straight out of /api/states:

entity STATUS RPM PWR GPM sensor actual
binary_sensor.filter (PMP01) 10 3068 1300 53 on running
binary_sensor.spa_jets (PMP02) 10 0 0 0 on idle

The controller also never pushes STATUS for a pump. Only the telemetry:

NotifyList {"objectList":[{"objnam":"PMP01","params":{"RPM":"3069"}}]}
NotifyList {"objectList":[{"objnam":"PMP01","params":{"PWR":"1306"}}]}

So a STATUS-keyed isUpdated never fires when a pump starts or stops, even on a system where STATUS does move.

PumpBinarySensor derives is_on from whichever of RPM, PWR, and GPM the pump publishes, and keys isUpdated on the same attributes. A pump that publishes none of them falls back to the STATUS comparison, so single speed pumps are untouched. The unique_id is unchanged and existing entities carry over. Device class becomes RUNNING.

Running on 2.0.0 against my own IntelliCenter, binary_sensor.spa_jets now reads off while binary_sensor.filter stays on, and the debug log shows the entity updating off the telemetry it now keys on:

updating <entity binary_sensor.filter=on> from {'PMP01': {'RPM': '3069'}}
updating <entity binary_sensor.filter=on> from {'PMP01': {'PWR': '1306'}}

The PUMP binary sensor treats STATUS == "10" as running. On both of my
PUMP/VSF pumps STATUS sits at "10" whether or not the pump is turning, so
both sensors read on permanently. At one moment the idle spa jets pump
reports STATUS 10 with RPM 0, PWR 0 and GPM 0 while the filter pump
reports STATUS 10 with RPM 3068, PWR 1300 and GPM 53.

The controller never pushes STATUS for a pump either, only RPM, PWR and
GPM, so a STATUS-keyed sensor is not re-evaluated when a pump starts or
stops.

PumpBinarySensor derives is_on from whichever of RPM, PWR and GPM the
pump publishes and keys isUpdated on the same attributes. A pump that
publishes none of them keeps the STATUS comparison. The unique_id is
unchanged, so existing entities carry over.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant