def readModbusData(): logging.basicConfig() log = logging.getLogger() log.setLevel(logging.DEBUG) client = ModbusClient(method='rtu', port='/dev/ttyUSB0', baudrate=38400, timeout=1, parity='N', stopbits=2) print(client.connect()) client.debug_enabled() log.debug("Read holding registers") response = client.read_holding_registers(0, 1, unit=0x1B) response1 = client.read_holding_registers(0, 1, unit=0x1B) print(response) #This returns the response for whole length of registers print(response1) # print(response.getRegister(0)); #This returns value of only one client.close()
obj = json.loads(data) for met in range(len(obj["meters"])): client = ModbusClient(method = obj["meters"][met]["method"], port = obj["meters"][met]['portSlave'], timeout=1 , stopbits=2, bytesize=8, parity='N', baudrate=38400) if client.connect() == True: print("Connected meter {} with address: {}".format(obj["meters"][met]["nameMeter"], obj["meters"][met]["slaveID"])) else: print("Failed connection") exit() print("_______________________________________________________") print("_______________________________________________________") client.debug_enabled() #enable hardware handshake IMPORTANT #client.socket.rtscts=True #print(result.raw()) for i in range(len(obj["meters"][met]["registers"])): print("Register Adrress: {}".format(obj["meters"][met]["registers"][i]["address"])) result = client.read_input_registers(obj["meters"][met]["registers"][i]["address"], 2, unit = obj["meters"][met]["slaveID"]) #print(result) #response regs #print(result.registers) #print values of register address reg_list = result.registers #list: value of registers #PROGRAM: DECODING