This repository has been archived by the owner on Oct 10, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathentity.py
74 lines (56 loc) · 1.7 KB
/
entity.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
"""Recteq entity helper."""
import logging
from .device import RecteqDevice
from homeassistant.const import TEMP_CELSIUS, TEMP_FAHRENHEIT
from homeassistant.core import callback
from homeassistant.helpers import entity
_LOGGER = logging.getLogger(__name__)
class RecteqEntity(entity.Entity):
def __init__(
self,
device: RecteqDevice,
dps: str,
name: str,
unit: str,
value,
device_class: str,
default_enabled: bool
) -> None:
self._device = device
self._dps = dps
self._name = f"{device.name} {name}"
self._unit = unit
self._value = value
self._device_class = device_class
self._default_enabled = default_enabled
@property
def name(self):
return self._name
@property
def entity_registry_enabled_default(self) -> bool:
return self._default_enabled
@property
def attribute_value(self):
value = self._device.status(self._dps)
if value is None:
return None
return self._value(value)
@property
def unit_of_measurement(self):
return self._unit
@property
def device_class(self):
return self._device_class
@property
def available(self):
return self._device.available
@property
def should_poll(self):
return False
async def async_added_to_hass(self):
self.async_on_remove(self._device.async_add_listener(self._update_callback))
async def async_update(self):
await self._device.async_request_refresh()
@callback
def _update_callback(self):
self.async_write_ha_state()