Source code for labgrid.driver.power.tinycontrol_tcpdu

""" A driver to control the Tinycontrol tcPDU
    Reference: https://docs.tinycontrol.pl/en/tcpdu/api/commands

    Example configuration to use port #3 on a device with URL 'http://172.17.180.53/'

    NetworkPowerPort:
      model: tinycontrol_tcpdu
      host: 'http://172.17.180.53'
      index: 3
"""

from urllib.parse import urljoin

import requests


[docs] def power_set(host, port, index, value): assert port is None index = int(index) value = 1 if value else 0 r = requests.get(urljoin(host, f"/api/v1/save/?out{index}={value}")) r.raise_for_status()
[docs] def power_get(host, port, index): assert port is None index = int(index) r = requests.get(urljoin(host, "/api/v1/read/status/?outValues")) r.raise_for_status() json_decoded = r.json() return json_decoded[f'out{index}'] == 1