MBMap Registry
  1. Devices
  2. Shelly
  3. 2PM Gen4

Shelly 2PM Gen4 Modbus register map

Also covers Shelly 2PM Gen4

Two-channel smart relay or roller shutter controller with power metering and Modbus TCP

  • Official
  • 27 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
27 input registers
Groups
3
Revision
1 · 2026-10-18
Added
()
File
maps/shelly/2pm-gen4.mbmap.json · 6 KB · history
SHA-256
06d8b4bb6790ab325cdcec3a7384454b20a7e03ac97f91fc425aaffb26a8800d
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 Switch component pages, Shelly 2PM Gen4 device page

  • Modbus TCP must be enabled first (Modbus.SetConfig with 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; Switch:1 starts at 33020.
  • Not in this map: the output coils (the documentation lists them for the Pro 3EM with output add-on and the Pro EM only) and the Cover component, which has no Modbus register table. The Switch measurements are the same whether the channels are used as relays or as a roller shutter.
AreaAddressNameTypeAccessUnitScaleDescription
IR 0 string[6] R
IR 6 string[10] R
IR 16 string[32] R
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
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

Help improve this map