Important Notice: This documentation, hardware designs, and firmware are for the pre-release version of the HomeMaster system. All information is preliminary and may contain errors or be subject to change.
- Hardware: Modules are currently in the prototyping and testing phase. Final production versions may differ.
- Firmware: Firmware is under active development and is considered beta. Features, configurations, and stability are being refined.
Please use this information for evaluation and development purposes only. Check the Releases page for the latest stable versions and updates.
Firmware Version: 2025-09 snapshot
HOMEMASTER – Modular control. Custom logic.

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, 2 relays, and optional 4 buttons / 4 LEDs, with configuration via WebConfig using USB-C (Web Serial).
It connects over RS-485 (Modbus RTU) to a MicroPLC/MiniPLC, enabling use in energy monitoring, automation, and smart building applications.
The ENM‑223‑R1 is a modular 3‑phase energy metering + I/O device for power monitoring, automation, and local control. It features 3 voltage channels (L1/L2/L3‑N), 3 current channels (external CTs), 2 SPDT relays, 4 user LEDs, and 4 buttons—all driven by an RP2350 MCU with QSPI flash and a dedicated ATM90E32AS metering IC.
It integrates with MiniPLC/MicroPLC controllers or any Modbus RTU master over RS‑485, and it’s configured in‑browser via USB‑C Web Serial (no drivers). Typical uses include energy dashboards, demand response, alarm‑driven relay control, and building automation. Defaults ship as Modbus address 3 @ 19200 8N1 (changeable in WebConfig).
Quick device flow:
Wire Lx/N/PE + CTs → set address/baud in WebConfig → calibrate gains/offsets → define alarms per L1/L2/L3/Totals → map relays/LEDs/buttons → connect RS‑485 A/B (and GND if separate PSUs) → poll via Modbus.
| Subsystem | Qty | Description |
|---|---|---|
| Voltage Inputs | 3 | L1/L2/L3‑N measurement (divider network on FieldBoard) feeding ATM90E32AS |
| Current Inputs | 3 | Differential CT inputs (IAP/IAN, IBP/IBN, ICP/ICN) with filtering/burdens |
| Relays | 2 | SPDT dry contacts (NO/NC); opto‑driven; alarm‑ or Modbus‑controlled |
| LEDs | 4 | User LEDs; sources: overrides/alarms/warnings/events; steady or blink |
| Buttons | 4 | User actions (toggle relays/LEDs, overrides, acks) with live state feedback |
| Metering & Energy | — | ATM90E32AS: Urms/Irms, P/Q/S, PF, angle, freq; energy kWh/kvarh/kVAh (phase & totals) |
| Config UI | Web Serial | In‑browser WebConfig over USB‑C (Chrome/Edge); live meter, calibration, alarms, relays, LEDs, buttons |
| Modbus RTU | RS‑485 | Multi‑drop slave; address 1…255; baud 9600–115200 (default 19200 8N1) |
| MCU | RP2350 + QSPI | Dual‑core MCU, native USB, external W25Q32 flash; RS‑485 via MAX485 transceiver |
| Power | 24 VDC | Buck to 5 V → 3.3 V LDO; isolated analog domain via B0505S DC‑DC + ISO7761 |
| Protection | TVS, PTC, fuses | Surge/ESD on USB & RS‑485; resettable fuses on field I/O; reverse‑polarity protection |
The ENM‑223‑R1 is a smart Modbus RTU slave. It executes local alarm logic (thresholds & acks) and mirrors states/values to a PLC or SCADA via registers/coils. Configuration (meter options, calibration, relay/LED logic, button actions, Modbus address/baud) is done via USB‑C WebConfig, stored to non‑volatile memory.
| Role | Description |
|---|---|
| System Position | Expansion meter+I/O on the RS‑485 trunk (A/B/GND) |
| Master Controller | MiniPLC / MicroPLC or any third‑party Modbus RTU master (polling) |
| Address / Baud | Configurable 1…255 / 9600–115200; factory default: ID 3 @ 19200 8N1 |
| Bus Type | RS‑485 half‑duplex; termination/bias per bus rules; share GND if separate PSUs |
| USB‑C Port | Setup/diagnostics via Chromium browser (Web Serial); native USB D+/D− to MCU |
| Default Modbus ID | 3 (change in WebConfig) |
| Daisy‑Chaining | Multi‑drop on shared A/B; ensure unique IDs and end‑of‑line termination |
Note: The UI exposes per‑channel Alarm / Warning / Event with min/max thresholds and Ack required option; relays can follow selected alarm kinds or be Modbus‑controlled. Buttons can toggle/override relays; LEDs reflect overrides or alarm states.
This section outlines practical application examples for the ENM‑223‑R1 module. Each use case includes a functional goal and a clear configuration procedure using the WebConfig tool and/or Modbus RTU integration.
These templates are applicable in energy management, automation, industrial control, and building infrastructure deployments.
Purpose: Activate Relay 1 when current exceeds a configured threshold and hold it until manually acknowledged.
Totals
Current (Irms)> 5000 (for 5 A)Alarm ControlledTotals, Kinds: AlarmAlarm Totals, Mode: Steady610–613, or front panel button (if assigned)Purpose: Allow field operators to override Relay 2 using a button, regardless of Modbus or automation control.
Modbus ControlledOverride Relay 2 (hold 3s)Override R2, Mode: Blink or SteadyHolding the button for 3 seconds enters override mode. A short press toggles the relay. Holding again exits override mode.
Purpose: Detect power quality faults (sag/swell or freq drift), activate Relay 1 as an output, and auto-reset when back in range.
L1
Voltage (Urms)21000 (210 V), Max: 25000 (250 V)Alarm Controlled, Channel: L1, Kinds: AlarmAlarm L1Purpose: Use a controller to shed non-critical loads as power consumption increases.
Modbus ControlledTotals S (VA) via Input RegisterS > 8000, write coil 600 = OFF (Relay 1)S > 10000, write coil 601 = OFF (Relay 2)Ideal for HVAC or lighting where priority-based power shedding is needed.
| Use Case | Feature Used | Reset Method | Relay Mode |
|---|---|---|---|
| Overcurrent Alarm + Ack | Alarms, Ack, Relay 1 | Manual (Ack) | Alarm Controlled |
| Manual Override via Button | Button override, LED | Button toggle | Modbus Controlled |
| Voltage/Frequency Fault Auto-Reset | Alarm (no ack), Relay | Auto (value returns) | Alarm Controlled |
| Load Shedding (Staged Scenes) | PLC Modbus, Relay 1 & 2 | PLC-controlled | Modbus Controlled |
🛠 All parameters are configurable via USB‑C WebConfig. Modbus control assumes master-side logic (PLC, SCADA, or MicroPLC/MiniPLC).
These safety guidelines apply to the ENM‑223‑R1 3‑phase metering and I/O module. Ignoring them may result in equipment damage, system failure, or personal injury.
⚠️ Mixed Voltage Domains — This device contains both SELV (e.g., 24 V DC, RS‑485, USB) and non-SELV mains inputs (85–265 V AC). Proper isolation, wiring, and grounding are required. Never connect SELV and mains GND together.
| Requirement | Detail |
|---|---|
| Qualified Personnel | Installation and servicing must be done by qualified personnel familiar with high-voltage and SELV control systems. |
| Power Isolation | Disconnect both 24 V DC and voltage inputs (Lx/N) before servicing. Use lockout/tagout where applicable. |
| Environmental Limits | Mount in a clean, sealed enclosure. Avoid condensation, conductive dust, or vibration. |
| Grounding | Bond the panel to PE. Wire PE and N to the module. Never bridge GND_ISO to logic GND. |
| Voltage Compliance | CT inputs: 1 V or 333 mV RMS only. Voltage inputs: 85–265 V AC. Use upstream fusing and surge protection. |
| Task | Guidance |
|---|---|
| ESD Protection | Handle only by the case. Use antistatic wrist strap and surface when the board is exposed. |
| DIN Rail Mounting | Mount securely on 35 mm DIN rail inside an IP-rated cabinet. Allow cable slack for strain relief. |
| Wiring | Use correct gauge wire and torque terminal screws. Separate relay, CT, and RS‑485 wiring. |
| Isolation Domains | Respect isolation: Do not bridge GND_ISO to GND. Keep analog and logic grounds isolated. |
| Commissioning | Before power-up, verify voltage wiring, CT polarity, RS‑485 A/B orientation, and relay COM/NO/NC routing. |
| Area | Warning |
|---|---|
| 24 V DC Input | Use a clean, fused SELV power source. Reverse polarity is protected but may disable the module. |
| Voltage Input | Connect L1/L2/L3/N/PE only within rated range (85–265 V AC). Use circuit protection upstream. |
| Sensor Domain | Use CTs with 1 V or 333 mV RMS output. Never apply 5 A directly. Observe polarity and shielding. |
| Area | Warning |
|---|---|
| CT Inputs | Accept only voltage-output CTs. Reversing polarity may affect power sign. Use GND_ISO reference. |
| Relay Outputs | Dry contacts only. Rated: 5 A @ 250 VAC or 30 VDC. Use snubber (RC/TVS) for inductive loads. |
| Area | Warning |
|---|---|
| RS‑485 Bus | Use twisted pair. Terminate at both ends. Match A/B polarity. Share GND if powered from different PSUs. |
| USB-C (Front) | For setup only. Not for permanent field connection. Disconnect during storms or long idle periods. |
| Area | Warning |
|---|---|
| Buttons & LEDs | Can override relays or trigger alarms. Use firmware settings or lockout for safety-critical installs. |
| Area | Recommendation |
|---|---|
| Cable Shields | Terminate at one side only (preferably PLC/controller). Route away from VFDs and high-voltage cabling. |
🧷 Tip: In single-phase installations, energize L1 and tie L2/L3 → N to prevent phantom voltages.
The ENM‑223‑R1 connects to your system over RS‑485 (Modbus RTU) and supports configuration via USB‑C WebConfig. Setup involves:
1) Physical wiring, 2) Digital setup (WebConfig → Modbus or PLC/ESPHome control).
| Category | Item / Notes |
|---|---|
| Hardware | ENM‑223‑R1 module: DIN-rail, 3 voltage channels, 3 CTs, 2 relays, 4 buttons, 4 LEDs, RS‑485, USB‑C |
| Controller | MicroPLC, MiniPLC, or any Modbus RTU master |
| 24 VDC Power (SELV) | Regulated 24 V DC @ ~100–200 mA |
| RS‑485 Cable | Twisted pair for A/B + COM/GND; external 120 Ω end-termination |
| USB‑C Cable | For WebConfig setup via Chromium browser (Chrome/Edge) |
| Software | Web browser (Web Serial enabled), ConfigToolPage.html |
| Field Wiring | L1/L2/L3/N/PE → voltage inputs, CT1/2/3 → external CTs |
| Load Wiring | Relay outputs (NO/COM/NC); observe relay max rating and use snubbers on inductive loads |
| Isolation Domains | GND (logic) ≠ GND_ISO (metering); never bond these directly |
| Tools | Torque screwdriver, ferrules, USB-capable PC, 120 Ω terminators if needed |
Quick Path
① Mount → ② wire 24 VDC + RS‑485 (A/B/COM) → ③ connect USB‑C → ④ launch WebConfig →
Set Address/Baud → assign Inputs/Relays/LEDs → confirm data → ⑤ disconnect USB → hand control to Modbus master.
The ENM‑223‑R1 uses 24 V DC input for its interface domain and internally isolates metering circuits.
V+ and 0VOnly voltage inputs (Lx-N) and CTs connect to the isolated domain.
| Terminals | Description |
|---|---|
A, B |
Differential signal pair (twisted/shielded) |
COM/GND |
Logic reference (tie GNDs if on separate supplies) |
| Setting | Value |
|---|---|
| Modbus Address | 3 |
| Baud Rate | 19200 |
| Format | 8N1 |
| Address Range | 1–247 |
🧷 Reversed A/B will cause CRC errors — check if no response.
Purpose: Web-based configuration tool over native USB Serial. Supports:
tools/ConfigToolPage.html⚠️ If Connect is greyed out: check browser support, OS permissions, and close any other apps using the port.
Use diagrams and explain:
The ENM‑223‑R1 is configured using the browser‑based WebConfig Tool
(tools/ConfigToolPage.html) over USB‑C.
No drivers or software installation is required — configuration happens directly via Web Serial API (Chrome/Edge).

