Skip to Content

ENM-223-R1 Energy Metering

(0 review)
The ENM-223-R1 is a high-precision, configurable 3-phase energy monitoring and I/O module designed for industrial automation, building management, and smart grid applications. Featuring real-time voltage, current, and power quality metering alongside 2 SPDT relays, 4 user LEDs, and 4 configurable buttons, this module delivers complete energy visibility and local control in a compact DIN-rail package.
110.00 110.00

Overview

The ENM-223-R1 is a configurable smart I/O module designed for 3-phase power quality and energy metering. It includes 3 voltage inputs, 3 current channels (CTs), 2 SPDT relays, 4 buttons, and 4 LEDs, with configuration via USB-C WebConfig and communication via RS-485 (Modbus RTU). It connects to a MicroPLC/MiniPLC for use in energy monitoring, automation, and smart building applications.

Getting Started

Quick Setup Process
  1. Mount & Wire – Install on 35mm DIN rail, connect 24V DC power, sensors, and relay loads.

  2. Configure – Plug in USB-C, open the WebConfig tool in Chrome/Edge, set Modbus address and I/O mapping.

  3. Integrate – Connect to your controller via RS-485 and start automation.

What You Need
  • ENM-223-R1 module

  • 24V DC SELV power supply

  • RS-485 cable (twisted pair)

  • USB-C cable for configuration

  • Chromium browser (Chrome/Edge)

Web Configuration Steps
  1. Connect USB-C to module and PC

  2. Open https://www.home-master.eu/configtool-enm-223-r1

  3. Click "Connect" and select serial port

  4. Set Modbus address (default: 3) and baud rate (default: 19200 8N1)

  5. Configure input actions, mapping, LED modes, and button functions

  6. Settings save automatically to flash

Tech Specs

ParameterDetails
MicrocontrollerRP2350, Dual-core ARM Cortex-M0+
Operating Voltage3.3V, 5V (logic), 24V DC input
Voltage Inputs3 (L1/L2/L3–N, 85–265V AC)
Current Inputs3 (CTs, 333mV/1V RMS)
Relay Outputs2 (SPDT, 5A @ 250V AC)
User Buttons4 (configurable)
User LEDs4 (configurable)
CommunicationRS-485 (Modbus RTU)
Configuration InterfaceUSB-C (Web Serial)
Operating Temperature0–40°C
Dimensions (W×H×D)70 × 90.6 × 67.3 mm

Documentation

The ENM-223-R1 is open-source hardware! You can build your own board using the following files:

Hardware Design Files
Firmware & Software
Mechanical Files:

All design files and documentation are available in the HomeMaster GitHub repository.

Input and Output

Voltage & Current Inputs:
  • 3 voltage channels (L1/L2/L3–N)

  • 3 CT inputs (external split-core CTs)

  • Isolated measurement via ATM90E32AS metering IC

  • Configurable gains/offsets via WebConfig

Relay Outputs (2 channels):
  • SPDT contacts (NO/NC/COM)

  • 5A @ 250V AC rating

  • Controlled via Modbus coils or alarm logic

  • RC/TVS snubbers recommended for inductive loads

User Interface:
  • 4 Buttons: Configurable for relay override, toggle, alarm acknowledgment

  • 4 LEDs: Configurable steady or blink modes, linked to alarms/overrides

  • Status LEDs: PWR (power), TX/RX (Modbus activity)

Communication Interfaces

  • Protocol: Modbus RTU

  • Role: Slave device

  • Default Settings: Address 3, 19200 baud, 8 data bits, No parity, 1 stop bit

  • Supported Functions: Read Coils (0x01), Read Discrete Inputs (0x02), Read Holding Registers (0x03), Read Input Registers (0x04), Write Single Coil (0x05), Write Single Register (0x06)

