Use entity class attributes for Bloomsky (#53030)

Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
This commit is contained in:
Robert Hillis 2021-07-15 09:29:12 -04:00 committed by GitHub
parent 00741d4273
commit 35cab74be6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 65 deletions

View File

@ -44,32 +44,14 @@ class BloomSkySensor(BinarySensorEntity):
self._bloomsky = bs
self._device_id = device["DeviceID"]
self._sensor_name = sensor_name
self._name = f"{device['DeviceName']} {sensor_name}"
self._state = None
self._unique_id = f"{self._device_id}-{self._sensor_name}"
@property
def unique_id(self):
"""Return a unique ID."""
return self._unique_id
@property
def name(self):
"""Return the name of the BloomSky device and this sensor."""
return self._name
@property
def device_class(self):
"""Return the class of this sensor, from DEVICE_CLASSES."""
return SENSOR_TYPES.get(self._sensor_name)
@property
def is_on(self):
"""Return true if binary sensor is on."""
return self._state
self._attr_name = f"{device['DeviceName']} {sensor_name}"
self._attr_unique_id = f"{self._device_id}-{sensor_name}"
self._attr_device_class = SENSOR_TYPES.get(sensor_name)
def update(self):
"""Request an update from the BloomSky API."""
self._bloomsky.refresh_devices()
self._state = self._bloomsky.devices[self._device_id]["Data"][self._sensor_name]
self._attr_is_on = self._bloomsky.devices[self._device_id]["Data"][
self._sensor_name
]

View File

@ -25,7 +25,7 @@ class BloomSkyCamera(Camera):
def __init__(self, bs, device):
"""Initialize access to the BloomSky camera images."""
super().__init__()
self._name = device["DeviceName"]
self._attr_name = device["DeviceName"]
self._id = device["DeviceID"]
self._bloomsky = bs
self._url = ""
@ -35,6 +35,7 @@ class BloomSkyCamera(Camera):
# to download the same image over and over.
self._last_image = ""
self._logger = logging.getLogger(__name__)
self._attr_unique_id = self._id
def camera_image(self):
"""Update the camera's image if it has changed."""
@ -51,13 +52,3 @@ class BloomSkyCamera(Camera):
return None
return self._last_image
@property
def unique_id(self):
"""Return a unique ID."""
return self._id
@property
def name(self):
"""Return the name of this BloomSky device."""
return self._name

View File

@ -83,31 +83,11 @@ class BloomSkySensor(SensorEntity):
self._bloomsky = bs
self._device_id = device["DeviceID"]
self._sensor_name = sensor_name
self._name = f"{device['DeviceName']} {sensor_name}"
self._state = None
self._unique_id = f"{self._device_id}-{self._sensor_name}"
@property
def unique_id(self):
"""Return a unique ID."""
return self._unique_id
@property
def name(self):
"""Return the name of the BloomSky device and this sensor."""
return self._name
@property
def state(self):
"""Return the current state, eg. value, of this sensor."""
return self._state
@property
def unit_of_measurement(self):
"""Return the sensor units."""
self._attr_name = f"{device['DeviceName']} {sensor_name}"
self._attr_unique_id = f"{self._device_id}-{sensor_name}"
self._attr_unit_of_measurement = SENSOR_UNITS_IMPERIAL.get(sensor_name, None)
if self._bloomsky.is_metric:
return SENSOR_UNITS_METRIC.get(self._sensor_name, None)
return SENSOR_UNITS_IMPERIAL.get(self._sensor_name, None)
self._attr_unit_of_measurement = SENSOR_UNITS_METRIC.get(sensor_name, None)
@property
def device_class(self):
@ -117,10 +97,7 @@ class BloomSkySensor(SensorEntity):
def update(self):
"""Request an update from the BloomSky API."""
self._bloomsky.refresh_devices()
state = self._bloomsky.devices[self._device_id]["Data"][self._sensor_name]
if self._sensor_name in FORMAT_NUMBERS:
self._state = f"{state:.2f}"
else:
self._state = state
self._attr_state = (
f"{state:.2f}" if self._sensor_name in FORMAT_NUMBERS else state
)