1–255 (default = 3)9600 / 19200 / 38400 / 57600 / 115200 (default = 19200)
0 = algorithmic (P = P1 + P2 + P3)1 = absolute (P = |
P1 | + | P2 | + | P3 | ) |

The ENM has 4 measurement channels: L1, L2, L3, and Totals.
Each channel supports:
You can configure:
Acknowledgment:
610–613)💡 ENM has no digital inputs (DIs). These rules are “virtual inputs” based on real-time metering data.

Each of the two onboard SPDT relays can be configured independently.
Options:
| Setting | Description |
|---|---|
| Enabled at Power-On | Relay state after boot (on/off) |
| Inverted (active-low) | Affects both relays; sets low = ON |
| Mode | None, Modbus Controlled, or Alarm Controlled |
| Toggle | Manually toggle the relay from the UI |
| Alarm Control Options | Select Channel: L1–L3 or Totals and which kinds to follow: Alarm / Warning / Event |
In Alarm Controlled mode, direct Modbus writes may be blocked when an alarm is active.

Each button can be mapped to:
NoneToggle Relay 1/2Toggle LED 1–4Override Relay 1/2 (hold 3s)
Each LED has:
Steady (when active) or Blink (when active)Override R1/R2Any (A|W|E) — a combined indicator per channel💡 Use
Override R1as LED 1 source to give a clear local override status.

