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:
108
docs/reference/architecture.md
Normal file
108
docs/reference/architecture.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user