MBMap Registry
  1. Devices
  2. Shelly
  3. Pro EM-50

Shelly Pro EM-50 Modbus register map

Two-channel energy meter with a relay output and Modbus TCP

  • Official
  • 41 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
40 input registers, 1 coil
Groups
6
Revision
1 · 2026-10-18
Added
()
File
maps/shelly/pro-em-50.mbmap.json · 7 KB · history
SHA-256
1e159b9678757809e626ee9952c3ad9c968a22fa622f0f1d8f4d539ec961b234
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).
  • The two channels are the EM1 components 0 and 1; each next component's block starts 20 registers after the previous one (EM1 at 32000, EM1Data at 32300).
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 2000 uint32 CDAB R s Unix timestamp
IR 2002 bool bit 0 R
IR 2003 float32 CDAB R V
IR 2005 float32 CDAB R A
IR 2007 float32 CDAB R W
IR 2009 float32 CDAB R VA
IR 2011 float32 CDAB R
IR 2013 bool bit 0 R
IR 2014 bool bit 0 R
IR 2015 bool bit 0 R
IR 2016 float32 CDAB R Hz
IR 2020 uint32 CDAB R s Unix timestamp
IR 2022 bool bit 0 R
IR 2023 float32 CDAB R V
IR 2025 float32 CDAB R A
IR 2027 float32 CDAB R W
IR 2029 float32 CDAB R VA
IR 2031 float32 CDAB R
IR 2033 bool bit 0 R
IR 2034 bool bit 0 R
IR 2035 bool bit 0 R
IR 2036 float32 CDAB R Hz
IR 2300 uint32 CDAB R s Unix timestamp
IR 2302 float32 CDAB R Wh
IR 2304 float32 CDAB R Wh
IR 2306 float32 CDAB R varh
IR 2308 float32 CDAB R varh
IR 2310 float32 CDAB R Wh Never reset
IR 2312 float32 CDAB R Wh Never reset
IR 2320 uint32 CDAB R s Unix timestamp
IR 2322 float32 CDAB R Wh
IR 2324 float32 CDAB R Wh
IR 2326 float32 CDAB R varh
IR 2328 float32 CDAB R varh
IR 2330 float32 CDAB R Wh Never reset
IR 2332 float32 CDAB R Wh Never reset

Help improve this map