Modbus JSON profile reference #
Global profile fields #
manufacturer
#
Manufacturer name. string, required
Example: Embedded Systems
description
#
Device description or model name. string, required
Example: Universal 16+4 I/O module
timeout
#
Overrides default response timeout of 0.5 seconds for RTU or 3 seconds for TCP. number
product_code
#
Product code which can be used for automatic profile mapping. string
Obtained from the device via read device identification object id 1 request.
read_swap
#
Sets global byte/word swap order during conversion (endianness). boolean/string
Same as read_swap
field from mapping.
read_delay
#
Delay in seconds (max 1 second) between consecutive read requests from the slave. number
Should only be used if consecutives reads result in a timeout error.
write_delay
#
Delay in seconds (max 1 second) before write is sent to the slave. number
Should only be used if consecutives writes result in a timeout error.
Mapping fields #
name
#
Datapoint name. string, required
Example: Output 2
bus_datatype
#
Mapped object data type, key from dt
table string/number, required
Possible values: bool
bit4
uint8
scale
angle
int8
uint16
int16
float16
temperature
time
date
uint32
rgbw
int32
float32
string
int64
uint24
rgb
text
type
#
Modbus datapoint type. string, required
Possible values: coil
discreteinput
register
inputregister
address
#
Datapoint address (0-based). number, required
writable
#
Set to true
to enable writing to coil
or register
boolean
write_only
#
Set to true
to disable reading coil
or register
value when writable
is enabled. boolean
write_multiple
#
Set to true
to force writing using multiple coil/register write function (code 16) even when writing to a single coil/register. boolean
datatype
#
Modbus value data type. Read length is chosen based on data type, data conversion is done automatically. string
Possible values: uint16
int16
float16
uint32
int32
float32
uint64
int64
quad10k
s10k
value_delta
#
New value is sent when the difference between previously sent value and current value is larger than delta. Defaults to unset, send on any value changed. number
value_base
#
Add a specified number to the resulting value. number
value_multiplier
#
Multiply the resulting value by a specified number. number
Value calculation: value = value_base + value * value_multiplier
value_bitmask
#
Bit mask to apply when reading and writing. number
Shifting is done automatically using the Count Trailing Zeros (CTZ) function.
Example: if value = 0xABCD
and mask = 0x0F00
then CTZ(mask) = 8
The resulting value is (value & mask) >> 8 = 0x0B00 >> 8 = 0xB
write_bitmask
#
Set to true
to enable writing shifted value to the register using value_bitmask
boolean
Only uint16
datatype is supported.
value_nan
#
Array of 16-bit integers. array
If specified and read operation returns the same array then no further processing of value is done.
value_custom
#
A list of key → value
mapping. object
Example: { "0": "Off", "1": "Low", "2": "Medium", "3": "High" }
value_default
#
Default value that is sent when coil/register cannot be read. boolean/number
internal
#
Not visible to the user when set to true
, should be used for scale
registers. boolean
units
#
Object units/suffix. string
address_scale
#
Address of the register containing value scale factor. number
Value calculation: value = value * 10 ^ scale
read_count
#
Number of registers to be read at once. number
Only for devices that only support reading of a specific block of registers; up to 125 registers can read at once.
read_swap
#
Swap byte/word order during conversion (endianness). boolean/string
Default value is word (2-byte) swap.
Possible values:
n
(no swap = 0xABCD)w
(word swap = 0xCDAB)b
(byte swap = 0xBADC)bw
(byte and word swap = 0xDCBA)
read_offset
#
Position of the first coil/register in the data from the block of registers (0-based). number
bus_address
#
Group address of mapped object. group address as a string
Recommended to use only during development.