webrelay-modbus/WebRelay.py

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)