from pymodbus.client.sync import ModbusTcpClient class WebRelay: def __init__(self, n_relay=10): self.n_relay = n_relay self.relay_status = [False for i in range(self.n_relay)] self.client = None def __del__(self): if self.client: self.client.close() def apply_network_configs(self, nc_dict): self.ip_address = nc_dict["ipaddr"] self.port = nc_dict["port"] self.uid = nc_dict["uid"] def connect_slave(self): if not self.client: self.client = ModbusTcpClient(self.ip_address) self.client.connect() def disconnect_slave(self): if self.client: self.client.close() self.client = None def turn_relay_on(self, relay_id): ''' :param relay_id: id of relay to turn on :return: None ''' self.check_write_single_coil(relay_id, True) def turn_relay_off(self, relay_id): ''' :param relay_id: id of relay to turn off :return: None ''' self.check_write_single_coil(relay_id, False) def check_write_single_coil(self, relay_id, value): if self.client: self.client.write_coil(relay_id, value)