Live Meter View:
Energies:
Use this screen to verify CT orientation, load phase mapping, and live alarm behavior during commissioning.
V+ / GND (top left terminals)PE / N / L1 / L2 / L3
CT1/CT2/CT3 with correct ± polarity (1 V or 333 mV RMS)
COM/NO/NC
👉 See: Installation & Quick Start
tools/ConfigToolPage.html in Chrome/Edge👉 See: WebConfig UI
👉 See: Modbus RTU Communication & Integration Guide
| Area | What to Check |
|---|---|
| LEDs | PWR = ON; TX/RX = blink during comms |
| Voltage | L1–L3 read ~230 V (or phase-neutral voltage) |
| Current |
System Diagram
|
MCU Pinout
|
Field Board Terminal Map
|
MCU Board Layout
|
💡 Note: Pinouts correspond to hardware revision R1. Terminals are pluggable 5.08 mm pitch (26–12 AWG, torque 0.5–0.6 Nm).
| Interface | Qty | Description |
|---|---|---|
| Voltage Inputs | 3 | L1 / L2 / L3–N, 85–265 V AC via precision divider to ATM90E32AS metering IC |
| Current Inputs | 3 | CT1–CT3, external 333 mV / 1 V RMS split-core CTs |
| Relay Outputs | 2 | SPDT dry contact, HF115F series, opto-driven; 5 A @ 250 VAC / 30 VDC (module limit) |
| User LEDs | 4 | Assignable status / override indicators (GPIO18–21) |
| Buttons | 4 | Momentary tactile switches (GPIO22–25) |
| RS-485 | 1 | A/B/COM, Modbus RTU, MAX485 transceiver |
| USB-C | 1 | Native USB 2.0 (Web Serial + firmware flashing), ESD-protected |
| Power Input | 1 | 24 V DC (22–28 V) logic supply, reverse & surge protected |
| Parameter | Min | Typ | Max | Unit | Notes |
|---|---|---|---|---|---|
| Supply Voltage (V+) | 22 | 24 | 28 | V DC | SELV; reverse / surge protected input |
| Power Consumption | – | 1.85 | 3.0 | W | Module only, no external loads |
| Logic Rails | – | 3.3 / 5 | – | V | Buck (AP64501) + LDO (AMS1117-3.3) |
| Isolated Sensor Rails | – | +12 / +5 | – | V | From B0505S-1WR3 isolated DC-DC |
| Voltage Inputs | 85 | – | 265 | V AC | Divided to ATM90E32AS AFE |
| Current Inputs | – | 1 / 0.333 | – | V RMS | External CTs |
| Relay Outputs | – | – | 5 | A | SPDT; 250 VAC/30 VDC; varistor + snubber recommended |
| RS-485 Bus | – | 115.2 | – | kbps | MAX485; short-circuit limited; fail-safe bias |
| USB-C Port | – | 5 | 5.25 | V DC | Native USB; ESD protected |
| Operating Temp. | 0 | – | 40 | °C | ≤ 95 % RH non-condensing |
| Isolation (DC-DC) | – | 1.5 | 3.0 | kV DC | Metering domain via B0505S-1WR3 |
| Isolation (Digital) | – | 5.0 | – | kV RMS | ISO7761 6-ch isolator between MCU ↔ AFE |
🧩 Values validated from schematics and manufacturer datasheets for ATM90E32AS, ISO7761, B0505S-1WR3, HF115F, AP64501.
| Block / Label | Pin(s) (left→right) | Function / Signal | Limits / Notes |
|---|---|---|---|
| POWER | V+, 0V | 24 V DC SELV input | Reverse / surge protected |
| VOLTAGE INPUT | PE, N, L1, L2, L3 | AC sensing (85–265 V AC) | Isolated domain |
| CT INPUT | CT1+, CT1–, CT2+, CT2–, CT3+, CT3– | External CT (333 mV / 1 V RMS) | Shielded pairs recommended |
| RS-485 | A, B, COM | Modbus RTU bus | Terminate 120 Ω at ends |
| RELAY 1 | NO, C, NC | SPDT dry contact | 5 A max @ 250 VAC/30 VDC |
| RELAY 2 | NO, C, NC | SPDT dry contact | 5 A max @ 250 VAC/30 VDC |
| USB-C | D+, D–, VBUS, GND | Web Serial / Setup | Not for field mount |
| LED / BTN Interface | – | Internal header MCU ↔ Field Board | Service only |

