2021-11-07 01:41:12 +00:00
|
|
|
"""Provides the current time and timezone information."""
|
2024-04-16 18:21:20 +00:00
|
|
|
|
2021-11-07 01:41:12 +00:00
|
|
|
from datetime import datetime
|
|
|
|
|
2024-02-21 15:52:55 +00:00
|
|
|
from ...exceptions import KasaException
|
2024-02-19 17:01:31 +00:00
|
|
|
from ..iotmodule import IotModule, merge
|
2021-11-07 01:41:12 +00:00
|
|
|
|
|
|
|
|
2024-02-04 15:20:08 +00:00
|
|
|
class Time(IotModule):
|
2021-11-07 01:41:12 +00:00
|
|
|
"""Implements the timezone settings."""
|
|
|
|
|
|
|
|
def query(self):
|
|
|
|
"""Request time and timezone."""
|
|
|
|
q = self.query_for_command("get_time")
|
|
|
|
|
|
|
|
merge(q, self.query_for_command("get_timezone"))
|
|
|
|
return q
|
|
|
|
|
|
|
|
@property
|
|
|
|
def time(self) -> datetime:
|
|
|
|
"""Return current device time."""
|
|
|
|
res = self.data["get_time"]
|
|
|
|
return datetime(
|
|
|
|
res["year"],
|
|
|
|
res["month"],
|
|
|
|
res["mday"],
|
|
|
|
res["hour"],
|
|
|
|
res["min"],
|
|
|
|
res["sec"],
|
|
|
|
)
|
|
|
|
|
|
|
|
@property
|
|
|
|
def timezone(self):
|
|
|
|
"""Return current timezone."""
|
|
|
|
res = self.data["get_timezone"]
|
|
|
|
return res
|
2022-01-29 19:36:08 +00:00
|
|
|
|
|
|
|
async def get_time(self):
|
|
|
|
"""Return current device time."""
|
|
|
|
try:
|
|
|
|
res = await self.call("get_time")
|
|
|
|
return datetime(
|
|
|
|
res["year"],
|
|
|
|
res["month"],
|
|
|
|
res["mday"],
|
|
|
|
res["hour"],
|
|
|
|
res["min"],
|
|
|
|
res["sec"],
|
|
|
|
)
|
2024-02-21 15:52:55 +00:00
|
|
|
except KasaException:
|
2022-01-29 19:36:08 +00:00
|
|
|
return None
|
|
|
|
|
|
|
|
async def get_timezone(self):
|
|
|
|
"""Request timezone information from the device."""
|
|
|
|
return await self.call("get_timezone")
|