#!/usr/bin/env python3 import minimalmodbus addr = 1 instrument = minimalmodbus.Instrument('/dev/ttyUSB0', addr) # port name, slave address (in decimal) instrument.serial.baudrate = 9600 # Baud instrument.serial.bytesize = 8 instrument.serial.parity = minimalmodbus.serial.PARITY_NONE instrument.serial.stopbits = 1 instrument.serial.timeout = 1 # seconds instrument.mode = minimalmodbus.MODE_RTU # rtu or ascii mode registers = [ 0, 6, 12, 18, 24, 30, 70, 72, 74, 76, 78, 84, 86, 88, 90, 92, 94, 258, 264, 342, 344] names = ["V","I","P","S", "Q","PF","f","IAE","EAE", "IRE", "ERE","TSP","MSP","ISP","MIP","ESP","MEP","ID","MID","TAE", "TRE"] units = ["V","A","W","VA","var", "","Hz","kWh","kWh","kvarh","kvarh", "W", "W", "W", "W", "W", "W", "A", "A","kWh","kvarh"] info = [ "(V for Voltage in volt)", "(I for Current in ampere)", "(P for Active Power in watt)", "(S for Apparent power in volt-ampere)", "(Q for Reactive power in volt-ampere reactive)", "(PF for Power Factor)", "(f for Frequency in hertz)", "(IAE for Import active energy in kilowatt-hour)", "(EAE for Export active energy in kilowatt-hour)", "(IRE for Import reactive energy in kilovolt-ampere reactive hours)", "(ERE for Export reactive energy in kilovolt-ampere reactive hours)", "(TSP for Total system power demand in watt)", "(MSP for Maximum total system power demand in watt)", "(ISP for Import system power demand in watt)", "(MIP for Maximum import system power demand in watt)", "(ESP for Export system power demand in watt)", "(MEP for MaximumExport system power demand in watt)", "(ID for current demand in ampere)", "(MID for Maximum current demand in ampere)", "(TAE for Total active energy in kilowatt-hour)", "(TRE for Total reactive energy in kilovolt-ampere reactive hours)", ] print ("=== General info about address", addr, "===") print (instrument) print ("=== The registers for address", addr, "===") for i in range(len(registers)): value = instrument.read_float(registers[i], 4, 2) print (str(registers[i]).rjust(3), str(value).rjust(20), units[i].ljust(5), info[i]) print ("")