mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-04-27 00:56:23 +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()
|
Choice = auto()
|
||||||
Unknown = -1
|
Unknown = -1
|
||||||
|
|
||||||
# TODO: unsure if this is a great idea..
|
# Aliases for easy access
|
||||||
Sensor = Type.Sensor
|
Sensor = Type.Sensor
|
||||||
BinarySensor = Type.BinarySensor
|
BinarySensor = Type.BinarySensor
|
||||||
Switch = Type.Switch
|
Switch = Type.Switch
|
||||||
@ -139,6 +139,9 @@ class Feature:
|
|||||||
icon: str | None = None
|
icon: str | None = None
|
||||||
#: Unit, if applicable
|
#: Unit, if applicable
|
||||||
unit: str | None = None
|
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 hint for downstreams
|
||||||
category: Feature.Category = Category.Unset
|
category: Feature.Category = Category.Unset
|
||||||
#: Type of the feature
|
#: Type of the feature
|
||||||
@ -177,6 +180,10 @@ class Feature:
|
|||||||
if self.choices_getter is not None:
|
if self.choices_getter is not None:
|
||||||
self.choices = getattr(container, self.choices_getter)
|
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
|
# Set the category, if unset
|
||||||
if self.category is Feature.Category.Unset:
|
if self.category is Feature.Category.Unset:
|
||||||
if self.attribute_setter:
|
if self.attribute_setter:
|
||||||
|
@ -28,6 +28,7 @@ class TemperatureSensor(SmartModule):
|
|||||||
attribute_getter="temperature",
|
attribute_getter="temperature",
|
||||||
icon="mdi:thermometer",
|
icon="mdi:thermometer",
|
||||||
category=Feature.Category.Primary,
|
category=Feature.Category.Primary,
|
||||||
|
unit_getter="temperature_unit",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
if "current_temp_exception" in device.sys_info:
|
if "current_temp_exception" in device.sys_info:
|
||||||
@ -55,7 +56,6 @@ class TemperatureSensor(SmartModule):
|
|||||||
choices=["celsius", "fahrenheit"],
|
choices=["celsius", "fahrenheit"],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# TODO: use temperature_unit for feature creation
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def temperature(self):
|
def temperature(self):
|
||||||
@ -68,7 +68,7 @@ class TemperatureSensor(SmartModule):
|
|||||||
return self._device.sys_info.get("current_temp_exception", 0) != 0
|
return self._device.sys_info.get("current_temp_exception", 0) != 0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def temperature_unit(self):
|
def temperature_unit(self) -> Literal["celsius", "fahrenheit"]:
|
||||||
"""Return current temperature unit."""
|
"""Return current temperature unit."""
|
||||||
return self._device.sys_info["temp_unit"]
|
return self._device.sys_info["temp_unit"]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user