256 lines
6.9 KiB
Markdown
256 lines
6.9 KiB
Markdown
# Cassandra RC2 Temperature Control System
|
|
|
|
The Cassandra RC2 is a temperature control system designed for precise thermal management across multiple heat zones. This web interface allows operators to monitor and control various heating elements arranged in zones with support for temperature profiles.
|
|
|
|
## System Architecture
|
|
|
|
The following diagram shows the high-level architecture of the Cassandra RC2 system:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
UI[Web Interface] --> API[API Client]
|
|
API --> CS[Controller Service]
|
|
API --> PS[Profile Service]
|
|
API --> ZS[Zone Service]
|
|
CS --> SS[Storage Service]
|
|
PS --> SS
|
|
ZS --> SS
|
|
SS --> DB[Supabase Database]
|
|
```
|
|
|
|
## Data Model
|
|
|
|
The core data entities in the system are:
|
|
|
|
```mermaid
|
|
erDiagram
|
|
HeatZone ||--o{ Controller : contains
|
|
Controller }|--o| TemperatureProfile : runs
|
|
TemperatureProfile ||--|{ ControlPoint : contains
|
|
|
|
HeatZone {
|
|
string id
|
|
string name
|
|
string description
|
|
}
|
|
|
|
Controller {
|
|
string id
|
|
string name
|
|
number currentTemp
|
|
number targetTemp
|
|
number minTemp
|
|
number maxTemp
|
|
number slaveId
|
|
number updateInterval
|
|
string currentProfile
|
|
boolean isRunning
|
|
string lastUpdated
|
|
string zoneId
|
|
}
|
|
|
|
TemperatureProfile {
|
|
string id
|
|
string name
|
|
string description
|
|
array controlPoints
|
|
number duration
|
|
string createdAt
|
|
string updatedAt
|
|
}
|
|
|
|
ControlPoint {
|
|
number x
|
|
number y
|
|
number handleX
|
|
number handleY
|
|
string type
|
|
}
|
|
```
|
|
|
|
## Component Hierarchy
|
|
|
|
The React component hierarchy for the main interface:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Index[Index Page] --> MainNav[Main Navigation]
|
|
Index --> ZoneCard[Zone Cards]
|
|
ZoneCard --> ZMC[Zone Master Control]
|
|
ZoneCard --> TC[Temperature Controllers]
|
|
Index --> Dialogs[Dialog Components]
|
|
Dialogs --> PD[Profile Dialog]
|
|
Dialogs --> ACD[Add Controller Dialog]
|
|
Dialogs --> ECD[Edit Controller Dialog]
|
|
Dialogs --> AZD[Add Zone Dialog]
|
|
|
|
TC --> Info[Controller Info]
|
|
TC --> TempDisplay[Temperature Display]
|
|
TC --> Controls[Control Buttons]
|
|
|
|
ZMC --> Visualization[Heat Press Visualization]
|
|
ZMC --> ZoneControls[Zone-wide Controls]
|
|
ZMC --> ProfileProgress[Profile Progress]
|
|
```
|
|
|
|
## API Structure
|
|
|
|
The API client provides these main function groups:
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
API[API Client] --> ZoneFunctions[Zone Functions]
|
|
API --> ProfileFunctions[Profile Functions]
|
|
API --> ControllerFunctions[Controller Functions]
|
|
|
|
ZoneFunctions --> getZones[getZones]
|
|
ZoneFunctions --> getZone[getZone]
|
|
ZoneFunctions --> createZone[createZone]
|
|
ZoneFunctions --> deleteZone[deleteZone]
|
|
|
|
ProfileFunctions --> getProfiles[getProfiles]
|
|
ProfileFunctions --> getProfile[getProfile]
|
|
ProfileFunctions --> createProfile[createProfile]
|
|
ProfileFunctions --> updateProfile[updateProfile]
|
|
ProfileFunctions --> deleteProfile[deleteProfile]
|
|
|
|
ControllerFunctions --> getControllers[getControllers]
|
|
ControllerFunctions --> getController[getController]
|
|
ControllerFunctions --> updateController[updateController]
|
|
ControllerFunctions --> startController[startController]
|
|
ControllerFunctions --> stopController[stopController]
|
|
ControllerFunctions --> createController[createController]
|
|
ControllerFunctions --> deleteController[deleteController]
|
|
```
|
|
|
|
## Temperature Control Flow
|
|
|
|
The temperature control system functions as follows:
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
actor User
|
|
participant UI as Web Interface
|
|
participant API as API Client
|
|
participant Storage as Storage Service
|
|
|
|
User->>UI: Set target temperature
|
|
UI->>API: updateController(id, {targetTemp})
|
|
API->>Storage: Save updated controller
|
|
Storage-->>API: Confirmation
|
|
API-->>UI: Updated controller object
|
|
UI-->>User: Display updated temperature
|
|
|
|
User->>UI: Apply temperature profile
|
|
UI->>API: startController(id, profileId)
|
|
API->>Storage: Update controller with profile
|
|
Storage-->>API: Confirmation
|
|
API-->>UI: Updated controller with profile
|
|
UI-->>User: Display profile progress
|
|
|
|
loop While profile is running
|
|
UI->>UI: Calculate temperature based on profile
|
|
UI->>UI: Update controller display
|
|
end
|
|
```
|
|
|
|
## Zone Management
|
|
|
|
Heat zones organize controllers into logical groups:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Zone1[Zone: Top Platen] --> TC1[Controller 1: Top-Front]
|
|
Zone1 --> TC2[Controller 2: Top-Back]
|
|
Zone2[Zone: Bottom Platen] --> TC3[Controller 3: Bottom-Front]
|
|
Zone2 --> TC4[Controller 4: Bottom-Back]
|
|
|
|
subgraph MasterControl[Zone Master Controls]
|
|
SetAll[Set All Temperatures]
|
|
ApplyProfile[Apply Profile to Zone]
|
|
StopAll[Stop All Controllers]
|
|
end
|
|
|
|
Zone1 --- MasterControl
|
|
Zone2 --- MasterControl
|
|
```
|
|
|
|
## Temperature Profiles
|
|
|
|
Temperature profiles define heating patterns over time:
|
|
|
|
```mermaid
|
|
graph LR
|
|
Profile[Temperature Profile] --> Points[Control Points]
|
|
Points --> Bezier[Bezier Curve Calculator]
|
|
Bezier --> Temp[Temperature at Time t]
|
|
|
|
subgraph Timeline
|
|
Start[Start] --> CP1[Control Point 1]
|
|
CP1 --> CP2[Control Point 2]
|
|
CP2 --> CP3[Control Point 3]
|
|
CP3 --> End[End]
|
|
end
|
|
```
|
|
|
|
## User Interface Workflow
|
|
|
|
```mermaid
|
|
stateDiagram
|
|
[*] --> Dashboard
|
|
Dashboard --> ViewZones
|
|
Dashboard --> AddZone
|
|
|
|
ViewZones --> ManageControllers
|
|
ViewZones --> ZoneMasterControl
|
|
|
|
AddZone --> Dashboard
|
|
|
|
ManageControllers --> AddController
|
|
ManageControllers --> EditController
|
|
ManageControllers --> DeleteController
|
|
ManageControllers --> StartController
|
|
ManageControllers --> StopController
|
|
|
|
StartController --> SelectProfile
|
|
SelectProfile --> ProfileRunning
|
|
|
|
ProfileRunning --> StopController
|
|
StopController --> ManageControllers
|
|
|
|
AddController --> ManageControllers
|
|
EditController --> ManageControllers
|
|
DeleteController --> ManageControllers
|
|
|
|
ZoneMasterControl --> SetAllTemperatures
|
|
ZoneMasterControl --> ApplyProfileToAll
|
|
ZoneMasterControl --> StopAllControllers
|
|
|
|
SetAllTemperatures --> ViewZones
|
|
ApplyProfileToAll --> ViewZones
|
|
StopAllControllers --> ViewZones
|
|
```
|
|
|
|
## Getting Started
|
|
|
|
To run the Cassandra RC2 web interface:
|
|
|
|
1. Install dependencies:
|
|
```
|
|
npm install
|
|
```
|
|
|
|
2. Start the development server:
|
|
```
|
|
npm run dev
|
|
```
|
|
|
|
3. Access the web interface at http://localhost:5173
|
|
|
|
## Technologies Used
|
|
|
|
- React with TypeScript
|
|
- TanStack Query for data fetching and caching
|
|
- Shadcn UI components
|
|
- Supabase for data storage
|
|
- Bezier curve calculations for temperature profiles |