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.
Firmware Version: 2025-10 snapshot
HOMEMASTER – Modular control. Custom logic.

The DIO-430-R1 is a configurable smart digital I/O module designed for digital input monitoring and relay-based output control in building automation, lighting, HVAC, alarms, and general control systems.
It offers 4 opto-isolated digital inputs, 3 high-current SPDT relays, 3 user buttons, and 3 configurable user LEDs. All I/O channels are individually configurable, allowing flexible logic such as toggle, pulse, manual override, and alarm indication.
It connects via RS-485 (Modbus RTU) to a MicroPLC, MiniPLC, or any compatible controller, and can also integrate with Home Assistant (ESPHome) or SCADA/PLC systems.
Configuration and diagnostics are performed through a driverless Web Serial interface via USB-C, using the browser-based WebConfig Tool. The module supports both master-controlled and standalone local logic modes.
| Subsystem | Qty | Description |
|---|---|---|
| Digital Inputs | 4 | Opto-isolated, dry contact compatible, noise-protected |
| Relays | 3 | SPDT (NO/NC), 16 A rated, dry contacts |
| LEDs | 3 | Configurable: Steady or Blink modes, linked to relays |
| Buttons | 3 | User-configurable for override or reset |
| Modbus RTU | Yes | RS-485 interface (Configurable: Addr 1–255, 9600–115200 baud) |
| USB-C | Yes | WebConfig tool access via Web Serial (Chrome/Edge) |
| Power | 24 V DC | Fused input, reverse-polarity and surge protected |
| MCU | RP2350 | Dual-core, with QSPI flash, USB, UART, LittleFS |
| Protection | TVS, PTC | ESD, surge, and short-circuit protection on I/O and power |
The module communicates over the RS-485 Modbus RTU bus, using A/B differential lines and a shared COM/GND reference. It supports poll-based communication, where a master device reads input states and writes relay commands.
All configuration — including input-to-relay mapping, LED modes, and button logic — is stored persistently in internal flash via LittleFS and can be changed live through USB-C + WebConfig.
Factory default communication settings:
319200None1The module’s logic (input→relay mapping, LED modes, button behavior) is stored persistently in internal flash via LittleFS, and settings can be changed live using USB-C + WebConfig.
System overview, board callouts, and pin mapping:




| Interface | Qty | Description |
|---|---|---|
| Digital Inputs | 4 | Galvanically isolated (ISO1212 class). Supports dry contacts or 24 V signals. PTC + TVS per channel. |
| Relay Outputs | 3 | SPDT (NO/NC/COM), 16 A dry contacts. Use RC/MOV snubbers or interposing contactors for inductive/mains loads. |
| User LEDs | 3 | Configurable (Steady/Blink). Follow relay or logic status. |
| Buttons | 3 | Momentary. Configurable for relay override/toggle. |
| RS-485 (Modbus RTU) | 1 | A/B/COM terminals. Daisy-chain topology. 120 Ω termination at both ends. |
| USB-C | 1 | Web Serial setup, diagnostics, and firmware flashing (ESD-protected). |
| Power Input | 1 | 24 V DC SELV. Reverse-polarity + surge protected. |
Electrical Ratings
| Parameter | Min | Typ | Max | Unit | Notes |
|---|---|---|---|---|---|
| Supply Voltage | 22 | 24 | 28 | V DC | SELV/PELV input |
| Logic Consumption | – | 1.5 | 3.0 | W | Excludes relay loads |
| Digital Input Range | 0 | 24 | 30 | V DC | Isolated, noise-protected |
| Relay Contact Current | – | – | 16 | A | SPDT dry contacts |
| Relay Contact Voltage | – | – | 250 | V AC | or 30 V DC max |
| RS-485 Data Rate | – | 19.2 | 115.2 | kbps | Default 19200 8N1 |
| USB-C Voltage | 4.75 | 5.0 | 5.25 | V DC | Service only |
| Operating Temp. | 0 | – | 40 | °C | ≤ 95 % RH, non-condensing |
Power budgeting: logic + LEDs + up to 3 relay coils + sensor loads → add ≥ 30 % PSU headroom.
| Block | Pins | Function | Notes |
|---|---|---|---|
| POWER | 0V, V+ | 24 V DC input | Reverse/surge protected |
| RELAY 1-3 | NO, C, NC | SPDT contacts | Add RC/MOV for inductive loads |
| DI 1-4 | INx, GNDx | Isolated digital inputs | 24 V field or dry contact |
| RS-485 | B, A, COM | Modbus RTU bus | Terminate 120 Ω at ends |
| USB-C | D+, D−, VBUS, GND | Setup / Service port | Not for field powering |
None / Toggle / Pulse) and Target (R1–R3 or All).| Property | Specification |
|---|---|
| Mounting | DIN-rail EN 50022 (35 mm) |
| Enclosure | PC/ABS V-0, panel mount |
| Dimensions | 70 × 90.6 × 67.3 mm (W × H × D) |
| Terminals | Pluggable 5.08 mm, 26–12 AWG (≤ 2.5 mm²), 0.5–0.6 Nm |
| Ingress Protection | IP20 (panel interior) |
| Operating Temp | 0–40 °C, ≤ 95 % RH (non-condensing) |