| Property | Specification |
|---|---|
| Mounting | DIN rail EN 50022 (35 mm) |
| Material / Finish | PC / ABS V-0, matte light gray + smoke panel |
| Dimensions (L × W × H) | 70 × 90.6 × 67.3 mm (9 division units) |
| Weight | ~420 g |
| Terminals | 300 V / 20 A / 26–12 AWG (2.5 mm²) / torque 0.5–0.6 Nm / pitch 5.08 mm |
| Ingress Protection | IP20 (EN 60529) |
| Operating Temp. | 0–40 °C / ≤95 % RH (non-condensing) |

| Standard / Directive | Description |
|---|---|
| Ingress Rating | IP20 (panel mount only) |
| Altitude Limit | ≤ 2000 m |
| Environment | RoHS / REACH compliant |
The ENM‑223‑R1 communicates over RS‑485 (Modbus RTU) and supports:
The device acts as a Modbus Slave and can be polled by a PLC, SCADA, ESPHome, or Home Assistant system.
| Setting | Value |
|---|---|
| Default Address | 3 (configurable: 1–255) |
| Baud Rate | 19200 8N1 (configurable) |
| Physical Layer | RS‑485 (half-duplex, A/B/COM) |
| Function Codes | 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x10 |
| Termination | External 120 Ω at bus ends |
| Fail-safe Bias | Required on master side |
📌 Use the WebConfig tool over USB‑C to set Modbus address and baud rate.
| Address | Type | Metric | Unit | Scaling |
|---|---|---|---|---|
| 100–102 | U16 | Voltage L1/L2/L3 | V | ×0.01 |
| 110–112 | U16 | Current L1/L2/L3 | A | ×0.001 |
| 200–207 | S32 | Active Power (L1–3, Totals) | W | 1 |
| 210–217 | S32 | Reactive Power (L1–3, Totals) | var | 1 |
| 220–227 | S32 | Apparent Power (L1–3, Totals) | VA | 1 |
| 240–243 | S16 | Power Factor L1–3, Total | – | ×0.001 |
| 244–246 | S16 | Phase Angle L1–3 | ° | ×0.1 |
| 250 | U16 | Frequency | Hz | ×0.01 |
| 251 | S16 | Temperature (internal) | °C | 1 |
| Address | Type | Energy Type | Phase / Total | Unit |
|---|---|---|---|---|
| 300–307 | U32 | Active Energy (+ import) | A/B/C/Totals | Wh |
| 308–315 | U32 | Active Energy (− export) | A/B/C/Totals | Wh |
| 316–323 | U32 | Reactive Energy (+ inductive) | A/B/C/Totals | varh |
| 324–331 | U32 | Reactive Energy (− capacitive) | A/B/C/Totals | varh |
| 332–339 | U32 | Apparent Energy | A/B/C/Totals | VAh |
Energy values are 32-bit unsigned integers (Hi/Lo word pairs).
| Address | Type | Description | Range / Units |
|---|---|---|---|
| 400 | U16 | Sample Interval | 10–5000 ms |
| 401 | U16 | Line Frequency | 50 or 60 Hz |
| 402 | U16 | Sum Mode | 0 = algorithmic 1 = absolute |
| 403 | U16 | Ucal Gain | 1–65535 |
| 410–420 | U16 | Ugain A/B/C | 16-bit |
| 421–431 | S16 | Uoffset A/B/C | 16-bit |
| 440–450 | U16 | Igain A/B/C | 16-bit |
| 451–461 | S16 | Ioffset A/B/C | 16-bit |
| 499 | U16 | Factory Reset Trigger | Write 1 to reset |
| Address | Description |
|---|---|
| 600 | Relay 1 Control (ON/OFF) |
| 601 | Relay 2 Control (ON/OFF) |
| 610–613 | Alarm Acknowledgment (L1–L3, Totals) |
| Address | Description |
|---|---|
| 500–503 | LED Status (U.1–U.4) |
| 520–523 | Button Press (1–4) |
| 540–541 | Relay State (1–2) |
| 560–571 | Alarm/Warning/Event flags |
| Metric | Register Type | Scale Factor |
|---|---|---|
| Voltage (V) | Input Register | ÷100 |
| Current (A) | Input Register | ÷1000 |
| Power Factor | Input Register | ÷1000 |
| Frequency (Hz) | Input Register | ÷100 |
| Angle (°) | Input Register | ÷10 |
| Energy (Wh) | 32-bit Input | 1 |
🛠 To reduce bus collisions, stagger multiple ENMs on a shared RS‑485 bus using different poll intervals and address spacing.
modbus_controller:
- id: enm223
address: 3
modbus_id: rtu_bus
update_interval: 1s
sensor:
- platform: modbus_controller
modbus_controller_id: enm223
name: "Urms L1"
register_type: read
address: 100
value_type: U_WORD
unit_of_measurement: "V"
accuracy_decimals: 2
filters:
- multiply: 0.01
switch:
- platform: modbus_controller
modbus_controller_id: enm223
name: "Relay 1"
register_type: coil
address: 600
The HomeMaster controller (MiniPLC or MicroPLC) running ESPHome acts as the Modbus RTU master over RS‑485. It polls one or more ENM‑223‑R1 modules and publishes all sensors, relays, LEDs, and alarms into Home Assistant.
No Home Assistant add-ons are required — all logic runs on the ESPHome controller.
LED mappings, alarm logic, and override behavior are configured on the ENM module (via WebConfig). Home Assistant only reacts to exposed states.
uart:
id: uart1
tx_pin: 17
rx_pin: 16
baud_rate: 19200
stop_bits: 1
modbus:
id: rtu_bus
uart_id: uart1
modbus_controller:
- id: enm223_1
address: 4
modbus_id: rtu_bus
update_interval: 1s
packages:
enm223_1:
url: https://github.com/isystemsautomation/homemaster-dev
ref: main
files:
- path: ENM-223-R1/Firmware/default_enm_223_r1_plc.yaml
vars:
enm_id: enm223_1
enm_address: 4
enm_prefix: "ENM #1"
uart: and modbus: blockspackages: block (as shown) and set enm_address from WebConfigswitches for relay, override, and ack actionsVAh Total or AP TotalBoot/Reset combinations:
These combinations are handled in hardware. Use them when flashing or manually rebooting the module.
🧭 Button layout reference:

