## --- "metric" configuration style --- ## Per metric definition ## ## Request optimization algorithm across metrics ## |---none -- Do not perform any optimization and just group requests ## | within metrics (default) ## |---max_insert -- Collate registers across all defined metrics and fill in ## holes to optimize the number of requests. # optimization = "none" ## Maximum number of registers the optimizer is allowed to insert between ## non-consecutive registers to save requests. ## This option is only used for the 'max_insert' optimization strategy and ## effectively denotes the hole size between registers to fill. # optimization_max_register_fill = 50 ## Define a metric produced by the requests to the device ## Multiple of those metrics can be defined. The referenced registers will ## be collated into requests send to the device [[inputs.modbus.metric]] ## ID of the modbus slave device to query ## If you need to query multiple slave-devices, create several "metric" definitions. slave_id = 1 ## Byte order of the data ## |---ABCD -- Big Endian (Motorola) ## |---DCBA -- Little Endian (Intel) ## |---BADC -- Big Endian with byte swap ## |---CDAB -- Little Endian with byte swap # byte_order = "ABCD" ## Name of the measurement # measurement = "modbus" ## Field definitions ## register - type of the modbus register, can be "coil", "discrete", ## "holding" or "input". Defaults to "holding". ## address - address of the register to query. For coil and discrete inputs this is the bit address. ## name - field name ## type *1 - type of the modbus field, can be ## BIT (single bit of a register) ## INT8L, INT8H, UINT8L, UINT8H (low and high byte variants) ## INT16, UINT16, INT32, UINT32, INT64, UINT64 and ## FLOAT16, FLOAT32, FLOAT64 (IEEE 754 binary representation) ## STRING (byte-sequence converted to string) ## length *1 - (optional) number of registers, ONLY valid for STRING type ## bit *1,2 - (optional) bit of the register, ONLY valid for BIT type ## scale *1,3 - (optional) factor to scale the variable with ## output *2,3 - (optional) type of resulting field, can be INT64, UINT64 or FLOAT64. Defaults to FLOAT64 if ## "scale" is provided and to the input "type" class otherwise (i.e. INT* -> INT64, etc). ## ## *1: These fields are ignored for both "coil" and "discrete"-input type of registers. ## *2: This field can only be "UINT16" or "BOOL" if specified for both "coil" ## and "discrete"-input type of registers. By default the fields are ## output as zero or one in UINT16 format unless "BOOL" is used. ## *3: These fields cannot be used with "STRING"-type fields. fields = [ { register="coil", address=0, name="door_open"}, { register="coil", address=1, name="status_ok"}, { register="holding", address=0, name="voltage", type="INT16" }, { address=1, name="current", type="INT32", scale=0.001 }, { address=5, name="energy", type="FLOAT32", scale=0.001 }, { address=7, name="frequency", type="UINT32", scale=0.1 }, { address=8, name="power_factor", type="INT64", scale=0.01 }, { address=9, name="firmware", type="STRING", length=8 }, ] ## Tags assigned to the metric # [inputs.modbus.metric.tags] # machine = "impresser" # location = "main building"