mirror of
https://github.com/home-assistant/core
synced 2024-09-03 08:14:07 +02:00
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
"""Base class for Ring entity."""
|
|
from homeassistant.const import ATTR_ATTRIBUTION
|
|
from homeassistant.core import callback
|
|
|
|
from . import ATTRIBUTION, DOMAIN
|
|
|
|
|
|
class RingEntityMixin:
|
|
"""Base implementation for Ring device."""
|
|
|
|
def __init__(self, config_entry_id, device):
|
|
"""Initialize a sensor for Ring device."""
|
|
super().__init__()
|
|
self._config_entry_id = config_entry_id
|
|
self._device = device
|
|
|
|
async def async_added_to_hass(self):
|
|
"""Register callbacks."""
|
|
self.ring_objects["device_data"].async_add_listener(self._update_callback)
|
|
|
|
async def async_will_remove_from_hass(self):
|
|
"""Disconnect callbacks."""
|
|
self.ring_objects["device_data"].async_remove_listener(self._update_callback)
|
|
|
|
@callback
|
|
def _update_callback(self):
|
|
"""Call update method."""
|
|
self.async_write_ha_state()
|
|
|
|
@property
|
|
def ring_objects(self):
|
|
"""Return the Ring API objects."""
|
|
return self.hass.data[DOMAIN][self._config_entry_id]
|
|
|
|
@property
|
|
def should_poll(self):
|
|
"""Return False, updates are controlled via the hub."""
|
|
return False
|
|
|
|
@property
|
|
def device_state_attributes(self):
|
|
"""Return the state attributes."""
|
|
return {ATTR_ATTRIBUTION: ATTRIBUTION}
|
|
|
|
@property
|
|
def device_info(self):
|
|
"""Return device info."""
|
|
return {
|
|
"identifiers": {(DOMAIN, self._device.device_id)},
|
|
"name": self._device.name,
|
|
"model": self._device.model,
|
|
"manufacturer": "Ring",
|
|
}
|