Source code for labgrid.driver.power.tplink

""" Tested with TP Link KP303, and should be compatible with any strip supported by kasa """

import asyncio
from kasa.iot import IotStrip


async def _power_set(host, port, index, value):
    """We embed the coroutines in an `async` function to minimise calls to `asyncio.run`"""
    assert port is None
    index = int(index)
    strip = IotStrip(host)
    await strip.update()
    assert (
        len(strip.children) > index
    ), "Trying to access non-existant plug socket on strip"
    if value is True:
        await strip.children[index].turn_on()
    elif value is False:
        await strip.children[index].turn_off()


[docs] def power_set(host, port, index, value): asyncio.run(_power_set(host, port, index, value))
[docs] def power_get(host, port, index): assert port is None index = int(index) strip = IotStrip(host) asyncio.run(strip.update()) assert ( len(strip.children) > index ), "Trying to access non-existant plug socket on strip" return strip.children[index].is_on