Modbus Register Map

Complete Modbus RTU register map for all Domoriks module types.

Communication parameters

Parameter Default Options
Baud rate 9600 9600, 19200, 38400
Data bits 8 Fixed
Parity None Fixed
Stop bits 1 Fixed
Mode RTU Fixed
Broadcast address 255 Read-only

Relay Module register map

Coils — function codes FC01 (read), FC05 (write single), FC0F (write multiple)

Starting address 0x0001 (Modbus convention: coil 1 = address 0x0001).

Coil Address Description
Relay 1 0x0001 0 = de-energised (NO open), 1 = energised (NO closed)
Relay 2 0x0002  
Relay 3 0x0003  
Relay 4 0x0004  
Relay 5 0x0005  
Relay 6 0x0006  
Relay 7 0x0007  
Relay 8 0x0008  

Holding registers — FC03 (read), FC06 (write single)

Register Address R/W Type Description
Firmware version 0x0100 R UINT16 High byte = major, low byte = minor
Modbus address 0x0101 R UINT16 Current address (read-back)
Baud rate 0x0102 R/W UINT16 0=9600, 1=19200, 2=38400. Write triggers reboot.
HW revision 0x0103 R UINT16 Board hardware revision
Relay states (all) 0x0110 R UINT16 Bits 0–7 = relay 1–8 state (read-only mirror)
Uptime seconds 0x0120 R UINT32 Seconds since last boot (2 registers, MSW first)

Switch Module register map

Discrete inputs — FC02 (read)

Input Address Description
Switch 1 0x0001 0 = contact open, 1 = contact closed
Switch 2 0x0002  
Switch 3 0x0003  
Switch 4 0x0004  
Switch 5 0x0005  
Switch 6 0x0006  
Switch 7 0x0007  
Switch 8 0x0008  

Holding registers — FC03 (read), FC06 (write single)

Register Address R/W Type Description
Firmware version 0x0100 R UINT16  
Modbus address 0x0101 R UINT16  
Baud rate 0x0102 R/W UINT16 0=9600, 1=19200, 2=38400
Input 1 debounce 0x0110 R/W UINT16 Debounce time in ms (default 20)
Input 2 debounce 0x0111 R/W UINT16  
Input 3 debounce 0x0112 R/W UINT16  
Input 4 debounce 0x0113 R/W UINT16  
Input 5 debounce 0x0114 R/W UINT16  
Input 6 debounce 0x0115 R/W UINT16  
Input 7 debounce 0x0116 R/W UINT16  
Input 8 debounce 0x0117 R/W UINT16  
Input states (all) 0x0120 R UINT16 Bits 0–7 = inputs 1–8 (read-only mirror)

Example raw Modbus frames

Read relay 1 state (address=1)

Request:

01  01  00 01  00 01  FC 0A
│   │   │       │       └─ CRC
│   │   │       └───────── Quantity: 1 coil
│   │   └───────────────── Starting address: 0x0001
│   └───────────────────── Function code: 01 (read coils)
└───────────────────────── Slave address: 1

Response:

01  01  01  01  90 48
│   │   │   │   └─ CRC
│   │   │   └───── Coil value: 1 (energised)
│   │   └───────── Byte count: 1
│   └───────────── Function code: 01
└───────────────── Slave address: 1

Set relay 1 ON (address=1)

Request:

01  05  00 01  FF 00  DC 0A
│   │   │       │       └─ CRC
│   │   │       └───────── Value: FF 00 = ON
│   │   └───────────────── Coil address: 0x0001
│   └───────────────────── Function code: 05 (write single coil)
└───────────────────────── Slave address: 1

Set relay 1 OFF (address=1)

01  05  00 01  00 00  CD FA

(Same as above but value = 00 00 = OFF)

💡 Raw command entity

In Home Assistant, use the raw command text entity and send button on the gateway device to send any Modbus frame directly from the HA UI — useful for testing and debugging.