M-TEC M-TEC Energy Butler GEN2 (battery) Modbus TCP template

M-TEC Energy Butler GEN2 (battery)

The M-TEC Energy Butler GEN2 is a residential and light-commercial battery storage system with an integrated hybrid inverter, available from 6 kW to 20 kW with stackable LFP modules up to 30.7 kWh. This template connects via Modbus TCP using RTU framing over the built-in espressif Wi-Fi module and reads two holding registers: battery power flow at address 40258 and state of charge at address 43000. Installers can use these two values in the ModbusCloud portal to track charge and discharge cycles, set consumption alerts, and verify battery behavior in real time.

Protocol
Modbus TCP
Connection
Ethernet, Modbus TCP
Registers
2, read only
Brand
M-TEC
Last updated

Registers (2)

2 read, 0 write

NameUnitAccessAddress (Hidden until you enter your email)Function (hidden)Type (hidden)
powerWRead
soc%Read

Loading registers…

Send your device list

If a device is not in the library yet, we build the template for free as soon as we have the register data.

Number of installations (optional)

Use cases

  • Monitor battery power flow continuously to verify the system charges during solar surplus hours.
  • Track state of charge trends across days to detect early signs of capacity fade.
  • Alert on state of charge dropping below a set threshold during overnight discharge periods.
  • Compare daily charge and discharge cycles against expected seasonal PV production patterns.
  • Verify that battery power register returns negative values when grid is charging the system.

Installation

  1. Enable Modbus on the M-TEC Energy Butler GEN2 by locating the espressif Wi-Fi module on your local network (it typically appears as 'espressif' in your router's device list) and confirming it is reachable.

  2. Connect the ModbusCloud Gateway to the same LAN as the espressif module. Use port 5743 for firmware versions older than V27.52.4.0, or port 502 for firmware V27.52.4.0 and newer.

  3. In the ModbusCloud portal, add a new device, import the M-TEC Energy Butler GEN2 (battery) template, set the unit ID to 252, select TCP with RTU framing, and enter the espressif module's IP address and the correct port.

  4. Verify the connection by checking live readings for the power register (address 40258) and the soc register (address 43000). A valid SOC raw value will be in tenths of a percent, so 9500 equals 95%.

Things to watch for

Why is the SOC register returning values like 9500 instead of 95?

The soc register at address 43000 stores state of charge in tenths of a percent as a uint16. You must apply a scale factor of 0.01 to convert the raw value to a percentage. A raw reading of 9500 therefore represents 95%. Verify that your portal channel has the correct scaling applied.

The gateway connects but returns no values from any register. What now?

The most common cause is a port mismatch. Firmware versions older than V27.52.4.0 use port 5743; firmware V27.52.4.0 and newer use port 502. Check the firmware version on the device web interface and update the port in the ModbusCloud portal accordingly. Also confirm unit ID is set to 252.

Why do I get CRC errors when polling the Energy Butler GEN2?

The device requires Modbus RTU framing even when connecting over TCP. A standard Modbus TCP (socket) framer will produce CRC or framing errors. Ensure the ModbusCloud Gateway is configured to use RTU framing over TCP, not plain Modbus TCP framing.

The power register reads garbage or wildly incorrect values. What could cause this?

Address 40258 is an int32 spanning two 16-bit registers. If your client reads only a single register or reverses the word order, the result will be incorrect. Confirm the data type is set to int32 and that word order matches big-endian (high word first), which is standard for this device family. Also note that some GEN2 units require register addresses incremented by one, so try address 40259 if 40258 yields no valid response.

Want to see how it works?

Electrician working in an open distribution board