Source code for labgrid.driver.power.eth008

"""
This driver implements a power port for the robot electronics 8 relay
outputs board.

Driver has been tested with:
* ETH008 - 8 relay outputs
"""

import requests
from ..exception import ExecutionError

PORT = 80

[docs] def power_set(host, port, index, value): index = int(index) assert 1 <= index <= 8 # access the web interface... value_str = "A" if value else "I" response = requests.get( f"http://{host}:{port}/io.cgi?DO{value_str}{index}" ) response.raise_for_status() # Check, that the port is in the desired state state = get_state(response, index) if state != value: raise ExecutionError(f"failed to set port {index} to status {value}")
[docs] def power_get(host, port, index): index = int(index) assert 1 <= index <= 8 # get the contents of the main page response = requests.get(f"http://{host}:{port}/io.cgi?relay") response.raise_for_status() state = get_state(response, index) return state
[docs] def get_state(request, index): value = request.text.split()[1][index-1] return bool(int(value))