-
Notifications
You must be signed in to change notification settings - Fork 6
Variable Speed Pumps
Unfortunately Home Assistant doesn't have a "pump" entity with variable speed capabilities, so we have leveraged the "switch" entity for all pumps and added a custom service which will allow you to control your variable speed pumps.
The pump speed for variable pumps is exposed as a sensor which you can track. I prefer to also have a control to use for the pump as a slider in my UI, so I found it easier to create a helper for this purpose. Go to the Helpers section of the setup in Home Assistant and create a new helper with the following characteristics:
-
Name:
Pool Pump Speed
-
Icon:
mdi:gauge
-
Minimum Value: The lowest % setting allowed on your pump - in my case this was
35
-
Maximum Value:
100
-
Display Mode:
Slider
-
Step Size:
1
-
Unit of Measurement:
%
-
Entity ID:
input_number.pool_pump_speed
You will then need two services to allow your helper to control the pump and to keep it synced with speed changes that happen outside of the slider:
alias: Pool - Set Pump Speed
description: ''
trigger:
- entity_id: input_number.pool_pump_speed
platform: state
condition:
- condition: state
entity_id: switch.POOL_PUMP_ENTITY
state: 'on'
action:
- data_template:
entity_id: switch.POOL_PUMP_ENTITY
speed: '{{ states.input_number.pool_pump_speed.state | int }}'
service: omnilogic.set_pump_speed
mode: single
alias: Pool - Update Pump Speed Slider
description: ''
trigger:
- entity_id: sensor.POOL_PUMP_ENTITY
platform: state
- event: start
platform: homeassistant
condition:
- condition: state
entity_id: switch.POOL_PUMP_ENTITY
state: 'on'
action:
- data_template:
value: '{{ (states.sensor.POOL_PUMP_SPEED_ENTITY.state | float) }}'
entity_id: input_number.pool_pump_speed
service: input_number.set_value
mode: single
max: 20
To make it easy to set your pump speed without the slider, I have created three 'quick settings' for the pump speed that I expose through buttons on the UI. In my case I used 35%, 55%, and 85% as my 'low', 'medium', and 'high' settings, but you can use whatever works best for you and your pool. These are created as scripts that are identical other than the speed:
Example for 35% script:
alias: Pool Pump - 35%
mode: single
sequence:
- data:
speed: 35
entity_id: switch.POOL_PUMP_ENTITY
service: omnilogic.set_pump_speed
The scripts can then be used easily as buttons on the UI, or in automations for scheduling pump speeds (for example set to 'low' from 7am-7pm, 'high' from 7pm-7am).