modbusreader

class modbusreader.ModbusReader(host, port, unit, modbus_device_definition, float_low_byte_first=False)

Bases: object

ModbusReader is an automated modbus client which reads all discretes and registers of a modbus server over TCP

__init__(host, port, unit, modbus_device_definition, float_low_byte_first=False)

Initializes a new instance

Parameters:
  • host (str) – host of modbus server
  • port (int) – port of modbus server
  • unit (int) – unit id
  • modbus_device_definition (dict or str) – modbus device definition python dictionary or file name based on config https://github.com/smueller18/modbus-readermodbusreader/modbus_definition.config.json
  • float_low_byte_first (bool) – Because modbus float datatype consists of two integer bytes, there are 2 possibilities for the determination of the float value. Set to True if float interpretation order is Low Byte and then High Byte. Otherwise interpretation order is High Byte and then Low Byte.
Raises:
  • ValidationError – if the modbus device definition dictionary or file is invalid
  • SchemaError – if the modbus device definition config itself is invalid
__weakref__

list of weak references to the object (if defined)

static group_modbus_device_definition(modbus_device_definition)

Groups modbus addresses. This method is needed, if there are gaps of non existent modbus addresses.

Parameters:modbus_device_definition (dict) – modbus device definition dictionary
Returns:grouped modbus device definition dictionary
Type:dict
read_all_values()

read discretes and registers

Returns:discrete output values as follows: { sensor_id: sensor_value, … }
Type:dict
Raises:IOError – is raised if reading discretes or registers over TCP connection fails
read_discrete_inputs()

read discrete inputs

Returns:discrete output values as follows: { sensor_id: sensor_value, … }
Type:dict
Raises:IOError – is raised if reading discretes over TCP connection fails
read_discrete_outputs()

read discrete outputs

Returns:discrete output values as follows: { sensor_id: sensor_value, … }
Type:dict
Raises:IOError – is raised if reading discretes over TCP connection fails
read_discretes(discrete_type)

read either discrete inputs or outputs

Parameters:

discrete_type (str) – type of discrete. either ‘input’ or ‘output’

Returns:

discrete values: { sensor_id: sensor_value, … }

Type:

dict

Raises:
  • AttributeError – is raised if discrete_type doesn’t match required types
  • IOError – is raised if reading discretes over TCP connection fails
read_input_registers()

read input registers

Returns:discrete output values as follows: { sensor_id: sensor_value, … }
Type:dict
Raises:IOError – is raised if reading registers over TCP connection fails
read_output_registers()

read output registers

Returns:discrete output values as follows: { sensor_id: sensor_value, … }
Type:dict
Raises:IOError – is raised if reading registers over TCP connection fails
read_registers(register_type)

read either input or output registers

Parameters:

register_type (str) – type of register. either ‘input’ or ‘output’

Returns:

discrete output values as follows: { sensor_id: sensor_value, … }

Type:

dict

Raises:
  • AttributeError – If register_type doesn’t match required types
  • IOError – If reading registers over TCP connection fails