UniFi - Additional consolidation for cleanliness sake (#35395)

* Some additional consolidation for cleanliness sake

* Remove unnecessary mac property
This commit is contained in:
Robert Svensson 2020-05-09 00:34:18 +02:00 committed by GitHub
parent 953adc105e
commit b62c7abc5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 46 deletions

View File

@ -136,12 +136,12 @@ class UniFiClientTracker(UniFiClient, ScannerEntity):
self.schedule_update = False self.schedule_update = False
self.cancel_scheduled_update = None self.cancel_scheduled_update = None
self._is_connected = False self._is_connected = False
if self.client.last_seen: if client.last_seen:
self._is_connected = ( self._is_connected = (
self.is_wired == self.client.is_wired self.is_wired == client.is_wired
and dt_util.utcnow() and dt_util.utcnow()
- dt_util.utc_from_timestamp(float(self.client.last_seen)) - dt_util.utc_from_timestamp(float(client.last_seen))
< self.controller.option_detection_time < controller.option_detection_time
) )
if self._is_connected: if self._is_connected:
self.schedule_update = True self.schedule_update = True
@ -260,25 +260,18 @@ class UniFiDeviceTracker(UniFiBase, ScannerEntity):
def __init__(self, device, controller): def __init__(self, device, controller):
"""Set up tracked device.""" """Set up tracked device."""
self.device = device super().__init__(device, controller)
super().__init__(controller)
self._is_connected = self.device.state == 1 self._is_connected = device.state == 1
self.cancel_scheduled_update = None self.cancel_scheduled_update = None
@property @property
def mac(self): def device(self):
"""Return MAC of device.""" """Wrap item."""
return self.device.mac return self._item
async def async_added_to_hass(self):
"""Subscribe to device events."""
await super().async_added_to_hass()
self.device.register_callback(self.async_update_callback)
async def async_will_remove_from_hass(self) -> None: async def async_will_remove_from_hass(self) -> None:
"""Disconnect device object when removed.""" """Disconnect device object when removed."""
self.device.remove_callback(self.async_update_callback)
if self.cancel_scheduled_update: if self.cancel_scheduled_update:
self.cancel_scheduled_update() self.cancel_scheduled_update()
await super().async_will_remove_from_hass() await super().async_will_remove_from_hass()

View File

@ -158,7 +158,7 @@ class UniFiPOEClientSwitch(UniFiClient, SwitchEntity, RestoreEntity):
super().__init__(client, controller) super().__init__(client, controller)
self.poe_mode = None self.poe_mode = None
if self.client.sw_port and self.port.poe_mode != "off": if client.sw_port and self.port.poe_mode != "off":
self.poe_mode = self.port.poe_mode self.poe_mode = self.port.poe_mode
async def async_added_to_hass(self): async def async_added_to_hass(self):
@ -252,7 +252,7 @@ class UniFiBlockClientSwitch(UniFiClient, SwitchEntity):
"""Set up block switch.""" """Set up block switch."""
super().__init__(client, controller) super().__init__(client, controller)
self._is_blocked = self.client.blocked self._is_blocked = client.blocked
@callback @callback
def async_update_callback(self) -> None: def async_update_callback(self) -> None:

View File

@ -14,25 +14,14 @@ class UniFiClient(UniFiBase):
def __init__(self, client, controller) -> None: def __init__(self, client, controller) -> None:
"""Set up client.""" """Set up client."""
self.client = client super().__init__(client, controller)
super().__init__(controller)
self._is_wired = self.client.mac not in controller.wireless_clients self._is_wired = client.mac not in controller.wireless_clients
@property @property
def mac(self): def client(self):
"""Return MAC of client.""" """Wrap item."""
return self.client.mac return self._item
async def async_added_to_hass(self) -> None:
"""Client entity created."""
await super().async_added_to_hass()
self.client.register_callback(self.async_update_callback)
async def async_will_remove_from_hass(self) -> None:
"""Disconnect client object when removed."""
self.client.remove_callback(self.async_update_callback)
await super().async_will_remove_from_hass()
@property @property
def is_wired(self): def is_wired(self):

View File

@ -15,33 +15,33 @@ class UniFiBase(Entity):
DOMAIN = "" DOMAIN = ""
TYPE = "" TYPE = ""
def __init__(self, controller) -> None: def __init__(self, item, controller) -> None:
"""Set up UniFi entity base. """Set up UniFi entity base.
Register mac to controller entities to cover disabled entities. Register mac to controller entities to cover disabled entities.
""" """
self._item = item
self.controller = controller self.controller = controller
self.controller.entities[self.DOMAIN][self.TYPE].add(self.mac) self.controller.entities[self.DOMAIN][self.TYPE].add(item.mac)
@property
def mac(self):
"""Return MAC of entity."""
raise NotImplementedError
async def async_added_to_hass(self) -> None: async def async_added_to_hass(self) -> None:
"""Entity created.""" """Entity created."""
LOGGER.debug("New %s entity %s (%s)", self.TYPE, self.entity_id, self.mac) LOGGER.debug("New %s entity %s (%s)", self.TYPE, self.entity_id, self._item.mac)
for signal, method in ( for signal, method in (
(self.controller.signal_reachable, self.async_update_callback), (self.controller.signal_reachable, self.async_update_callback),
(self.controller.signal_options_update, self.options_updated), (self.controller.signal_options_update, self.options_updated),
(self.controller.signal_remove, self.remove_item), (self.controller.signal_remove, self.remove_item),
): ):
self.async_on_remove(async_dispatcher_connect(self.hass, signal, method)) self.async_on_remove(async_dispatcher_connect(self.hass, signal, method))
self._item.register_callback(self.async_update_callback)
async def async_will_remove_from_hass(self) -> None: async def async_will_remove_from_hass(self) -> None:
"""Disconnect object when removed.""" """Disconnect object when removed."""
LOGGER.debug("Removing %s entity %s (%s)", self.TYPE, self.entity_id, self.mac) LOGGER.debug(
self.controller.entities[self.DOMAIN][self.TYPE].remove(self.mac) "Removing %s entity %s (%s)", self.TYPE, self.entity_id, self._item.mac
)
self._item.remove_callback(self.async_update_callback)
self.controller.entities[self.DOMAIN][self.TYPE].remove(self._item.mac)
async def async_remove(self): async def async_remove(self):
"""Clean up when removing entity. """Clean up when removing entity.
@ -72,7 +72,9 @@ class UniFiBase(Entity):
@callback @callback
def async_update_callback(self) -> None: def async_update_callback(self) -> None:
"""Update the entity's state.""" """Update the entity's state."""
LOGGER.debug("Updating %s entity %s (%s)", self.TYPE, self.entity_id, self.mac) LOGGER.debug(
"Updating %s entity %s (%s)", self.TYPE, self.entity_id, self._item.mac
)
self.async_write_ha_state() self.async_write_ha_state()
async def options_updated(self) -> None: async def options_updated(self) -> None:
@ -81,7 +83,7 @@ class UniFiBase(Entity):
async def remove_item(self, mac_addresses: set) -> None: async def remove_item(self, mac_addresses: set) -> None:
"""Remove entity if MAC is part of set.""" """Remove entity if MAC is part of set."""
if self.mac in mac_addresses: if self._item.mac in mac_addresses:
await self.async_remove() await self.async_remove()
@property @property