Modbus Address Map
Coils (Read/Write) – Function Codes 0x01, 0x05
AddressNameTypeDescriptionR/W
00000R1_CMDCoilRelay 1 command (1=ON, 0=OFF)R/W
00001R2_CMDCoilRelay 2 command (1=ON, 0=OFF)R/W
00610ALARM_ACK_L1CoilAcknowledge L1 alarm (write 1)Write Only
00611ALARM_ACK_L2CoilAcknowledge L2 alarm (write 1)Write Only
00612ALARM_ACK_L3CoilAcknowledge L3 alarm (write 1)Write Only
00613ALARM_ACK_TOTCoilAcknowledge Totals alarm (write 1)Write Only
Discrete Inputs (Read Only) – Function Code 0x02
AddressNameTypeDescription
10000LED1_STATEDiscrete InputLED 1 state
10001LED2_STATEDiscrete InputLED 2 state
10002LED3_STATEDiscrete InputLED 3 state
10003LED4_STATEDiscrete InputLED 4 state
10520BTN1_STATEDiscrete InputButton 1 press state
10521BTN2_STATEDiscrete InputButton 2 press state
10522BTN3_STATEDiscrete InputButton 3 press state
10523BTN4_STATEDiscrete InputButton 4 press state
10540RLY1_STATEDiscrete InputRelay 1 actual state
10541RLY2_STATEDiscrete InputRelay 2 actual state
Holding Registers (Read/Write) – Function Codes 0x03, 0x06, 0x10
AddressNameTypeDescriptionRange/Values
40000MODEL_IDRegisterModule model identifier (0x0223)Read Only
40001FW_VERSIONRegisterFirmware build YYYYMMRead Only
40002MB_ADDRRegisterModbus address (1-255)R/W (1-255)
40003MB_BAUDRegisterBaud rate setting0=9600, 1=19200, 2=38400, 3=57600, 4=115200
40004MB_PARITYRegisterParity setting0=None, 1=Even, 2=Odd
40010SAMPLE_INTRegisterSample interval (10-5000 ms)R/W
40011LINE_FREQRegisterLine frequency50 or 60 Hz
40012SUM_MODERegisterPower sum mode0=algorithmic, 1=absolute
40020-40025UGAIN_A-FRegisterVoltage gain A/B/C16-bit (0-65535)
40030-40035UOFFSET_A-FRegisterVoltage offset A/B/CS16-bit
40040-40045IGAIN_A-FRegisterCurrent gain A/B/C16-bit (0-65535)
40050-40055IOFFSET_A-FRegisterCurrent offset A/B/CS16-bit
Input Registers (Read Only) – Function Code 0x04
AddressNameTypeDescriptionUnitScaling
00100-00102URMS_L1-L3RegisterVoltage L1/L2/L3V×0.01
00110-00112IRMS_L1-L3RegisterCurrent L1/L2/L3A×0.001
00200-00207P_L1-TOTRegisterActive Power (L1-L3, Totals)W1
00210-00217Q_L1-TOTRegisterReactive Power (L1-L3, Totals)var1
00220-00227S_L1-TOTRegisterApparent Power (L1-L3, Totals)VA1
00240-00243PF_L1-TOTRegisterPower Factor L1-L3, Total-×0.001
00244-00246ANGLE_L1-L3RegisterPhase Angle L1-L3°×0.1
00250FREQUENCYRegisterFrequencyHz×0.01
00251TEMPERATURERegisterInternal temperature°C1
00300-00307AP_IMP_L1-TOTRegisterActive Energy import (+Wh)Wh1
00308-00315AP_EXP_L1-TOTRegisterActive Energy export (-Wh)Wh1
00316-00323RP_IND_L1-TOTRegisterReactive Energy inductive (+varh)varh1
00324-00331RP_CAP_L1-TOTRegisterReactive Energy capacitive (-varh)varh1
00332-00339APP_L1-TOTRegisterApparent Energy (VAh)VAh1

Home Assistant & ESPHome Integration Guide


Overview

The ENM-223-R1 integrates seamlessly with Home Assistant via ESPHome using the Modbus RTU protocol. This guide covers both quick integration using our pre-built package and manual configuration for advanced users.

Prerequisites

Before starting, ensure you have:

  1. ESPHome device (HomeMaster MiniPLC/MicroPLC or any ESP32/ESP8266 with RS-485)

  2. RS-485 connection between ESP device and ENM-223-R1

  3. 24V power to ENM-223-R1 module

  4. Home Assistant with ESPHome add-on installed

RS‑485 Configuration
yaml
uart:
id: uart_modbus
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 19200
parity: NONE
stop_bits: 1

modbus:
id: modbus_bus
uart_id: uart_modbus
Import ENM-223-R1 Package:
yaml
packages:
enm_223_r1:
url: https://github.com/isystemsautomation/HOMEMASTER
ref: main
files:
- path: ENM-223-R1/Firmware/default_enm_223_r1_plc.yaml
vars:
enm_prefix: "Main Panel" # Custom name for your entities
enm_id: main_module # Unique internal ID
enm_address: 3 # Must match WebConfig Modbus address
refresh: 1d

Customize Variables:

  • enm_prefix: Appears in entity names (e.g., "Main Panel Voltage L1")

  • enm_id: Internal identifier for the module

  • enm_address: Modbus address (must match WebConfig setting)

Example with Multiple ENMs:

yaml
packages:
enm_main:
url: https://github.com/isystemsautomation/HOMEMASTER
ref: main
files:
- path: ENM-223-R1/Firmware/default_enm_223_r1_plc.yaml
vars:
enm_prefix: "Main Panel"
enm_id: main_module
enm_address: 3
refresh: 1d

enm_solar:
url: https://github.com/isystemsautomation/HOMEMASTER
ref: main
files:
- path: ENM-223-R1/Firmware/default_enm_223_r1_plc.yaml
vars:
enm_prefix: "Solar"
enm_id: solar_module
enm_address: 4
refresh: 1d

Programming

Supported Development Environments
  • Arduino IDE with RP2350 support

  • PlatformIO with RP2350 toolchain

  • MicroPython (community builds available)

Firmware Flashing

  1. Connect USB-C to PC

  2. Hold Buttons 3 + 4 to enter BOOT mode

  3. Hold Buttons 1 + 2 to RESET the module

  4. Upload via:

    • UF2 drag-and-drop to mounted drive, OR

    • PlatformIO/Arduino IDE upload


Pin Mapping (Default Firmware)

Pin/Net NameGPIO/PortFunctionType
Voltage Sensing



VA_INADC1_CH0Phase A VoltageAnalog Input
VB_INADC1_CH1Phase B VoltageAnalog Input
VC_INADC1_CH2Phase C VoltageAnalog Input
Current Sensing



IA_INADC1_CH3Phase A CurrentAnalog Input
IB_INADC1_CH4Phase B CurrentAnalog Input
IC_INADC1_CH5Phase C CurrentAnalog Input
Digital I/O



DI1GPIO6Digital Input 1Digital Input
DI2GPIO7Digital Input 2Digital Input
DO1GPIO8Relay Output 1Digital Output
DO2GPIO9Relay Output 2Digital Output
Communication



TX_485GPIO17RS-485 TransmitUART
RX_485GPIO16RS-485 ReceiveUART
USB_DMUSB_DMUSB Data-USB
USB_DPUSB_DPUSB Data+USB