Requires NodeRED installed, check here.
$ cd ~/.node-red
$ npm i @mrcamilletti/node-red-contrib-serial-modbus-api
Modbus Server: Select configuration node (required)
msg.topic: Select option to change message topic. Default: Keep
Retries: Number of retries in case of timeout.
Port: Serial device location. i.e.: /dev/ttyUSB0
Settings: : Baud rate, data bits, parity check and stop bits.
Timeout: Response timeout from device request. Value in milliseconds.
Interval: Sleep time between transactions. Value in milliseconds.
Queue capacity: Máximum number of transactions in the queue.
{
"id": <number> | <Array>,
"read" : <string> "coil" | "input" | "holding" | "discrete",
"addr": <number>,
"quantity": <number>
}
{
"id": <number> | <Array>,
"read" : <string> "coil" | "input" | "holding" | "discrete",
"from": <number>,
"to": <number>
}
{
"id": <number> | <Array>,
"write": <string> "coil" | "holding",
"addr": <number>,
"value": <Array>
}
msg.payload = {
id: 1,
read: "coil",
addr: 0,
quantity: 5
}
msg.payload = {
id: 2,
read: "coil",
from: 1,
to: 2
}
msg.payload = {
id: 1,
read: "input",
from: 0,
to: 1
}
msg.payload = {
id: 2,
read: "holding",
from: 0,
to: 1
}
msg.payload = {
id: 1,
write: "holding",
addr: 0,
value: [1,2,3,4]
}
msg.payload = {
id: 1,
write: "coil",
addr: 0,
value: [1,0,1,0]
}
msg.payload = {
id: [1,2,5],
write: "coil",
addr: 0,
value: [1,1,1,1]
}
msg.payload = {
id: [1,2,5],
read: "coil",
addr: 0,
quantity: 4
}
msg.payload = {
...
result: {
"data":[ ... ],
"buffer":[ ... ]
}
}
msg.payload = {
...
error: {
"name": "...",
"message": "...",
"errno": "..."
}
}
In case of timeout error, the message can be pushed back to the queue a number of times specified by payload.retries
msg.payload = {
...
retries: 5
}