44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
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)
|