def state(ctx, dev: SmartDevice): """Print out device state and versions.""" asyncio.run(dev.update()) click.echo(click.style(f"== {dev.alias} - {dev.model} ==", bold=True)) click.echo( click.style( "Device state: {}".format("ON" if dev.is_on else "OFF"), fg="green" if dev.is_on else "red", )) if dev.is_strip: for plug in dev.plugs: # type: ignore asyncio.run(plug.update()) is_on = plug.is_on alias = plug.alias click.echo( click.style( " * {} state: {}".format(alias, ("ON" if is_on else "OFF")), fg="green" if is_on else "red", )) click.echo(f"Host/IP: {dev.host}") for k, v in dev.state_information.items(): click.echo(f"{k}: {v}") click.echo(click.style("== Generic information ==", bold=True)) click.echo("Time: {}".format(asyncio.run(dev.get_time()))) click.echo("Hardware: {}".format(dev.hw_info["hw_ver"])) click.echo("Software: {}".format(dev.hw_info["sw_ver"])) click.echo(f"MAC (rssi): {dev.mac} ({dev.rssi})") click.echo(f"Location: {dev.location}") ctx.invoke(emeter)
def raw_command(dev: SmartDevice, module, command, parameters): """Run a raw command on the device.""" import ast if parameters is not None: parameters = ast.literal_eval(parameters) res = asyncio.run(dev._query_helper(module, command, parameters)) asyncio.run(dev.update()) click.echo(res)