FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Add support for feature units · python-kasa/python-kasa@877dfb6 · GitHub

Repository navigation

Commit 877dfb6

Browse files
committed
Add support for feature units
1 parent 203bd79 commit 877dfb6

3 files changed

Lines changed: 17 additions & 32 deletions

File tree

‎kasa/cli.py‎

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -614,12 +614,8 @@ async def state(ctx, dev: Device):
614614

615615
echo("\n\t[bold]== Device-specific information == [/bold]")
616616
for id_, feature in dev.features.items():
617-
echo(f"\t{feature.name} ({id_}): {feature.value}")
618-
619-
if dev.has_emeter:
620-
echo("\n\t[bold]== Current State ==[/bold]")
621-
emeter_status = dev.emeter_realtime
622-
echo(f"\t{emeter_status}")
617+
unit = f" {feature.unit}" if feature.unit else ""
618+
echo(f"\t{feature.name} ({id_}): {feature.value}{unit}")
623619

624620
echo("\n\t[bold]== Modules ==[/bold]")
625621
for module in dev.modules.values():

‎kasa/feature.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class Feature:
3636
container: Any = None
3737
#: Icon suggestion
3838
icon: str | None = None
39+
#: Unit, if applicable
40+
unit: Optional[str] = None
3941
#: Type of the feature
4042
type: FeatureType = FeatureType.Sensor
4143

‎kasa/smart/modules/energymodule.py‎

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from typing import TYPE_CHECKING
66

7-
from ...emeterstatus import EmeterStatus
87
from ...feature import Feature
98
from ..smartmodule import SmartModule
109

@@ -25,24 +24,27 @@ def __init__(self, device: SmartDevice, module: str):
2524
name="Current consumption",
2625
attribute_getter="current_power",
2726
container=self,
27+
unit="W",
2828
)
29-
) # W or mW?
29+
)
3030
self._add_feature(
3131
Feature(
3232
device,
3333
name="Today's consumption",
3434
attribute_getter="emeter_today",
3535
container=self,
36+
unit="Wh",
3637
)
37-
) # Wh or kWh?
38+
)
3839
self._add_feature(
3940
Feature(
4041
device,
4142
name="This month's consumption",
4243
attribute_getter="emeter_this_month",
4344
container=self,
45+
unit="Wh",
4446
)
45-
) # Wh or kWH?
47+
)
4648

4749
def query(self) -> dict:
4850
"""Query to execute during the update cycle."""
@@ -54,9 +56,11 @@ def query(self) -> dict:
5456
return req
5557

5658
@property
57-
def current_power(self):
58-
"""Current power."""
59-
return self.emeter_realtime.power
59+
def current_power(self) -> Optional[float]:
60+
"""Current power in watts."""
61+
if power := self.energy.get("current_power"):
62+
return power / 1_000
63+
return None
6064

6165
@property
6266
def energy(self):
@@ -65,29 +69,12 @@ def energy(self):
6569
return en
6670
return self.data
6771

68-
@property
69-
def emeter_realtime(self):
70-
"""Get the emeter status."""
71-
# TODO: Perhaps we should get rid of emeterstatus altogether for smartdevices
72-
return EmeterStatus(
73-
{
74-
"power_mw": self.energy.get("current_power"),
75-
"total": self._convert_energy_data(
76-
self.energy.get("today_energy"), 1 / 1000
77-
),
78-
}
79-
)
80-
8172
@property
8273
def emeter_this_month(self) -> float | None:
8374
"""Get the emeter value for this month."""
84-
return self._convert_energy_data(self.energy.get("month_energy"), 1 / 1000)
75+
return self.energy.get("month_energy")
8576

8677
@property
8778
def emeter_today(self) -> float | None:
8879
"""Get the emeter value for today."""
89-
return self._convert_energy_data(self.energy.get("today_energy"), 1 / 1000)
90-
91-
def _convert_energy_data(self, data, scale) -> float | None:
92-
"""Return adjusted emeter information."""
93-
return data if not data else data * scale
80+
return self.energy.get("today_energy")

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL