Initial commit: Home automation docs and CODESYS project

- Reorganized project: codesys/, docs/codesys|redesign|integration|reference/, scripts/
- CODESYS project and exports in codesys/
- Documentation index in docs/README.md
- Redesign and light naming configuration
- Water boiler control and safety design

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-07 21:52:46 +02:00
commit bf7bd56fe7
32 changed files with 73698 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
# CODESYS Project Analysis
## Overview
This document contains information extracted from the CODESYS project export file (`Home_Automation.export`).
## Device Information
- **Device Name**: `codesys-home`
- **CODESYS Version**: 4.15.0.0
- **Platform**: CODESYS Control for Raspberry Pi MC SL
- **SDK Version**: 3.5.21.0
- **Order Number**: 2302000009
## Hardware Configuration
### EtherCAT Network
- **EtherCAT Master**: Version 4.9.0.0
- **EtherCAT Task**: `EtherCAT_Task`
### EtherCAT Devices
1. **EK1100** - EtherCAT Coupler (2A E-Bus)
- Vendor: Beckhoff Automation GmbH & Co. KG
- Order Number: EK1100
- Function: EtherCAT coupler connecting to E-Bus modules
2. **EL1809** - 16Ch. Digital Input 24V, 3ms
- Vendor: Beckhoff Automation GmbH & Co. KG
- Order Number: EL1809
- Function: 16-channel digital input module
- Channels: 16 digital inputs (Channels 1-16)
3. **Output Module** (Likely EL2004 or similar)
- 16 output channels configured
- Channel addresses: 16#1A00 through 16#1A0F (Channels 1-16)
## Network Variables
CODESYS communicates with Node-RED using UDP-based network variables.
### Variables Sent to Node-RED (NVL_Sender)
**List Identifier**: 1
**Protocol**: UDP
**Task**: EtherCAT_Task
**Transmission**: Cyclic
**Interval**: T#50ms
**Minimum Gap**: T#20ms
**Structure**: `struct_lights` containing light states for each room:
| Variable Name | Type | Description |
|--------------|------|-------------|
| `l_masterBedroom` | struct_lights | Master bedroom lights |
| `l_masterBathroom` | struct_lights | Master bathroom lights |
| `l_bedroom_1` | struct_lights | Bedroom 1 lights |
| `l_bedroom_2` | struct_lights | Bedroom 2 lights |
| `l_bathroom` | struct_lights | Bathroom lights |
| `l_hallway` | struct_lights | Hallway lights |
| `l_pantry` | struct_lights | Pantry lights |
| `l_kitchen` | struct_lights | Kitchen lights |
| `l_livingRoom` | struct_lights | Living room lights |
| `l_dinningRoom` | struct_lights | Dining room lights |
| `l_entrance` | struct_lights | Entrance lights |
| `l_guestWc` | struct_lights | Guest WC lights |
| `l_outVeranda` | struct_lights | Outdoor veranda lights |
| `l_outFront` | struct_lights | Outdoor front lights |
| `l_outSide` | struct_lights | Outdoor side lights |
| `l_outBack` | struct_lights | Outdoor back lights |
### Variables Received from Node-RED (NVL_Receiver)
**List Identifier**: 3
**Protocol**: UDP
**Task**: EtherCAT_Task
**Transmission**: Cyclic
**Interval**: T#50ms
**Minimum Gap**: T#20ms
**Import File**: `C:\Users\NearchosParaskeva\OneDrive - individual\Codesys_Home_Automation\NVL_Receiver.gvl`
**Structure**: `struct_switches` containing switch states for each room:
| Variable Name | Type | Description |
|--------------|------|-------------|
| `masterBedroom` | struct_switches | Master bedroom switches |
| `masterBathroom` | struct_switches | Master bathroom switches |
| `bedroom_1` | struct_switches | Bedroom 1 switches |
| `bedroom_2` | struct_switches | Bedroom 2 switches |
| `bathroom` | struct_switches | Bathroom switches |
| `hallway` | struct_switches | Hallway switches |
| `pantry` | struct_switches | Pantry switches |
| `kitchen` | struct_switches | Kitchen switches |
| `livingRoom` | struct_switches | Living room switches |
| `dinningRoom` | struct_switches | Dining room switches |
| `entrance` | struct_switches | Entrance switches |
| `guestWc` | struct_switches | Guest WC switches |
| `outVeranda` | struct_switches | Outdoor veranda switches |
| `outFront` | struct_switches | Outdoor front switches |
| `outSide` | struct_switches | Outdoor side switches |
| `outBack` | struct_switches | Outdoor back switches |
## Program Structure
### Main Program (PLC_PRG)
- **Type**: Program
- **Language**: Structured Text (ST)
- **Function Blocks Used**: `fb_switch`
- **Instances**:
- `masterBedroom: fb_switch`
### Function Blocks
- **fb_toogleButton**: Toggle button function block
- **fb_switch**: Switch control function block
### Variables Used in Logic
From the program code, the following variables are referenced:
- `lights.l_1`, `lights.l_2`, `lights.l_3`, `lights.l_4`, `lights.l_5`, `lights.l_6`
- `switches.sw_1`, `switches.sw_2`, `switches.sw_3`, `switches.sw_4`, `switches.sw_5`, `switches.sw_6`
- `switches.all_off`
- `switches.all_on`
## Room Configuration
The system controls lighting for 15 rooms/areas:
1. Master Bedroom
2. Master Bathroom
3. Bedroom 1
4. Bedroom 2
5. Bathroom
6. Hallway
7. Pantry
8. Kitchen
9. Living Room
10. Dining Room
11. Entrance
12. Guest WC
13. Outdoor Veranda
14. Outdoor Front
15. Outdoor Side
16. Outdoor Back
## I/O Mapping
### Inputs (EL1809)
- 16 digital input channels
- Likely used for local switch inputs or status feedback
### Outputs (16 channels, likely EL2004)
- 16 digital output channels (16#1A00 - 16#1A0F)
- Used to control relay outputs for lighting
**Note**: The exact mapping between relay outputs and rooms needs to be determined from the program logic or wiring documentation.
## Libraries Used
- **IoStandard** (System)
- **SM3_Basic** (3S - Smart Software Solutions GmbH)
- **SM3_CNC** (3S - Smart Software Solutions GmbH)
- **3SLicense** (CODESYS)
- **SM3_CamBuilder** (CODESYS)
- **SM3_Robotics** (CODESYS)
- **SM3_Robotics_Visu** (CODESYS)
- **SM3_Transformation** (CODESYS)
- **Standard** (System)
- **CmpLog** (System)
## Task Configuration
- **EtherCAT Task**: Used for EtherCAT communication and network variable updates
- **Update Rate**: 50ms (cyclic transmission)
## Notes
- The project uses structured data types (`struct_lights`, `struct_switches`) for organizing room data
- Network variables are packed and transmitted via UDP
- The system appears to support both indoor and outdoor lighting control
- Water boiler control mentioned in documentation was not found in the export - may be in a separate module or not yet implemented
---
**Analysis Date**: January 27, 2026
**Source File**: `Home_Automation.export`
**Export Format**: CODESYS XML