Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion custom_components/balboa/climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def preset_mode(self):
return self._client.get_heatmode(True)

@property
def device_state_attributes(self):
def extra_state_attributes(self):
"""Return device specific state attributes."""
return {
"time": f"{self._client.time_hour:02d}:{self._client.time_minute:02d}",
Expand Down
7 changes: 5 additions & 2 deletions custom_components/balboa/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
HVAC_MODE_HEAT,
HVAC_MODE_OFF,
)
from homeassistant.components.fan import SPEED_HIGH, SPEED_LOW, SPEED_OFF

_LOGGER = logging.getLogger(__name__)

Expand All @@ -19,7 +18,6 @@
CLIMATE_SUPPORTED_MODES = [HVAC_MODE_HEAT, HVAC_MODE_OFF]
CONF_SYNC_TIME = "sync_time"
DEFAULT_SYNC_TIME = False
FAN_SUPPORTED_SPEEDS = [SPEED_OFF, SPEED_LOW, SPEED_HIGH]
PLATFORMS = ["binary_sensor", "climate", "fan", "switch"]
SPA = "spa"
UNSUB = "unsub"
Expand All @@ -32,3 +30,8 @@
MISTER = "Mister"
PUMP = "Pump"
TEMP_RANGE = "Temp Range"

FAN_PRESET_MODE_OFF = "Off"
FAN_PRESET_MODE_LOW = "Low"
FAN_PRESET_MODE_HIGH = "High"
FAN_SUPPORTED_PRESET_MODES = [FAN_PRESET_MODE_OFF, FAN_PRESET_MODE_LOW, FAN_PRESET_MODE_HIGH]
44 changes: 21 additions & 23 deletions custom_components/balboa/fan.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
"""Support for Balboa Spa Pumps."""
from homeassistant.components.fan import (
SPEED_LOW,
SPEED_OFF,
SUPPORT_SET_SPEED,
SUPPORT_PRESET_MODE,
FanEntity,
)

from . import BalboaEntity
from .const import _LOGGER, DOMAIN, FAN_SUPPORTED_SPEEDS, PUMP, SPA
from .const import _LOGGER, DOMAIN, FAN_PRESET_MODE_OFF, FAN_PRESET_MODE_LOW, FAN_SUPPORTED_PRESET_MODES, PUMP, SPA


async def async_setup_entry(hass, entry, async_add_entities):
Expand All @@ -28,43 +26,43 @@ class BalboaSpaPump(BalboaEntity, FanEntity):
def __init__(self, hass, entry, key, states):
"""Initialize the pump."""
super().__init__(hass, entry, PUMP, key)
self._speed_list = FAN_SUPPORTED_SPEEDS if states > 1 else None
self._supported_features = SUPPORT_SET_SPEED if states > 1 else 0
self._preset_modes = FAN_SUPPORTED_PRESET_MODES if states > 1 else None
self._supported_features = SUPPORT_PRESET_MODE if states > 1 else 0

async def async_set_speed(self, speed: str) -> None:
async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Set speed of pump."""
setto = FAN_SUPPORTED_SPEEDS.index(speed)
_LOGGER.debug(f"set {self.name} speed to {speed}")
setto = FAN_SUPPORTED_PRESET_MODES.index(preset_mode)
_LOGGER.debug(f"set {self.name} speed to {preset_mode}")
await self._client.change_pump(self._num - 1, setto)

async def async_turn_on(self, speed: str = None, **kwargs) -> None:
async def async_turn_on(self, preset_mode: str = None, **kwargs) -> None:
"""Turn on pump."""
if speed is None:
speed = SPEED_LOW
await self.async_set_speed(speed)
if preset_mode is None:
preset_mode = FAN_PRESET_MODE_LOW
await self.async_set_preset_mode(preset_mode)

async def async_turn_off(self, **kwargs) -> None:
"""Turn off pump."""
await self.async_set_speed(SPEED_OFF)
await self.async_set_preset_mode(FAN_PRESET_MODE_OFF)

@property
def speed_list(self) -> list:
"""Get the list of available speeds."""
return self._speed_list
def preset_modes(self) -> list:
"""Get the list of available preset modes."""
return self._preset_modes

@property
def supported_features(self) -> int:
"""Flag supported features."""
return self._supported_features

@property
def speed(self) -> str:
"""Return the current speed."""
def preset_mode(self) -> str:
"""Get the active preset mode."""
pstate = self._client.get_pump(self._num - 1)
_LOGGER.debug(f"{self.name} speed is {FAN_SUPPORTED_SPEEDS[pstate]}")
if pstate >= len(FAN_SUPPORTED_SPEEDS) or pstate < 0:
return SPEED_OFF
return FAN_SUPPORTED_SPEEDS[pstate]
_LOGGER.debug(f"{self.name} speed is {FAN_SUPPORTED_PRESET_MODES[pstate]}")
if pstate >= len(FAN_SUPPORTED_PRESET_MODES) or pstate < 0:
return FAN_PRESET_MODE_OFF
return FAN_SUPPORTED_PRESET_MODES[pstate]

@property
def is_on(self):
Expand Down