diff --git a/pyHS100/cli.py b/pyHS100/cli.py index 0705ab7c..3fd766d3 100755 --- a/pyHS100/cli.py +++ b/pyHS100/cli.py @@ -6,13 +6,14 @@ from pprint import pformat as pf import click +from pyHS100 import Discover, SmartBulb, SmartDevice, SmartStrip + +from pyHS100 import SmartPlug # noqa: E402; noqa: E402 + if sys.version_info < (3, 6): print("To use this script you need Python 3.6 or newer! got %s" % sys.version_info) sys.exit(1) -from pyHS100 import SmartPlug # noqa: E402 -from pyHS100 import Discover, SmartBulb, SmartDevice, SmartStrip - pass_dev = click.make_pass_decorator(SmartDevice) @@ -183,7 +184,7 @@ def state(ctx, dev: SmartDevice): ) ) if dev.is_strip: - for plug in range(dev.plugs): + for plug in dev.plugs: # type: ignore is_on = plug.sync.get_is_on() alias = plug.sync.get_alias() click.echo( diff --git a/pyHS100/smartbulb.py b/pyHS100/smartbulb.py index 097e4f57..5dd02071 100644 --- a/pyHS100/smartbulb.py +++ b/pyHS100/smartbulb.py @@ -46,16 +46,16 @@ class SmartBulb(SmartDevice): if p.sync.is_variable_color_temp(): # set the color temperature in Kelvin p.sync.set_color_temp(3000) - + # get the current color temperature print(p.sync.get_color_temp()) # check whether the bulb is dimmable if p.sync.is_dimmable(): - + # set the bulb to 50% brightness p.sync.set_brightness(50) - + # check the current brightness print(p.sync.get_brightness()) ``` @@ -146,7 +146,6 @@ class SmartBulb(SmartDevice): :return: hue, saturation and value (degrees, %, %) :rtype: tuple """ - if not await self.is_color(): raise SmartDeviceException("Bulb does not support color.") @@ -269,7 +268,7 @@ class SmartBulb(SmartDevice): info: Dict[str, Any] = { "Brightness": await self.get_brightness(), "Is dimmable": await self.is_dimmable(), - } # type: Dict[str, Any] + } if await self.is_variable_color_temp(): info["Color temperature"] = await self.get_color_temp() info["Valid temperature range"] = await self.get_valid_temperature_range() diff --git a/pyHS100/smartdevice.py b/pyHS100/smartdevice.py index 79545434..8c3c1d57 100755 --- a/pyHS100/smartdevice.py +++ b/pyHS100/smartdevice.py @@ -480,7 +480,7 @@ class SmartDevice: return {entry["month"]: entry[key] for entry in response} - async def erase_emeter_stats(self) -> bool: + async def erase_emeter_stats(self): """Erase energy meter statistics. :return: True if statistics were deleted @@ -491,7 +491,7 @@ class SmartDevice: await self._query_helper(self.emeter_type, "erase_emeter_stat", None) - async def current_consumption(self) -> Optional[float]: + async def current_consumption(self) -> float: """Get the current power consumption in Watt. :return: the current power consumption in Watts. @@ -588,6 +588,7 @@ class SmartDevice: class SyncSmartDevice: """A synchronous SmartDevice speaker class. + This has the same methods as `SyncSmartDevice`, however, it wraps all async methods and call them in a blocking way. diff --git a/pyHS100/smartstrip.py b/pyHS100/smartstrip.py index ee7d8aeb..17e7d52b 100755 --- a/pyHS100/smartstrip.py +++ b/pyHS100/smartstrip.py @@ -98,7 +98,7 @@ class SmartStrip(SmartPlug): :return: Strip information dict, keys in user-presentable form. :rtype: dict """ - state: Dict[str, Any] = {"LED state": self.led} + state: Dict[str, Any] = {"LED state": await self.get_led()} for plug in self.plugs: if await plug.is_on(): state["Plug %s on since" % str(plug)] = await plug.get_on_since()