コード例 #1
0
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)
コード例 #2
0
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)