For a Modbus data be ingested by LiveRig Collector and forward to INTELIE Live, two files must be configured: sources.xml and modbus.json. This page will explain the INTELIE JSON schema for the modbus.json LiveRig Collector configuration.
The specific documentation about the Modbus source is provided at the modbus protocol page. Following the example at that Modbus protocol page, two <request> objects depends on additional controller mapping as the following JSON format (modbus.json) describes below.
Each controller in the field controllers represents a device defined on sources.xml at <request>/<object> and it describes all memory areas that will be fetched. Each memory area has the following fields:
Name
Description
Is required?
Default value
type
The modbus register type to be fetched. This can be input-register, holding-register, discrete-input and coil
Yes
-
start_address
A number, between 1 and 65536. Represents the starting address of the memory area.
NOTE:the end device could have address mapping differences. For example: returning the value for address 99 when we declared address 100. Please check if it is the case and adjust accordingly.
Yes
-
count
Represents the number of registers or coils that will be read sequentially from the start_address.
No
1
unit
The unit of measurement to be used by Intelie Live
No
-
alias
A rename for the channel when sent to Intelie Live. See more info below
No
The default channel name uses the format {type}_{address}
dataType
The data type to parse the values returned by the Modbus source. See more info below
No
If the register type is coil or discrete-input, the default dataType will be boolean. Otherwise the default dataType is int16
Data Types
The dataType field from the modbus.json file can have the following options on the modbus.json file:
Single Register:
boolean (1 bit)
int8 (8 bits)
uint8 (8 bits)
byte (8 bits)
int16 (16 bits)
uint16 (16 bits)
word (16 bits)
char (8 bits)
wchar (16 bits)
Double Register (32 bits):
int32
uint32
float
word32
Quadruple Register (64 bits):
int64
uint64
double
word64
Using a data type that requires more than 1 register will disable the count feature declared at the modbus.json file.
You don't need to declare a count if using Multi-register data types, we will assume it is always the next address. Example: If the dataType is int32 and the start_address is 123, the LiveRig Collector will fetch the values from addresses 123 and 124 to form the int32 (long) value.
Aliases
The alias field from the modbus.json file is an array of strings. That means that you can allocate more than 1 alias to a memory area. If that is the case the alias will be applied by the following rule: For each address fetched by the memory area, we will apply the alias from the list using the order of both.
Example 1:If a memory area has a start_address set as 123 and a count set as 3, the end result will be values from addresses 123, 124 and 125. If the alias field has just the value ["exampeAlias"], then the LiveRig Collector will map exampeAlias_123 to address 123, exampeAlias_124 to address 124 and exampeAlias_125 to address 125.
Example 2:If a memory area has a start_address set as 123 and a count set as 3, the end result will be values from addresses 123, 124 and 125. If the alias field has the value ["exampleAlias1", "exampleAlias2", "exampleAlias3" ], then the LiveRig Collector will map exampleAlias1 to address 123, exampleAlias2 to address 124 and exampleAlias3 to address 125.
Example 3:If a memory area has a start_address set as 123 and a count set as 3, the end result will be values from addresses 123, 124 and 125. If the alias field has the value ["exampleAlias1", "exampleAlias2", "exampleAlias3" , "exampleAlias4"], then the LiveRig Collector will map exampeAlias_123 to address 123, exampeAlias_124 to address 124 and exampeAlias_125 to address 125. The exampleAlias4 will not be used as a channel rename.
NOTE: If there is fewer aliases than the address count (the alias list has a size of 2 and the count of addresses is 4), the LiveRig Collector will raise an exception, since it won't know how to map the aliases to each address.
Compatibility for LiveRig Collector prior to 5.x
Prior to 5.0.0, the INTELIE modbus.json format was not able to support the configuration of multiple coin, input-register or discrete-input for a same controller.
The ancient JSON schema for those deprecated versions is demonstrated bellow just for historical reference. Please consider to upgrade any LiveRig Collector to the most recent version.
Each controller represents a device defined on sources.xml at <request>/<object> and describe all memory areas that will be fetched. For each memory area (such as input-register,discrete-input, coil or holding-register), the following information must be provided:
Name
Description
Is required?
Default value
start_address
A number, between 1 and 65536. Represents the starting address of the memory area
yes
count
Represents the number of registers or coils that will be read sequentially from the start_address
No
0
unit
The unit of measurement to be used in Intelie Live