# Home Automation How home automation works in this house: **services** and **CODESYS** connectivity. ## How it works - **CODESYS** (Raspberry Pi) runs the PLC: lights and water boiler via EtherCAT I/O. - **Node-RED** runs automation logic and talks to CODESYS over **UDP (network variables)**. - **MQTT** broker (LXC) is the message bus. - **Zigbee2MQTT** bridges Zigbee switches to MQTT. - **Home Assistant** is the dashboard and can trigger automations. Flow: Zigbee switch or HA → Node-RED → UDP → CODESYS → EtherCAT → relays/lights or boiler. ## Project layout ``` kkelomatic_home/ ├── codesys/ # CODESYS project and source (PLC logic, NVL) ├── docs/ # Documentation (architecture, services, Codesys) └── scripts/ # parse-codesys-xml.py ``` ## Documentation - **Architecture & setup:** [docs/reference/architecture.md](docs/reference/architecture.md), [setup.md](docs/reference/setup.md) - **Services:** [docs/integration/](docs/integration/) — MQTT, Node-RED, Home Assistant, Zigbee2MQTT - **CODESYS:** [docs/codesys/codesys.md](docs/codesys/codesys.md), [codesys/src/NVL/README.md](codesys/src/NVL/README.md) (connectivity) ## CODESYS connectivity - **NVL_Out** (PLC → Node-RED): light states + boiler status, UDP. - **NVL_In** (Node-RED → PLC): light and boiler commands, UDP. See [codesys/src/NVL/README.md](codesys/src/NVL/README.md) and [nodered-payload.md](codesys/src/NVL/nodered-payload.md) for layout and ports.