SmartTub cleanup (#49579)

This commit is contained in:
Matt Zimmerman 2021-04-22 21:54:55 -07:00 committed by GitHub
parent 48695869f9
commit fec6ea3f76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 19 additions and 20 deletions

View File

@ -41,6 +41,14 @@ class SmartTubOnline(SmartTubSensorBase, BinarySensorEntity):
"""Initialize the entity.""" """Initialize the entity."""
super().__init__(coordinator, spa, "Online", "online") super().__init__(coordinator, spa, "Online", "online")
@property
def entity_registry_enabled_default(self) -> bool:
"""Return if the entity should be enabled when first added to the entity registry.
This seems to be very noisy and not generally useful, so disable by default.
"""
return False
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:
"""Return true if the binary sensor is on.""" """Return true if the binary sensor is on."""
@ -72,7 +80,7 @@ class SmartTubReminder(SmartTubEntity, BinarySensorEntity):
@property @property
def reminder(self) -> SpaReminder: def reminder(self) -> SpaReminder:
"""Return the underlying SpaReminder object for this entity.""" """Return the underlying SpaReminder object for this entity."""
return self.coordinator.data[self.spa.id]["reminders"][self.reminder_id] return self.coordinator.data[self.spa.id][ATTR_REMINDERS][self.reminder_id]
@property @property
def is_on(self) -> bool: def is_on(self) -> bool:

View File

@ -25,5 +25,3 @@ ATTR_LIGHTS = "lights"
ATTR_PUMPS = "pumps" ATTR_PUMPS = "pumps"
ATTR_REMINDERS = "reminders" ATTR_REMINDERS = "reminders"
ATTR_STATUS = "status" ATTR_STATUS = "status"
CONF_CONFIG_ENTRY = "config_entry"

View File

@ -37,7 +37,6 @@ class SmartTubController:
self._hass = hass self._hass = hass
self._account = None self._account = None
self.spas = set() self.spas = set()
self._spa_devices = {}
self.coordinator = None self.coordinator = None
@ -110,14 +109,13 @@ class SmartTubController:
"""Register devices with the device registry for all spas.""" """Register devices with the device registry for all spas."""
device_registry = await dr.async_get_registry(self._hass) device_registry = await dr.async_get_registry(self._hass)
for spa in self.spas: for spa in self.spas:
device = device_registry.async_get_or_create( device_registry.async_get_or_create(
config_entry_id=entry.entry_id, config_entry_id=entry.entry_id,
identifiers={(DOMAIN, spa.id)}, identifiers={(DOMAIN, spa.id)},
manufacturer=spa.brand, manufacturer=spa.brand,
name=get_spa_name(spa), name=get_spa_name(spa),
model=spa.model, model=spa.model,
) )
self._spa_devices[spa.id] = device
async def login(self, email, password) -> Account: async def login(self, email, password) -> Account:
"""Retrieve the account corresponding to the specified email and password. """Retrieve the account corresponding to the specified email and password.

View File

@ -18,7 +18,7 @@ class SmartTubEntity(CoordinatorEntity):
"""Base class for SmartTub entities.""" """Base class for SmartTub entities."""
def __init__( def __init__(
self, coordinator: DataUpdateCoordinator, spa: smarttub.Spa, entity_type self, coordinator: DataUpdateCoordinator, spa: smarttub.Spa, entity_name
): ):
"""Initialize the entity. """Initialize the entity.
@ -28,12 +28,12 @@ class SmartTubEntity(CoordinatorEntity):
super().__init__(coordinator) super().__init__(coordinator)
self.spa = spa self.spa = spa
self._entity_type = entity_type self._entity_name = entity_name
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:
"""Return a unique id for the entity.""" """Return a unique id for the entity."""
return f"{self.spa.id}-{self._entity_type}" return f"{self.spa.id}-{self._entity_name}"
@property @property
def device_info(self) -> str: def device_info(self) -> str:
@ -48,7 +48,7 @@ class SmartTubEntity(CoordinatorEntity):
def name(self) -> str: def name(self) -> str:
"""Return the name of the entity.""" """Return the name of the entity."""
spa_name = get_spa_name(self.spa) spa_name = get_spa_name(self.spa)
return f"{spa_name} {self._entity_type}" return f"{spa_name} {self._entity_name}"
@property @property
def spa_status(self) -> smarttub.SpaState: def spa_status(self) -> smarttub.SpaState:

View File

@ -50,7 +50,7 @@ class SmartTubLight(SmartTubEntity, LightEntity):
@property @property
def light(self) -> SpaLight: def light(self) -> SpaLight:
"""Return the underlying SpaLight object for this entity.""" """Return the underlying SpaLight object for this entity."""
return self.coordinator.data[self.spa.id]["lights"][self.light_zone] return self.coordinator.data[self.spa.id][ATTR_LIGHTS][self.light_zone]
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:

View File

@ -39,7 +39,7 @@ class SmartTubPump(SmartTubEntity, SwitchEntity):
@property @property
def pump(self) -> SpaPump: def pump(self) -> SpaPump:
"""Return the underlying SpaPump object for this entity.""" """Return the underlying SpaPump object for this entity."""
return self.coordinator.data[self.spa.id]["pumps"][self.pump_id] return self.coordinator.data[self.spa.id][ATTR_PUMPS][self.pump_id]
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:

View File

@ -1,9 +1,5 @@
"""Test the SmartTub binary sensor platform.""" """Test the SmartTub binary sensor platform."""
from homeassistant.components.binary_sensor import ( from homeassistant.components.binary_sensor import STATE_OFF
DEVICE_CLASS_CONNECTIVITY,
STATE_OFF,
STATE_ON,
)
async def test_binary_sensors(spa, setup_entry, hass): async def test_binary_sensors(spa, setup_entry, hass):
@ -11,9 +7,8 @@ async def test_binary_sensors(spa, setup_entry, hass):
entity_id = f"binary_sensor.{spa.brand}_{spa.model}_online" entity_id = f"binary_sensor.{spa.brand}_{spa.model}_online"
state = hass.states.get(entity_id) state = hass.states.get(entity_id)
assert state is not None # disabled by default
assert state.state == STATE_ON assert state is None
assert state.attributes.get("device_class") == DEVICE_CLASS_CONNECTIVITY
async def test_reminders(spa, setup_entry, hass): async def test_reminders(spa, setup_entry, hass):