graph LR
classDef running fill:#28a745,stroke:#1e7e34,color:white
classDef stopped fill:#dc3545,stroke:#a71d2a,color:white
classDef topic fill:#333,stroke:#17a2b8,color:#17a2b8
classDef topicActive fill:#1b4d2e,stroke:#28a745,color:#28a745,stroke-width:2px
classDef broker fill:#222,stroke:#28a745,color:#17a2b8,stroke-width:4px,font-size:20px
classDef graphNode fill:#fff,stroke:#333,color:#333
BROKER((MQTT Broker)):::broker
testpipe_PlotVis[[PlotVis]]:::stopped
bridge_testpipe_PlotVis([... ⮕ MQTT_IN]):::topic
BROKER === bridge_testpipe_PlotVis ==> testpipe_PlotVis
testpipe_PlotVis --- Graph_testpipe_PlotVis[📈 PlotVis]:::graphNode
click Graph_testpipe_PlotVis call openLiveGraph('testpipe', 'testpipe_PlotVis')
testpipe_Aligner[[Aligner]]:::stopped
bridge_testpipe_Aligner([... ⮕ MQTT_IN]):::topic
BROKER === bridge_testpipe_Aligner ==> testpipe_Aligner
testpipe_PlotVis_1[[PlotVis_1]]:::stopped
bridge_testpipe_PlotVis_1([Output ⮕ MQTT_IN]):::topic
testpipe_Aligner === bridge_testpipe_PlotVis_1 ==> testpipe_PlotVis_1
testpipe_PlotVis_1 --- Graph_testpipe_PlotVis_1[📈 PlotVis_1]:::graphNode
click Graph_testpipe_PlotVis_1 call openLiveGraph('testpipe', 'testpipe_PlotVis_1')
testpipe_Displ2Strain[[Displ2Strain]]:::stopped
bridge_testpipe_Displ2Strain([Output ⮕ MQTT_IN]):::topic
testpipe_Aligner === bridge_testpipe_Displ2Strain ==> testpipe_Displ2Strain
testpipe_Integrate[[Integrate]]:::stopped
bridge_testpipe_Integrate([MQTT_OUT ⮕ MQTT_IN]):::topic
testpipe_Displ2Strain === bridge_testpipe_Integrate ==> testpipe_Integrate
linkStyle default stroke:#28a745,stroke-width:3px