| Standard / Directive | Description |
|---|---|
| Ingress Rating | IP20 (panel-mount only) |
| Altitude | ≤ 2000 m |
| Environmental | RoHS / REACH compliant components |
The DIO‑430‑R1 supports both lighting and motor/pump control — making it ideal for mixed automation tasks in smart homes, greenhouses, HVAC, and industrial setups.
Below are 3 versatile examples combining both types of loads.
Automatically turns ON a staircase light and a circulation pump when motion is detected.
Setup Instructions:
Action = Pulse, Target = Relay 1 (light).Action = Pulse, Target = Relay 2 (pump).Blink, source = Relay 1.Steady, source = Relay 2.Wall-mounted buttons allow users to toggle lights and exhaust fans independently.
Setup Instructions:
Relay 1 override (toggle) → Room LightRelay 2 override (toggle) → Ventilation FanSteady, following respective relays.200–201 for remote control.Lights and irrigation are controlled via digital inputs or remotely from a PLC.
Setup Instructions:
Toggle, Target = Relay 1 → Grow LightPulse, Target = Relay 2 → Irrigation PumpRelay 2 override (toggle) for manual watering.Steady (light status), LED 2 = Blink (pump running).These guidelines apply to the DIO-430-R1 I/O module. Ignoring them may result in equipment damage, system failure, or personal injury.
⚠️ SELV/PELV Domains Only
- The DIO-430-R1 operates entirely within SELV/PELV low-voltage domains (e.g., 24 V DC, RS-485, USB 5 V).
- Do not connect mains voltage to any terminal. Use interposing contactors/PSUs for mains loads.
- Respect isolation boundaries: never bridge logic GND with isolated field grounds (e.g., GND_ISO / FGND).
- Connect sensor returns only to the isolated field ground; connect RS-485 COM/GND only within the same SELV domain.
| Requirement | Detail |
|---|---|
| Qualified Personnel | Installation and servicing must be done by qualified personnel familiar with 24 V control systems and RS-485. |
| Power Isolation | Disconnect the 24 V DC input before wiring. Lockout/tagout where applicable. |
| Environmental Limits | Mount in a clean, sealed enclosure; avoid condensation, conductive dust, or vibration. |
| Grounding | Bond the panel to PE. Keep RS-485 COM/GND shared with the controller side. |
| Voltage Compliance | SELV only on all terminals. Follow relay contact ratings on the product label/datasheet. Use upstream fusing and surge protection. |
| Task | Guidance |
|---|---|
| ESD Protection | Handle by the enclosure/edge only. Use an antistatic wrist strap when the board is exposed. |
| DIN Rail Mounting | Mount securely on 35 mm DIN rail inside an IP-rated cabinet. Leave cable slack for strain relief. |
| Wiring | Use correct wire gauge and torque terminal screws. Separate power, DI, relay, and RS-485 harnesses. |
| Isolation Domains | Respect isolation: do not bridge logic GND to isolated field grounds (e.g., GND_ISO/FGND). Keep analog/sensor returns on the isolated side. |
| Commissioning | Before power-up, verify polarity, relay NO/NC routing, RS-485 A/B orientation and termination. |
| Area | Warning |
|---|---|
| 24 V DC Input | Use a clean, fused SELV supply. Reverse-polarity protection exists but may disable the module when triggered. |
| Sensor Rail | Power sensors from a SELV rail. Observe polarity. Fuse external branches as required. |
| Surge/Noise | In noisy panels, add upstream surge/EMI suppression and keep high-current wiring away from control wiring. |
| Area | Warning |
|---|---|
| Type | Dry contact / 24 V signaling only, per your standard. Do not inject mains or undefined levels. |
| Isolation | Inputs are isolated from logic. Keep sensor returns on the field/isolated domain; do not bond to logic GND. |
| Debounce | Firmware provides debounce, but route away from contactors/VFDs and use shielded/twisted pairs for long runs. |
| Polarity | Configure invert/action in WebConfig; verify state transitions after wiring. |
| Area | Warning |
|---|---|
| Contact Type | SPDT (NO/NC/COM) dry contacts. Follow the contact rating on the device label/datasheet. |
| Inductive Loads | For motors/solenoids/contactors, add an RC snubber or MOV at the load. Consider interposing relays/ contactors for higher power. |
| Separation | Keep relay load wiring physically separate from signal wiring. De-energize before servicing. |
| Verification | After wiring, verify NO/NC behavior and load polarity before enabling automation. |
| Area | Warning |
|---|---|
| Topology | Use twisted pair; daisy-chain (no stubs). Terminate with 120 Ω at both physical ends. |
| Polarity | Maintain A/B polarity consistently. Share COM/GND reference between nodes (same SELV domain). |
| EMC | Route away from VFDs, contactors, and mains bundles. Use shielded cable in high-EMI environments. |
| Protection | Port includes protection, but good wiring practice is still required to avoid transients. |
| Area | Warning |
|---|---|
| Purpose | Setup & maintenance only (WebConfig / firmware). Not intended for powering field devices. |
| ESD/EMI | Avoid hot-plugging in high-EMI areas. Use a grounded service laptop. Disconnect after commissioning. |
| Area | Warning |
|---|---|
| Buttons & LEDs | Buttons can override relays; document operating procedures. Lock out overrides for safety-critical installs. |
| Area | Recommendation |
|---|---|
| Cable Shields | Terminate shields at one end (typically the PLC/controller). Keep runs short and away from high-voltage/EMI sources. |
The DIO-430-R1 joins your system over RS-485 (Modbus RTU). Setup has two parts:
1) Physical wiring, 2) Digital configuration (WebConfig → optional PLC/ESPHome).
| Category | Item / Notes |
|---|---|
| Hardware | DIO-430-R1 — DIN-rail module with 4× DI, 3× SPDT relays, 3× buttons, 3× LEDs, USB-C, RS-485. |
| Controller (master) | HomeMaster MiniPLC/MicroPLC or any Modbus RTU master. |
| 24 VDC PSU (SELV) | Regulated 24 VDC; size for logic + relay coils + sensors; inline panel fuse/breaker. Power input stage includes fuse/TVS/reverse-polarity protection. |
| RS-485 cable | Twisted pair for A/B + COM/GND reference, 120 Ω termination at both ends of the trunk. |
| USB-C cable | For WebConfig via a Chromium browser (service/commissioning). |
| Software | Chromium-based browser with Web Serial (Chrome/Edge). Web page exposes Address/Baud + I/O mapping. |
| Field I/O | Dry contacts to DI1…DI4 (isolated front-end per channel). Relays (NO/NC/COM) drive LV loads or interposing contactors; add RC/MOV snubbers for inductive loads. |
Quick path: mount → wire 24 VDC + RS-485 A/B/COM → connect USB-C → WebConfig: set Address/Baud + map inputs → relays/LEDs → disconnect USB → hand over to controller.
The module uses 24 VDC primary. Onboard regulation provides 5 V → 3.3 V for logic; DI front-end is isolated.
Account for:
Size PSU for worst-case relays + sensors, then add ≥30 % headroom.
Runtime control is via RS-485 (Modbus RTU). USB-C is for local setup/diagnostics (Web Serial).
Physical
Protocol
Checklist
Purpose: Chromium (Chrome/Edge) Web Serial setup/diagnostics page.
Steps
If Connect is disabled: ensure Chromium + serial permission; close other apps that might hold the port.
This section shows typical wiring for power, inputs, relays, RS-485, and the USB-C service port.
⚠️ Work on de-energized equipment only. Use SELV/PELV supplies for logic and field inputs. Mains on relay contacts must be wired by qualified personnel.
Wire the regulated 24 VDC supply to the top POWER terminals: V+ and 0V.

