handle relais

This commit is contained in:
2022-11-17 18:27:38 +01:00
parent 306a93b6f2
commit 23dd287403

View File

@ -22,7 +22,7 @@ class LocalException(Exception):
def readInputRegister(client, addr): def readInputRegister(client, addr):
client.connect() client.connect()
try: try:
res = client.read_input_registers(addr, 2) res = client.read_input_registers(addr, 2, slave=2)
if (isinstance(res, ReadInputRegistersResponse)): if (isinstance(res, ReadInputRegistersResponse)):
v = BinaryPayloadDecoder.fromRegisters(res.registers, byteorder=Endian.Big, wordorder=Endian.Big).decode_32bit_float() v = BinaryPayloadDecoder.fromRegisters(res.registers, byteorder=Endian.Big, wordorder=Endian.Big).decode_32bit_float()
return v return v
@ -37,6 +37,16 @@ def readInputRegister(client, addr):
finally: finally:
client.close() client.close()
def writeCoil(client, addr, value):
client.connect()
try:
res = client.write_coil(addr, value, slave=1)
logger.debug(f"write coil result {res}")
return value
finally:
client.close()
l = logging.getLogger() l = logging.getLogger()
for h in l.handlers: for h in l.handlers:
l.removeHandler(h) l.removeHandler(h)
@ -56,12 +66,22 @@ registers = [
] ]
cnt = 0
coilState = True
while True: while True:
try: try:
for reg in registers: for reg in registers:
v = readInputRegister(client, reg['addr']) v = readInputRegister(client, reg['addr'])
logger.info(f"{reg['name']}: {v} {reg['unit']}") logger.info(f"{reg['name']}: {v} {reg['unit']}")
cnt += 1
if ((cnt % 2) == 0):
coilState = not coilState
logger.info(f"Write {coilState} to coil")
writeCoil(client, 0, coilState)
sleep(5) sleep(5)
except Exception as e: except Exception as e:
logger.error(f"Caught exception: {str(e)}") logger.error(f"Caught exception: {str(e)}")