import easymodbus.modbusClient 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: if self.client.is_connected(): 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 = easymodbus.modbusClient.ModbusClient(self.ip_address, self.port) self.client.unitidentifier = self.uid self.client.connect() else: if not self.client.is_connected(): self.client = None self.connect_slave() def disconnect_slave(self): if self.client: self.client.close() self.client = None ''' def WriteSingleCoil(self, startingAddress, value) Write single Coil to Server device (Function code 5) startingAddress: Coil to be written value: Coil Value to be written def WriteMultipleCoils(self, startingAddress, values) Write multiple coils to Server device (Function code 15) startingAddress : First coil to be written values: Coil Values [0..quantity-1] to be written ''' 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: if self.client.is_connected(): self.client.write_single_coil(relay_id, value)