|
1 | 1 | """UhooSensorEntity class"""
|
2 | 2 |
|
| 3 | +from pyuhoo.device import Device |
| 4 | + |
3 | 5 | from custom_components.uhoo import UhooDataUpdateCoordinator
|
4 | 6 | from homeassistant.components.sensor import SensorEntity
|
5 | 7 | from homeassistant.core import HomeAssistant
|
|
15 | 17 | ATTR_UNIQUE_ID,
|
16 | 18 | ATTR_UNIT,
|
17 | 19 | DOMAIN,
|
18 |
| - NAME, |
| 20 | + MANUFACTURER, |
| 21 | + MODEL, |
19 | 22 | SENSOR_TYPES,
|
20 | 23 | TEMP_CELSIUS,
|
21 | 24 | TEMP_FAHRENHEIT,
|
@@ -45,58 +48,59 @@ def __init__(
|
45 | 48 | self, kind: str, serial_number: str, coordinator: UhooDataUpdateCoordinator
|
46 | 49 | ):
|
47 | 50 | super().__init__(coordinator)
|
| 51 | + self._coordinator = coordinator |
48 | 52 | self._kind = kind
|
49 | 53 | self._serial_number = serial_number
|
50 | 54 |
|
51 | 55 | @property
|
52 | 56 | def name(self):
|
53 | 57 | """Return the name of the particular component."""
|
54 |
| - return ( |
55 |
| - f"uHoo {self._serial_number} {SENSOR_TYPES[self.sensor_type][ATTR_LABEL]}" |
56 |
| - ) |
| 58 | + device: Device = self.coordinator.data[self._serial_number] |
| 59 | + return f"uHoo {device.name} {SENSOR_TYPES[self._kind][ATTR_LABEL]}" |
57 | 60 |
|
58 | 61 | @property
|
59 | 62 | def unique_id(self):
|
60 | 63 | """Return a unique ID to use for this entity."""
|
61 |
| - return f"{self._serial_number}_{SENSOR_TYPES[self.sensor_type][ATTR_UNIQUE_ID]}" |
| 64 | + return f"{self._serial_number}_{SENSOR_TYPES[self._kind][ATTR_UNIQUE_ID]}" |
62 | 65 |
|
63 | 66 | @property
|
64 | 67 | def device_info(self):
|
65 | 68 | # we probably could pull the firmware version if we wanted
|
66 | 69 | # its in the api somewhere
|
| 70 | + device: Device = self.coordinator.data[self._serial_number] |
67 | 71 | return {
|
68 | 72 | "identifiers": {(DOMAIN, self._serial_number)},
|
69 |
| - "name": NAME, |
70 |
| - "model": NAME, |
71 |
| - "manufacturer": NAME, |
| 73 | + "name": device.name, |
| 74 | + "model": MODEL, |
| 75 | + "manufacturer": MANUFACTURER, |
72 | 76 | }
|
73 | 77 |
|
74 | 78 | @property
|
75 | 79 | def state(self):
|
76 | 80 | """State of the sensor."""
|
77 |
| - device = self.coordinator.data[self.serial_number] |
78 |
| - state = getattr(device, self.sensor_type) |
| 81 | + device: Device = self._coordinator.data[self._serial_number] |
| 82 | + state = getattr(device, self._kind) |
79 | 83 | if isinstance(state, list):
|
80 | 84 | state = state[0]
|
81 | 85 | return state
|
82 | 86 |
|
83 | 87 | @property
|
84 | 88 | def device_class(self):
|
85 | 89 | """Return the device class."""
|
86 |
| - return SENSOR_TYPES[self.sensor_type][ATTR_DEVICE_CLASS] |
| 90 | + return SENSOR_TYPES[self._kind][ATTR_DEVICE_CLASS] |
87 | 91 |
|
88 | 92 | @property
|
89 | 93 | def icon(self):
|
90 | 94 | """Return the icon."""
|
91 |
| - return SENSOR_TYPES[self.sensor_type][ATTR_ICON] |
| 95 | + return SENSOR_TYPES[self._kind][ATTR_ICON] |
92 | 96 |
|
93 | 97 | @property
|
94 | 98 | def unit_of_measurement(self):
|
95 | 99 | """Return unit of measurement."""
|
96 |
| - if self.sensor_type == API_TEMP: |
97 |
| - if self.coordinator.user_settings_temp == "f": |
| 100 | + if self._kind == API_TEMP: |
| 101 | + if self._coordinator.user_settings_temp == "f": |
98 | 102 | return TEMP_FAHRENHEIT
|
99 | 103 | else:
|
100 | 104 | return TEMP_CELSIUS
|
101 | 105 | else:
|
102 |
| - return SENSOR_TYPES[self.sensor_type][ATTR_UNIT] |
| 106 | + return SENSOR_TYPES[self._kind][ATTR_UNIT] |
0 commit comments