MBMap Registry
  1. Devices
  2. Shelly
  3. Pro 4PM

Shelly Pro 4PM Modbus register map

Four-channel smart relay with power metering and Modbus TCP

  • Official
  • 55 registers
  • Modbus TCP
  • Revision 1 · 2026-10-18
  • Identity: model

Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.

Communication

Protocol
Modbus TCP
Unit ID
1default
TCP port
502
Byte / word order
CDAB · bytes big-endian, words low first (word swap)
Addresses
0-based

Connection values are defaults: the device may be configured differently.

Map

Registers
51 input registers, 4 coils
Groups
5
Revision
1 · 2026-10-18
Added
()
File
maps/shelly/pro-4pm.mbmap.json · 8 KB · history
SHA-256
c7687c2be2e1d6aa468d9e047e0d8b1ceee81bd26671543277b1a10bb87b573c
Manufacturer
shelly.com

Device identity

What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.

Registers
RoleRegisterAddressTypeValues
Model Model input 6 string[10]

Sources and notes

Source: Shelly Gen2 API documentation: Modbus and component pages

  • Modbus TCP must be enabled first (Modbus.SetConfig enable=true, or in the web interface).
  • The documentation lists input registers in 3xxxx notation: 33000 is input register 3000.
  • Floats and 32-bit values are sent low word first, as in the documentation's modbus_cli examples (-B mixed).
  • Each Switch component has a block of 20 input registers starting at 33000 + 20 x its id, and a coil at 100 + 10 x its id.
AreaAddressNameTypeAccessUnitScaleDescription
IR 0 string[6] R
IR 6 string[10] R
IR 16 string[32] R
CO 100 bool RW 1 = on, 0 = off
IR 3000 bool bit 0 R
IR 3001 float32 CDAB R V
IR 3003 float32 CDAB R A
IR 3005 float32 CDAB R W
IR 3007 float32 CDAB R Hz
IR 3009 float32 CDAB R
IR 3011 float32 CDAB R Wh
IR 3013 float32 CDAB R Wh
IR 3015 bool bit 0 R
IR 3016 bool bit 0 R
IR 3017 bool bit 0 R
IR 3018 bool bit 0 R
CO 110 bool RW 1 = on, 0 = off
IR 3020 bool bit 0 R
IR 3021 float32 CDAB R V
IR 3023 float32 CDAB R A
IR 3025 float32 CDAB R W
IR 3027 float32 CDAB R Hz
IR 3029 float32 CDAB R
IR 3031 float32 CDAB R Wh
IR 3033 float32 CDAB R Wh
IR 3035 bool bit 0 R
IR 3036 bool bit 0 R
IR 3037 bool bit 0 R
IR 3038 bool bit 0 R
CO 120 bool RW 1 = on, 0 = off
IR 3040 bool bit 0 R
IR 3041 float32 CDAB R V
IR 3043 float32 CDAB R A
IR 3045 float32 CDAB R W
IR 3047 float32 CDAB R Hz
IR 3049 float32 CDAB R
IR 3051 float32 CDAB R Wh
IR 3053 float32 CDAB R Wh
IR 3055 bool bit 0 R
IR 3056 bool bit 0 R
IR 3057 bool bit 0 R
IR 3058 bool bit 0 R
CO 130 bool RW 1 = on, 0 = off
IR 3060 bool bit 0 R
IR 3061 float32 CDAB R V
IR 3063 float32 CDAB R A
IR 3065 float32 CDAB R W
IR 3067 float32 CDAB R Hz
IR 3069 float32 CDAB R
IR 3071 float32 CDAB R Wh
IR 3073 float32 CDAB R Wh
IR 3075 bool bit 0 R
IR 3076 bool bit 0 R
IR 3077 bool bit 0 R
IR 3078 bool bit 0 R

Help improve this map