smithtek-mako-rf 2.5.0
Smithtek dedicated node for communicating with the Mako PLC over RS485 or RF
Installation
Install using the NodeRED palette manager
Smithtek Mako RF
RS-485 / LoRa RF Modbus RTU Master for Mako PLC devices.
This node combines Modbus polling, retry logic, queue management and structured decoding into a single industrial block.
Bus Configuration
Select the communication channel:
- RS485-1 → /dev/ttyAMA0
- RS485-2 → /dev/ttyAMA1
- RF → Long range LoRa radio link
When RF is selected, serial parameters are automatically managed.
Timeout, Retries and Gap are configured in seconds.
Mode
Read
Polls registers from the remote Mako and outputs structured JSON.
Write
Sends values to the remote device using:
- FC5 – Write Single Coil
- FC6 – Write Single Register
- FC15 – Write Multiple Coils
- FC16 – Write Multiple Registers
Values can come from msg.payload or be fixed in the node configuration.
Device ID
The Modbus Unit ID of the remote Mako (1–247).
Must match the ID configured in the target device.
Function Code
Must match the table type configured in your V-NET program:
- Read Coils
- Read Digital Inputs
- Read Holding Registers
- Read Input Registers
Address
Starting Modbus register address.
Must align exactly with the Modbus table built in your Mako V-NET program.
Quantity
Total number of registers to read.
- 16 bit value = 1 register
- 32 bit value = 2 registers
Example:
3 × 32 bit floats = Quantity 6
Quantity must cover all registers defined in your decoder map.
Decoder Map
Build the register table in the exact same order as your Mako V-NET Modbus table.
Each row defines how raw Modbus data is converted into structured JSON.
Name
Becomes the output key in msg.payload.
Nested paths are supported using: pump=>status
Register Data Type
- 16 bit integer
- 16 bit unsigned
- 32 bit integer
- 32 bit unsigned
- 32 bit float
- Digital to unsigned binary encoder
Offset (regs)
Offset is configured in registers.
Automatic stepping behaviour:
- 16 bit types increase by 1 register
- 32 bit types increase by 2 registers
- Digital encoder increases bit number from 0–15 before moving to the next register
Offsets must match your V-NET Modbus table layout exactly.
Digital to Unsigned Binary Encoder
Used when one 16 bit register contains multiple digital states.
The Bit column becomes active.
Bit automatically increments when adding rows.
After Bit 15, the next row moves to the next register.
Scale
Optional value transformation.
Examples:
0.1→ multiply by 0.1>100<50==1<<2>>1
If blank, raw decoded value is used.
Output Behaviour
Successful Read
msg.payload→ Decoded structured JSONmsg.modbus.raw→ Raw Modbus responsemsg.modbus.req→ Request metadata
Successful Write
msg.payload→ Device confirmation responsemsg.modbus.raw→ Raw Modbus confirmation
The write response is the actual Modbus confirmation returned by the remote device.
Industrial Behaviour
- Single shared bus queue per channel
- One request processed at a time
- Timeout handled in seconds
- Configurable retry attempts
- Optional inter-request gap
Designed for stable Modbus RTU polling over RS485 or long-range RF links.
License
Copyright (c) 2023 www.smithtek.com.au Licenced under the terms of the GPLv3 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAMIEN CLARK BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.