- 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>
109 lines
5.3 KiB
Markdown
109 lines
5.3 KiB
Markdown
# System Architecture
|
|
|
|
## Overview
|
|
|
|
The home automation system uses a distributed architecture with multiple components communicating over network protocols.
|
|
|
|
## Component Diagram
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Physical Layer │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Zigbee Switches │ Relays │ Water Boiler │ Lights │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│
|
|
│
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Control Layer │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ CODESYS │◄────►│ Node-RED │ │
|
|
│ │ (Raspberry │ │ │ │
|
|
│ │ Pi) │ │ │ │
|
|
│ └──────┬───────┘ └──────┬───────┘ │
|
|
│ │ │ │
|
|
│ │ │ │
|
|
│ ┌──────▼───────┐ ┌──────▼───────┐ │
|
|
│ │ EtherCAT │ │ MQTT │ │
|
|
│ │ IO Card │ │ Broker │ │
|
|
│ └──────────────┘ │ (LXC) │ │
|
|
│ └──────┬───────┘ │
|
|
│ │ │
|
|
│ ┌──────▼───────┐ │
|
|
│ │ Zigbee2MQTT │ │
|
|
│ └──────┬───────┘ │
|
|
│ │ │
|
|
│ ┌──────▼───────┐ │
|
|
│ │ Home │ │
|
|
│ │ Assistant │ │
|
|
│ └──────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Communication Flow
|
|
|
|
### Light Switch Control Flow
|
|
|
|
1. **User Action**: Physical Zigbee switch is pressed
|
|
2. **Zigbee2MQTT**: Receives Zigbee message, converts to MQTT
|
|
3. **MQTT Broker**: Routes message to subscribers
|
|
4. **Node-RED**: Receives MQTT message, processes automation logic
|
|
5. **CODESYS**: Node-RED sends network variable to CODESYS
|
|
6. **EtherCAT IO**: CODESYS activates relay via EtherCAT
|
|
7. **Physical Device**: Relay controls light
|
|
|
|
### Water Boiler Control Flow
|
|
|
|
1. **Trigger**: Time-based, sensor-based, or manual trigger
|
|
2. **Node-RED/Home Assistant**: Processes automation logic
|
|
3. **CODESYS**: Receives control command via network variable
|
|
4. **EtherCAT IO**: CODESYS activates relay for boiler
|
|
5. **Water Boiler**: Receives control signal
|
|
|
|
## Protocols Used
|
|
|
|
- **EtherCAT**: Industrial communication between CODESYS and IO card
|
|
- **MQTT**: Message queuing for device communication
|
|
- **Zigbee**: Wireless mesh network for switches
|
|
- **Network Variables**: CODESYS to Node-RED communication
|
|
- **HTTP/REST**: Home Assistant API and Node-RED HTTP nodes
|
|
|
|
## Data Flow
|
|
|
|
### Inputs
|
|
- Zigbee switch states
|
|
- Sensor data (if applicable)
|
|
- Time-based triggers
|
|
- Manual commands from Home Assistant
|
|
|
|
### Processing
|
|
- Node-RED flows for automation logic
|
|
- CODESYS control logic
|
|
- Home Assistant automations
|
|
|
|
### Outputs
|
|
- Relay control signals
|
|
- Light states
|
|
- Water boiler control
|
|
- Dashboard updates
|
|
|
|
## Security Considerations
|
|
|
|
- MQTT authentication (to be documented)
|
|
- Network isolation (to be documented)
|
|
- CODESYS access control (to be documented)
|
|
- Zigbee network security (to be documented)
|
|
|
|
## Redundancy and Reliability
|
|
|
|
- [ ] Backup procedures
|
|
- [ ] Failover mechanisms
|
|
- [ ] Error recovery
|
|
- [ ] Monitoring and alerting
|
|
|
|
---
|
|
|
|
**Status**: Initial structure - needs detailed information to complete
|