Notes
Each input is isolated. Land the contact/sensor on INx with the paired GNDx return.

Tips
None / Toggle / Pulse), Control target (None / All / R1 / R2 / R3).Relays provide dry SPDT contacts (NO/NC/COM) for switching low-voltage loads or driving an interposing contactor for mains/inductive loads.

Best practices
This module does not export auxiliary 12 V/5 V rails for field devices.
The lower left terminals expose B, A, and COM (GND). Use shielded twisted pair and daisy-chain topology.

Checklist
Use the WebConfig page (USB-C + Chrome/Edge) to set Modbus comms and map I/O. Changes apply immediately and are saved to flash.
Screens shown below are from the DIO-430-R1 WebConfig.

Default values (Addr 3, 19200 8N1) are also noted in the module docs.

Each IN1…IN4 card provides:
None / Toggle / Pulse.None / Control all / Relay 1 / Relay 2 / Relay 3.This matches the firmware’s input options and allows direct mapping from inputs to one or more relays without a PLC.
Tips

For Relay 1–3:
Logic modes in practice
Buttons (3)
None or Relay override (toggle) for Relay 1/2/3. This provides local/manual control without a PLC.User LEDs (3)
Steady or Blink (active when source is ON).https://www.home-master.eu/configtool-dio-430-r1 in Chrome/Edge.None / Toggle / Pulse) / Control target (None / All / R1 / R2 / R3)Steady / Blink) + Activate when (follow a relay)| Area | What to Check | |—|—| | LEDs | PWR = ON; TX/RX blink during RS-485 traffic | | Inputs | Toggling a wall switch/sensor changes INx state in WebConfig/Modbus | | Relays | Coil writes toggle R1–R3; loads switch correctly; snubber installed for inductive loads | | Address/Baud | Controller reads module at the configured address/baud without errors | | Isolation | No unintended bond between logic GND and DI field GNDx |
Role: RTU slave (controller is master)
Defaults: Address 3, 19200 8N1 (change in WebConfig → Modbus)
Addressing shown below uses zero-based offsets (e.g., Holding Reg
40000= offset0).
If your master uses 1-based display (e.g., 40001), add +1 to the register number.
| Type | Range (offsets) | Purpose |
|---|---|---|
| Coils (0x) | 00000…00031 |
Relay commands, device control |
| Discrete Inputs (1x) | 10000…10031 |
DI states, relay echo states |
| Input Registers (3x) | 30000…30031 |
Read-only status (masks, counters) |
| Holding Registers (4x) | 40000…40063 |
Config & runtime parameters (DI actions/targets, relay/LED/button settings, comms) |
| Coil | Name | Description |
|---|---|---|
00000 |
R1_CMD | Relay 1 ON/OFF (write 1/0) |
00001 |
R2_CMD | Relay 2 ON/OFF |
00002 |
R3_CMD | Relay 3 ON/OFF |
00010 |
SAVE_CFG | Persist current settings to flash (write 1) |
00011 |
RESET | Soft reset device (write 1) |
Coils drive relays regardless of input mappings (local buttons still work as overrides).
| DI | Name | Description |
|---|---|---|
10000 |
DI1_STATE | Digital Input 1 (after invert option) |
10001 |
DI2_STATE | Digital Input 2 |
10002 |
DI3_STATE | Digital Input 3 |
10003 |
DI4_STATE | Digital Input 4 |
10010 |
R1_STATE | Relay 1 actual state (echo) |
10011 |
R2_STATE | Relay 2 actual state |
10012 |
R3_STATE | Relay 3 actual state |
| Reg | Name | R/W | Encoding | Notes |
|---|---|---|---|---|
40000 |
MODEL_ID | R | u16 | e.g., 0x0430 (DIO-430) |
40001 |
FW_BUILD | R | YYYYMM | Snapshot / build tag |
40002 |
MB_ADDR | R/W | u16 | 1…255 |
40003 |
MB_BAUD | R/W | enum | 0=9600,1=19200,2=38400,3=57600,4=115200 |
40004 |
MB_PARITY | R/W | enum | 0=None,1=Even,2=Odd (default 0) |
Action codes: 0=None, 1=Toggle (latched), 2=Pulse (momentary)
Target codes: 4=None, 0=Control all, 1=R1, 2=R2, 3=R3
| Reg | Name | R/W | Encoding | Notes |
|---|---|---|---|---|
40010 |
DI_EN_MASK | R/W | bitmask | bit0..3 → IN1..IN4 enable |
40011 |
DI_INV_MASK | R/W | bitmask | bit0..3 → IN1..IN4 invert |
40012 |
DI1_ACTION | R/W | u16 enum | 0/1/2 |
40013 |
DI2_ACTION | R/W | u16 enum | 0/1/2 |
40014 |
DI3_ACTION | R/W | u16 enum | 0/1/2 |
40015 |
DI4_ACTION | R/W | u16 enum | 0/1/2 |
40016 |
DI1_TARGET | R/W | u16 enum | 4/0/1/2/3 |
40017 |
DI2_TARGET | R/W | u16 enum | 4/0/1/2/3 |
40018 |
DI3_TARGET | R/W | u16 enum | 4/0/1/2/3 |
40019 |
DI4_TARGET | R/W | u16 enum | 4/0/1/2/3 |
| Reg | Name | R/W | Encoding | Notes |
|---|---|---|---|---|
40020 |
RLY_EN_MASK | R/W | bitmask | bit0..2 → R1..R3 enable |
40021 |
RLY_INV_MASK | R/W | bitmask | invert coil logic (rarely used) |
40022 |
BTN1_ACTION | R/W | u16 enum | 0=None, 5=R1 toggle, 6=R2 toggle, 7=R3 toggle |
40023 |
BTN2_ACTION | R/W | u16 enum | as above |
40024 |
BTN3_ACTION | R/W | u16 enum | as above |
40025 |
LED_MODE | R/W | bit-packed | bits0..1 = LED1 (0=Steady,1=Blink), bits2..3 = LED2, bits4..5 = LED3 |
| Reg | Name | R/W | Encoding | Notes |
|---|---|---|---|---|
40030 |
UPTIME_S_LO | R | u16 | lower 16 bits |
40031 |
UPTIME_S_HI | R | u16 | upper 16 bits (32-bit seconds) |
40032 |
ERR_CODE | R | u16 | 0=OK; non-zero = last error |
40033 |
FLAGS | R | bitmask | e.g., cfg-dirty, wd-reset (implementation-specific) |
Note: All configuration is usually done via WebConfig. The registers above are provided to enable controller-side provisioning and telemetry when needed.
| Reg | Name | Encoding | Description |
|---|---|---|---|
30000 |
DI_STATE_MASK | bitmask | bit0..3 → IN1..IN4 (post-invert) |
30001 |
RLY_STATE_MASK | bitmask | bit0..2 → R1..R3 |
30002 |
BTN_STATE_MASK | bitmask | bit0..2 → B1..B3 (momentary) |
30003 |
LED_STATE_MASK | bitmask | bit0..2 → LED1..LED3 active |
1 to Coil 00001 (R2_CMD) → Relay 2 ON0 to the same coil → Relay 2 OFF40010 (DI_EN_MASK) → set bit2 = 1 (enable IN3)40011 (DI_INV_MASK) → set bit2 = 0 (no invert)40014 (DI3_ACTION) → write 1 (Toggle)40018 (DI3_TARGET) → write 1 (R1)40023 (BTN2_ACTION) → write 6 (R2 toggle)40025 (LED_MODE): set LED1 field to Blink (value 1)40002 (MB_ADDR) → new address (1…255)40003 (MB_BAUD) → new enum (e.g., 1 for 19200)00010 (SAVE_CFG) = 1, then 00011 (RESET) = 1RLY_STATE_MASK.Support status: ✔️ Supported via ESPHome
uart+modbus+modbus_controllerand a reusable package.
Module role: Modbus RTU slave on RS-485.
Defaults: Address 3, 19200 8N1 (change in WebConfig).
Use this on the MiniPLC/MicroPLC (ESPHome). It enables the RS-485 bus and imports a ready-made DIO package.
uart:
id: uart_modbus
tx_pin: 17
rx_pin: 16
baud_rate: 19200
parity: NONE
stop_bits: 1
modbus:
id: modbus_bus
uart_id: uart_modbus
packages:
dio1:
url: https://github.com/isystemsautomation/homemaster-dev
ref: main
files:
- path: DIO-430-R1/Firmware/default_dio_430_r1_plc/default_dio_430_r1_plc.yaml
vars:
dio_prefix: "DIO#1" # shown in Home Assistant entity names
dio_id: dio_1 # internal unique id
dio_address: 4 # Modbus address set in WebConfig for this DIO
refresh: 1d
For multiple DIOs, duplicate the
dio1:block (dio2:,dio3:…) with uniquedio_id,dio_prefix, anddio_address.
The package sticks to the Modbus map defined in Section 6 (coils for relays, discrete inputs for DI states, holding/input registers for masks and configuration).
If you prefer not to use the package, you can expose the core points directly:
modbus_controller:
- id: dio430_4
address: 4
modbus_id: modbus_bus
update_interval: 200ms
command_throttle: 100ms
binary_sensor:
# DI1..DI4 as Discrete Inputs (1x offsets 0..3)
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 DI1"
register_type: discrete_input
address: 0
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 DI2"
register_type: discrete_input
address: 1
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 DI3"
register_type: discrete_input
address: 2
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 DI4"
register_type: discrete_input
address: 3
switch:
# Relays as Coils (0x offsets 0..2)
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 Relay 1"
register_type: coil
address: 0
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 Relay 2"
register_type: coil
address: 1
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 Relay 3"
register_type: coil
address: 2
sensor:
# (Optional) LED and Button masks from Input Registers 30003/30002
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 LED Mask"
register_type: input
address: 3
value_type: U_WORD
accuracy_decimals: 0
- platform: modbus_controller
modbus_controller_id: dio430_4
name: "DIO#1 Button Mask"
register_type: input
address: 2
value_type: U_WORD
accuracy_decimals: 0
input_boolean.night_mode is on, force a specific Override ON and release it in the morning.dio_prefix to keep entities readable (DIO#1 Relay 1, DIO#2 DI3, etc.).dio_address in the package matches the WebConfig address.update_interval modest (e.g., 200–500 ms) unless you need faster DI polling.update_interval/command_throttle to reduce collisions.The module exposes a USB device for flashing. All reset/boot actions are done with the front buttons in hardware.
Button layout (front panel):

Combinations
Steps (UF2/IDE)
.uf2 file onto the mounted drive; the module restarts automatically.No factory‑reset function is provided. Configuration remains intact across normal firmware updates.
Board / Toolchain
Required Libraries (typical firmware)
ModbusSerial (or equivalent RTU)Arduino_JSONLittleFSSimpleWebSerial (or equivalent transport for WebConfig)Wire (I²C; if using expanders in forks)Pin Mapping (DIO-430-R1 default firmware)
Build Tips
| Symptom | Checks |
|---|---|
| No Modbus comms | A/B polarity, COM/GND reference, 120 Ω termination, address/baud match, only two end terminators |
| Relays don’t actuate | Relay Enabled in WebConfig, no active Override holding state, coil invert setting, Modbus coil writes acknowledged |
| DI not changing | Wire to INx/GNDx (isolated field side), check Enable/Invert/Action/Target in WebConfig, debounce expectations |
| USB won’t connect | Chrome/Edge with Web Serial, close other serial apps, check cable/port permissions |
| Config not saved | Allow idle for auto‑save or use Save if available; verify LittleFS space |
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.
DIO-430-R1/Firmware/default_dio_430_r1_plc/Schematics/DIO-430-R1-FieldBoard.pdfSchematics/DIO-430-R1-MCUBoard.pdfSchematics/ folder BOM notes for part numbers (e.g., ISO1212, MAX485, HF115F).