This document describes the current CO326 Industrial Digital Twin implementation. The project is now centered on one industrial use case: Motor-01 overheating monitoring with relay trip simulation.
Motor/WindingTemperatureDCMD -> publisher relay simulationDDATA -> Node-RED -> UNS telemetry -> backend -> frontendflowchart LR
P[Motor-01 Publisher] -->|Sparkplug DDATA| M[MQTT Broker]
M --> N[Node-RED Flow]
N -->|UNS Telemetry| M
M --> B[Backend Service]
B --> A[AI Brain]
B --> I[InfluxDB Historian]
B --> F[Frontend Dashboard]
B -->|Sparkplug DCMD| M
M --> P
N -->|Auto Trip DCMD| M
I --> G[Grafana]
spBv1.0/CO326/DDATA/Plant1.Line1.MotorCell/Motor01spBv1.0/CO326/DCMD/Plant1.Line1.MotorCell/Motor01spBv1.0/CO326/DBIRTH/Plant1.Line1.MotorCell/Motor01uns/CO326/Plant1/Line1/MotorCell/Motor01/telemetryThe payload uses Sparkplug-style metric names in JSON so the simulated services, Node-RED, and React dashboard can inspect the values without a protobuf dependency.
sequenceDiagram
participant P as Publisher
participant M as MQTT
participant N as Node-RED
participant B as Backend
participant A as AI Brain
participant I as InfluxDB
participant F as Frontend
P->>M: DDATA Motor/WindingTemperature + Relay/FeedbackState
M->>N: Sparkplug telemetry
N->>M: UNS telemetry
M->>B: UNS telemetry
B->>A: POST /predict(motorTemperatureC)
A-->>B: anomaly + score
B->>B: estimate RUL
B->>I: write motor_overheat_monitor point
B-->>F: emit motor-data
F->>B: POST /api/relay-command
B->>M: DCMD Relay/Command
M->>P: Relay command
P->>P: update simulated relay
DDATA to UNS telemetryDCMD trip commandAUTO, TRIP, and RESET commandsMeasurement: motor_overheat_monitor
motor_temperature_canomalyanomaly_scorerul_hoursremaining_life_percentthermal_stress_indexaccumulated_damage_hoursover_temperaturerelay_commandrelay_feedbackmotor_statetrip_reason