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

173
docs/codesys/codesys.md Normal file
View File

@@ -0,0 +1,173 @@
# CODESYS Configuration
## Overview
CODESYS is an industrial control system running on a Raspberry Pi, managing physical I/O through a Beckhoff EtherCAT IO card.
## Hardware
- **Platform**: Raspberry Pi (CODESYS Control for Raspberry Pi MC SL)
- **CODESYS Version**: 4.15.0.0
- **SDK Version**: 3.5.21.0
- **Device Name**: codesys-home
- **EtherCAT Master**: Version 4.9.0.0
- **EtherCAT Devices**:
- **EK1100**: EtherCAT Coupler (2A E-Bus) - Beckhoff
- **EL1809**: 16Ch. Digital Input 24V, 3ms - Beckhoff (16 input channels)
- **Output Module**: 16 digital output channels (16#1A00 - 16#1A0F)
## Network Variables
CODESYS communicates with Node-RED using network variables. These variables are shared over the network and allow bidirectional communication.
### Variables Sent to Node-RED (NVL_Sender)
**Protocol**: UDP
**Task**: EtherCAT_Task
**List Identifier**: 1
**Transmission**: Cyclic, T#50ms interval
| 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)
**Protocol**: UDP
**Task**: EtherCAT_Task
**List Identifier**: 3
**Transmission**: Cyclic, T#50ms interval
| 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 |
## I/O Configuration
### EtherCAT IO Card
- **EK1100**: EtherCAT Coupler (Beckhoff)
- **EL1809**: 16-channel Digital Input 24V (Beckhoff)
- **Output Module**: 16 digital output channels
- **Scan Rate**: EtherCAT_Task (50ms cyclic)
### Relay Mapping
| Relay # | Device Controlled | Function | Notes |
|---------|-------------------|----------|-------|
| 1 | [To be filled] | [To be filled] | |
| 2 | [To be filled] | [To be filled] | |
| ... | | | |
### Water Boiler Control
- **Relay Assignment**: [To be filled]
- **Control Logic**: [To be filled]
- **Safety Features**: [To be filled]
## Control Logic
### Lighting Control
The lighting control is implemented using the `fb_switch` function block. Each room has one instance that processes switch inputs and generates light control outputs.
**Function Block**: `fb_switch`
- **Input**: `struct_switches` (received from Node-RED)
- Individual switches: `sw_1` through `sw_6`
- Global commands: `all_on`, `all_off`
- **Output**: `struct_lights` (sent to Node-RED)
- Light outputs: `l_1` through `l_6`
**Toggle Button**: `fb_toogleButton`
- Implements toggle functionality with debouncing
- Uses timing functions (TP, TOF) and counters (CTU, CTD)
- Each switch press toggles the corresponding light state
**Per-Room Configuration**:
- Each room can control up to 6 individual lights
- Global commands allow turning all lights on/off in a room
- Switch inputs come from Zigbee switches via Node-RED/MQTT
See [fb_switch Documentation](../redesign/fb_switch-documentation.md) for detailed information.
### Water Boiler Control
[Description of water boiler control logic, schedules, safety features]
## Network Configuration
- **IP Address**: [To be filled]
- **Subnet**: [To be filled]
- **Network Variable Port**: [To be filled]
- **EtherCAT Network**: [To be filled]
## Project Structure
- **Project Location**: `Home_Automation (1).project` (binary format)
- **Program Organization Units (POUs)**:
- **PLC_PRG**: Main program using `fb_switch` function blocks
- **fb_toogleButton**: Toggle button function block
- **fb_switch**: Switch control function block
- **Libraries Used**:
- IoStandard (System)
- SM3_Basic, SM3_CNC, SM3_CamBuilder, SM3_Robotics (3S/CODESYS)
- Standard, CmpLog (System)
### Exporting Project Information
The binary `.project` file cannot be directly analyzed. To extract project information:
1. **Export to XML format** - See [CODESYS Export Guide](codesys-export-guide.md) for detailed instructions
2. **Use the parser script** - Run `scripts/parse-codesys-xml.py` on exported XML files
3. **Manual extraction** - Open in CODESYS IDE and document manually
**Recommended Export:**
- Export as **CODESYS XML (*.export)** for complete project information
- Export as **PLCopen XML (*.xml)** for program structure
## Troubleshooting
### Common Issues
- [Issue 1]: [Solution]
- [Issue 2]: [Solution]
### Debugging
- How to monitor network variables
- How to view I/O states
- Log file locations
---
**Status**: Template - needs configuration details