Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions kasa/smartbulb.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ class SmartBulb(SmartDevice):
"""

LIGHT_SERVICE = "smartlife.iot.smartbulb.lightingservice"
TIME_SERVICE = "smartlife.iot.common.timesetting"
SET_LIGHT_METHOD = "transition_light_state"

def __init__(self, host: str) -> None:
Expand Down Expand Up @@ -359,3 +360,12 @@ async def turn_on(self, *, transition: int = None, **kwargs) -> Dict:
def has_emeter(self) -> bool:
"""Return that the bulb has an emeter."""
return True

async def set_alias(self, alias: str) -> None:
"""Set the device name (alias).

Overridden to use a different module name.
"""
return await self._query_helper(
"smartlife.iot.common.system", "set_dev_alias", {"alias": alias}
)
6 changes: 4 additions & 2 deletions kasa/smartdevice.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@ class SmartDevice:

"""

TIME_SERVICE = "time"

def __init__(self, host: str) -> None:
"""Create a new SmartDevice instance.

Expand Down Expand Up @@ -352,7 +354,7 @@ async def set_alias(self, alias: str) -> None:
async def get_time(self) -> Optional[datetime]:
"""Return current time from the device, if available."""
try:
res = await self._query_helper("time", "get_time")
res = await self._query_helper(self.TIME_SERVICE, "get_time")
return datetime(
res["year"],
res["month"],
Expand All @@ -366,7 +368,7 @@ async def get_time(self) -> Optional[datetime]:

async def get_timezone(self) -> Dict:
"""Return timezone information."""
return await self._query_helper("time", "get_timezone")
return await self._query_helper(self.TIME_SERVICE, "get_timezone")

@property # type: ignore
@requires_update
Expand Down
2 changes: 1 addition & 1 deletion kasa/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def get_device_for_file(file):
return p


@pytest.fixture(params=SUPPORTED_DEVICES)
@pytest.fixture(params=SUPPORTED_DEVICES, scope="session")
def dev(request):
"""Device fixture.

Expand Down
41 changes: 25 additions & 16 deletions kasa/tests/newfakes.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,27 @@ def success(res):
return res


# plugs and bulbs use a different module for time information,
# so we define the contents here to avoid repeating ourselves
TIME_MODULE = {
"get_time": {
"year": 2017,
"month": 1,
"mday": 2,
"hour": 3,
"min": 4,
"sec": 5,
},
"get_timezone": {
"zone_str": "test",
"dst_offset": -1,
"index": 12,
"tz_str": "test2",
},
"set_timezone": None,
}


class FakeTransportProtocol(TPLinkSmartHomeProtocol):
def __init__(self, info):
self.discovery_data = info
Expand Down Expand Up @@ -393,23 +414,11 @@ def light_state(self, x, *args):
"set_light_state": transition_light_state,
"get_light_state": light_state,
},
"time": {
"get_time": {
"year": 2017,
"month": 1,
"mday": 2,
"hour": 3,
"min": 4,
"sec": 5,
},
"get_timezone": {
"zone_str": "test",
"dst_offset": -1,
"index": 12,
"tz_str": "test2",
},
"set_timezone": None,
"smartlife.iot.common.system": {
"set_dev_alias": set_alias,
},
"time": TIME_MODULE,
"smartlife.iot.common.timesetting": TIME_MODULE,
# HS220 brightness, different setter and getter
"smartlife.iot.dimmer": {
"set_brightness": set_hs220_brightness,
Expand Down