Skip to content

Commit 8e4ddd1

Browse files
committed
Remove battery changes
1 parent 96ea617 commit 8e4ddd1

File tree

2 files changed

+9
-110
lines changed

2 files changed

+9
-110
lines changed

kasa/smartcam/modules/battery.py

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -93,45 +93,21 @@ def battery_percent(self) -> int | None:
9393
return self._device.sys_info.get("battery_percent")
9494

9595
@property
96-
def battery_low(self) -> bool | None:
96+
def battery_low(self) -> bool:
9797
"""Return True if battery is low."""
98-
return self._device.sys_info.get("low_battery")
98+
return self._device.sys_info.get["low_battery"]
9999

100100
@property
101-
def battery_temperature(self) -> float | int | None:
102-
"""Return battery temperature in C, if available."""
103-
bt = self._device.sys_info.get("battery_temperature")
104-
if bt is not None:
105-
return bt
106-
return 0
101+
def battery_temperature(self) -> bool:
102+
"""Return battery voltage in C."""
103+
return self._device.sys_info["battery_temperature"]
107104

108105
@property
109-
def battery_voltage(self) -> float | None:
106+
def battery_voltage(self) -> bool:
110107
"""Return battery voltage in V."""
111-
bv = self._device.sys_info.get("battery_voltage")
112-
if bv is None or bv == "NO":
113-
bp = self._device.sys_info.get("battery_percent")
114-
if bp is None:
115-
return None
116-
try:
117-
return 3.0 + (float(bp) / 100.0) * 1.2
118-
except Exception:
119-
return None
120-
try:
121-
return bv / 1_000
122-
except Exception:
123-
try:
124-
return int(bv) / 1_000
125-
except Exception:
126-
return None
108+
return self._device.sys_info["battery_voltage"] / 1_000
127109

128110
@property
129111
def battery_charging(self) -> bool:
130112
"""Return True if battery is charging."""
131-
bc = self._device.sys_info.get("battery_charging")
132-
if bc is not None:
133-
if isinstance(bc, bool):
134-
return bc
135-
return str(bc).upper() != "NO"
136-
bv = self._device.sys_info.get("battery_voltage")
137-
return bv is not None and bv != "NO"
113+
return self._device.sys_info["battery_voltage"] != "NO"

tests/smartcam/modules/test_battery.py

Lines changed: 1 addition & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
from __future__ import annotations
44

5-
import pytest
6-
75
from kasa import Device
86
from kasa.smartcam.smartcammodule import SmartCamModule
97

@@ -32,79 +30,4 @@ async def test_battery(dev: Device):
3230
for feat_id in feat_ids:
3331
feat = dev.features.get(feat_id)
3432
assert feat
35-
assert feat.value is not None
36-
37-
38-
@battery_smartcam
39-
async def test_battery_branches(dev: Device):
40-
"""Exercise various battery property branches not covered by fixtures."""
41-
battery = dev.modules.get(SmartCamModule.SmartCamBattery)
42-
assert battery
43-
44-
# Keep original sys_info and restore after test
45-
orig_sys = dict(battery._device.sys_info)
46-
try:
47-
# helper to replace the dict contents without rebinding the property
48-
def set_sys(d: dict):
49-
battery._device.sys_info.clear()
50-
battery._device.sys_info.update(d)
51-
52-
# battery_temperature: reported
53-
set_sys({"battery_temperature": 12})
54-
assert battery.battery_temperature == 12
55-
56-
# battery_temperature: not reported -> fallback 0
57-
set_sys({"battery_temperature": None})
58-
assert battery.battery_temperature == 0
59-
60-
# battery_voltage: not available and no percent -> None
61-
set_sys({"battery_voltage": None, "battery_percent": None})
62-
assert battery.battery_voltage is None
63-
64-
# battery_voltage: derive from battery_percent (50%)
65-
set_sys({"battery_voltage": None, "battery_percent": 50})
66-
assert battery.battery_voltage == pytest.approx(3.0 + (50.0 / 100.0) * 1.2)
67-
68-
# battery_voltage: explicit NO and percent present
69-
set_sys({"battery_voltage": "NO", "battery_percent": 75})
70-
assert battery.battery_voltage == pytest.approx(3.0 + (75.0 / 100.0) * 1.2)
71-
72-
# battery_voltage: numeric millivolts
73-
set_sys({"battery_voltage": 4022})
74-
assert battery.battery_voltage == pytest.approx(4.022)
75-
76-
# battery_voltage: string numeric
77-
set_sys({"battery_voltage": "4022"})
78-
assert battery.battery_voltage == pytest.approx(4.022)
79-
80-
# battery_voltage: unparseable string -> None
81-
set_sys({"battery_voltage": "N/A", "battery_percent": None})
82-
assert battery.battery_voltage is None
83-
84-
# battery_charging: explicit boolean
85-
set_sys({"battery_charging": True})
86-
assert battery.battery_charging is True
87-
set_sys({"battery_charging": False})
88-
assert battery.battery_charging is False
89-
90-
# battery_charging: explicit strings
91-
set_sys({"battery_charging": "NO"})
92-
assert battery.battery_charging is False
93-
set_sys({"battery_charging": "YES"})
94-
assert battery.battery_charging is True
95-
96-
# battery_charging: fallback to voltage presence
97-
set_sys({"battery_charging": None, "battery_voltage": None})
98-
assert battery.battery_charging is False
99-
set_sys({"battery_charging": None, "battery_voltage": "NO"})
100-
assert battery.battery_charging is False
101-
set_sys({"battery_charging": None, "battery_voltage": 4000})
102-
assert battery.battery_charging is True
103-
104-
# battery_percent and battery_low simple getters
105-
set_sys({"battery_percent": 42, "low_battery": True})
106-
assert battery.battery_percent == 42
107-
assert battery.battery_low is True
108-
finally:
109-
battery._device.sys_info.clear()
110-
battery._device.sys_info.update(orig_sys)
33+
assert feat.value is not None

0 commit comments

Comments
 (0)