#include <Arduino.h>
#include <SPI.h>
#include <SimpleWebSerial.h>
#include <Arduino_JSON.h>
#include <LittleFS.h>
#include <math.h>
#include <limits>
default_enm_223_r1.ino from /firmware/| Symptom | Fix or Explanation |
|---|---|
| Relay won’t activate | May be in override; check relay logic mode |
| RS-485 not working | A/B reversed or un-terminated bus |
| LED doesn’t light up | Reassign in WebConfig or check GPIO18–21 |
| Button unresponsive | Test using WebConfig > Button state live |
| CRC Errors | Confirm baud, address, and wiring (A/B swap) |
| Negative Power Reading | Flip CT or check phase/CT alignment |
Licensing
This project uses a hybrid licensing model.
Hardware
Hardware designs (schematics, PCB layouts, BOMs) are licensed under: CERN-OHL-W v2
Firmware & ESPHome Integration
All firmware, ESPHome configurations, and software components are licensed under: MIT License
This ensures full compatibility with ESPHome and Home Assistant while protecting hardware designs.
See LICENSE files in each directory for full terms.
The following key project resources are included in this repository:
🧠 Firmware (Arduino/PlatformIO)
firmware/default_enm_223_r1.ino
Core firmware implementing Modbus RTU, alarm logic, relays, LED control, overrides, and WebConfig support.
🧰 WebConfig Tool
tools/ConfigToolPage.html
HTML-based USB Web Serial interface for live configuration, calibration, alarm setup, and logic assignment.
🖼 Images & UI Diagrams
Images/
Contains front-panel photos, system diagrams, wiring illustrations, and screenshots from WebConfig UI.
📐 Hardware Schematics
Schematics/
Includes PDF schematics for Field Board and MCU Board — ideal for developers, reviewers, or third-party modders.
📄 Datasheets & Manuals
ENM-223-R1 Datasheet.pdf
Covers full electrical and mechanical specs, terminal layout, block diagram, and pinout.
📦 ESPHome YAML Templates
ENM223R1_ESPHome_Integration_Guide.md
Ready-to-use packages: block for ESPHome controllers, with sensors, relays, alarms, override logic, and Home Assistant tips.
🔁 Latest releases can also be found in the Releases tab or in the
Firmware/directory.
If you need help using or configuring the ENM‑223‑R1 module, the following support options are available:
🧰 WebConfig Tool (USB-C)
Configure the module directly from your browser — no drivers or software required.
📘 Official Support Portal
Includes setup guides, firmware help, diagnostics, and contact form.