mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-22 19:23:34 +00:00
Add unit_getter for feature (#993)
Allow defining getter for unit, necessary to set the correct unit based on device responses.
This commit is contained in:
parent
472008e818
commit
ac1e81dc17
@ -99,7 +99,7 @@ class Feature:
|
||||
Choice = auto()
|
||||
Unknown = -1
|
||||
|
||||
# TODO: unsure if this is a great idea..
|
||||
# Aliases for easy access
|
||||
Sensor = Type.Sensor
|
||||
BinarySensor = Type.BinarySensor
|
||||
Switch = Type.Switch
|
||||
@ -139,6 +139,9 @@ class Feature:
|
||||
icon: str | None = None
|
||||
#: Unit, if applicable
|
||||
unit: str | None = None
|
||||
#: Attribute containing the name of the unit getter property.
|
||||
#: If set, this property will be used to set *unit*.
|
||||
unit_getter: str | None = None
|
||||
#: Category hint for downstreams
|
||||
category: Feature.Category = Category.Unset
|
||||
#: Type of the feature
|
||||
@ -177,6 +180,10 @@ class Feature:
|
||||
if self.choices_getter is not None:
|
||||
self.choices = getattr(container, self.choices_getter)
|
||||
|
||||
# Populate unit, if unit_getter is given
|
||||
if self.unit_getter is not None:
|
||||
self.unit = getattr(container, self.unit_getter)
|
||||
|
||||
# Set the category, if unset
|
||||
if self.category is Feature.Category.Unset:
|
||||
if self.attribute_setter:
|
||||
|
@ -28,6 +28,7 @@ class TemperatureSensor(SmartModule):
|
||||
attribute_getter="temperature",
|
||||
icon="mdi:thermometer",
|
||||
category=Feature.Category.Primary,
|
||||
unit_getter="temperature_unit",
|
||||
)
|
||||
)
|
||||
if "current_temp_exception" in device.sys_info:
|
||||
@ -55,7 +56,6 @@ class TemperatureSensor(SmartModule):
|
||||
choices=["celsius", "fahrenheit"],
|
||||
)
|
||||
)
|
||||
# TODO: use temperature_unit for feature creation
|
||||
|
||||
@property
|
||||
def temperature(self):
|
||||
@ -68,7 +68,7 @@ class TemperatureSensor(SmartModule):
|
||||
return self._device.sys_info.get("current_temp_exception", 0) != 0
|
||||
|
||||
@property
|
||||
def temperature_unit(self):
|
||||
def temperature_unit(self) -> Literal["celsius", "fahrenheit"]:
|
||||
"""Return current temperature unit."""
|
||||
return self._device.sys_info["temp_unit"]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user