handle relais
This commit is contained in:
@ -22,7 +22,7 @@ class LocalException(Exception):
|
||||
def readInputRegister(client, addr):
|
||||
client.connect()
|
||||
try:
|
||||
res = client.read_input_registers(addr, 2)
|
||||
res = client.read_input_registers(addr, 2, slave=2)
|
||||
if (isinstance(res, ReadInputRegistersResponse)):
|
||||
v = BinaryPayloadDecoder.fromRegisters(res.registers, byteorder=Endian.Big, wordorder=Endian.Big).decode_32bit_float()
|
||||
return v
|
||||
@ -37,6 +37,16 @@ def readInputRegister(client, addr):
|
||||
finally:
|
||||
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()
|
||||
for h in l.handlers:
|
||||
l.removeHandler(h)
|
||||
@ -56,12 +66,22 @@ registers = [
|
||||
]
|
||||
|
||||
|
||||
cnt = 0
|
||||
coilState = True
|
||||
while True:
|
||||
try:
|
||||
for reg in registers:
|
||||
v = readInputRegister(client, reg['addr'])
|
||||
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)
|
||||
except Exception as e:
|
||||
logger.error(f"Caught exception: {str(e)}")
|
||||
|
Reference in New Issue
Block a user