Files
rotatingMachine/examples/edge.flow.json
2026-02-12 10:48:44 +01:00

326 lines
7.5 KiB
JSON

[
{
"id": "91a88f212fb34de8",
"type": "tab",
"label": "RotatingMachine Edge Cases",
"disabled": false,
"info": "Manual edge-case driving for rotatingMachine"
},
{
"id": "ui_base_rm_edge",
"type": "ui-base",
"name": "EVOLV Demo",
"path": "/dashboard",
"includeClientData": true,
"acceptsClientConfig": [
"ui-notification",
"ui-control"
],
"showPathInSidebar": false,
"headerContent": "page",
"navigationStyle": "default",
"titleBarStyle": "default"
},
{
"id": "ui_theme_rm_edge",
"type": "ui-theme",
"name": "EVOLV Edge Theme",
"colors": {
"surface": "#ffffff",
"primary": "#0094ce",
"bgPage": "#eeeeee",
"groupBg": "#ffffff",
"groupOutline": "#cccccc"
},
"sizes": {
"density": "default",
"pagePadding": "12px",
"groupGap": "12px",
"groupBorderRadius": "4px",
"widgetGap": "12px"
}
},
{
"id": "ui_page_rm_edge",
"type": "ui-page",
"name": "RotatingMachine Edge",
"ui": "ui_base_rm_edge",
"path": "/rotating-machine-edge",
"icon": "report_problem",
"layout": "grid",
"theme": "ui_theme_rm_edge",
"breakpoints": [
{
"name": "Default",
"px": "0",
"cols": "12"
}
],
"order": 3,
"className": ""
},
{
"id": "ui_group_rm_edge_inputs",
"type": "ui-group",
"name": "Edge Input Generators",
"page": "ui_page_rm_edge",
"width": "6",
"height": "1",
"order": 1,
"showTitle": true
},
{
"id": "ui_group_rm_edge_obs",
"type": "ui-group",
"name": "Observed Responses",
"page": "ui_page_rm_edge",
"width": "6",
"height": "8",
"order": 2,
"showTitle": true
},
{
"id": "rm_node_edge",
"type": "rotatingMachine",
"z": "91a88f212fb34de8",
"name": "RM Edge",
"speed": "1",
"startup": "3",
"warmup": "3",
"shutdown": "3",
"cooldown": "3",
"movementMode": "staticspeed",
"machineCurve": "",
"uuid": "",
"supplier": "hidrostal",
"category": "machine",
"assetType": "pump-centrifugal",
"model": "hidrostal-H05K-S03R",
"unit": "m3/h",
"enableLog": false,
"logLevel": "error",
"positionVsParent": "atEquipment",
"x": 930,
"y": 300,
"wires": [
[
"rm_edge_parse",
"rm_edge_process_debug"
],
[
"rm_edge_debug_influx"
],
[
"rm_edge_debug_parent"
]
],
"hasDistance": false
},
{
"id": "rm_edge_invalid_mode_btn",
"type": "ui-button",
"z": "91a88f212fb34de8",
"group": "ui_group_rm_edge_inputs",
"name": "Invalid Mode",
"label": "Send invalid mode",
"order": 1,
"width": "6",
"height": "1",
"payload": "invalidMode",
"payloadType": "str",
"topic": "setMode",
"x": 190,
"y": 120,
"wires": [
[
"rm_node_edge"
]
]
},
{
"id": "rm_edge_neg_setpoint",
"type": "ui-number-input",
"z": "91a88f212fb34de8",
"group": "ui_group_rm_edge_inputs",
"name": "Negative Setpoint",
"label": "Negative setpoint",
"order": 2,
"width": "6",
"height": "1",
"passthru": true,
"min": -100,
"max": 0,
"step": 1,
"x": 190,
"y": 170,
"wires": [
[
"rm_edge_exec_movement"
]
]
},
{
"id": "rm_edge_exec_movement",
"type": "function",
"z": "91a88f212fb34de8",
"name": "Build execMovement",
"func": "msg.topic = 'execMovement';\nmsg.payload = {source:'GUI', action:'execMovement', setpoint:Number(msg.payload)};\nreturn msg;",
"outputs": 1,
"x": 450,
"y": 170,
"wires": [
[
"rm_node_edge"
]
]
},
{
"id": "rm_edge_bad_source_btn",
"type": "ui-button",
"z": "91a88f212fb34de8",
"group": "ui_group_rm_edge_inputs",
"name": "Bad Source",
"label": "Disallowed source action",
"order": 3,
"width": "6",
"height": "1",
"payload": "{}",
"payloadType": "str",
"x": 210,
"y": 220,
"wires": [
[
"rm_edge_bad_source_builder"
]
]
},
{
"id": "rm_edge_bad_source_builder",
"type": "function",
"z": "91a88f212fb34de8",
"name": "Build blocked execSequence",
"func": "msg.topic='execSequence';\nmsg.payload={source:'bad-source', action:'execSequence', parameter:'startup'};\nreturn msg;",
"outputs": 1,
"x": 500,
"y": 220,
"wires": [
[
"rm_node_edge"
]
]
},
{
"id": "rm_edge_bad_sim_type",
"type": "ui-button",
"z": "91a88f212fb34de8",
"group": "ui_group_rm_edge_inputs",
"name": "Unsupported Sim Type",
"label": "simulateMeasurement (bad type)",
"order": 4,
"width": "6",
"height": "1",
"payload": "{\"type\":\"unknown\",\"position\":\"downstream\",\"value\":123,\"unit\":\"mbar\"}",
"payloadType": "json",
"topic": "simulateMeasurement",
"x": 220,
"y": 270,
"wires": [
[
"rm_node_edge"
]
]
},
{
"id": "rm_edge_parse",
"type": "function",
"z": "91a88f212fb34de8",
"name": "Summarize process output",
"func": "const incoming = (msg && msg.payload && typeof msg.payload === 'object') ? msg.payload : {};\nconst merged = { ...(context.get('lastPayload') || {}), ...incoming };\ncontext.set('lastPayload', merged);\n\nconst state = merged.state == null ? 'n/a' : String(merged.state);\nconst mode = merged.mode == null ? 'n/a' : String(merged.mode);\nconst ctrl = Number(merged.ctrl);\nconst stateCodeMap = { off: 0, idle: 1, starting: 2, warmingup: 3, operational: 4, accelerating: 5, decelerating: 6, stopping: 7, coolingdown: 8, maintenance: 9 };\nconst stateCode = stateCodeMap[state] ?? -1;\n\nreturn [\n { payload: `state=${state}, mode=${mode}, ctrl=${Number.isFinite(ctrl) ? ctrl.toFixed(2) : 'n/a'}%` },\n { topic: 'stateCode', payload: stateCode }\n];",
"outputs": 2,
"x": 1230,
"y": 300,
"wires": [
[
"rm_edge_state_text"
],
[
"rm_edge_state_chart"
]
]
},
{
"id": "rm_edge_state_text",
"type": "ui-text",
"z": "91a88f212fb34de8",
"group": "ui_group_rm_edge_obs",
"name": "State Text",
"label": "Machine summary",
"order": 2,
"format": "{{msg.payload}}",
"layout": "row-spread",
"x": 1450,
"y": 300,
"wires": [],
"width": 6,
"height": 1
},
{
"id": "rm_edge_process_debug",
"type": "debug",
"z": "91a88f212fb34de8",
"name": "Process Output",
"active": true,
"tosidebar": true,
"complete": "true",
"targetType": "full",
"x": 1220,
"y": 340,
"wires": []
},
{
"id": "rm_edge_debug_influx",
"type": "debug",
"z": "91a88f212fb34de8",
"name": "Influx Output",
"active": true,
"tosidebar": true,
"complete": "true",
"targetType": "full",
"x": 1220,
"y": 380,
"wires": []
},
{
"id": "rm_edge_debug_parent",
"type": "debug",
"z": "91a88f212fb34de8",
"name": "Parent Output",
"active": true,
"tosidebar": true,
"complete": "true",
"targetType": "full",
"x": 1220,
"y": 420,
"wires": []
},
{
"id": "rm_edge_state_chart",
"type": "ui-chart",
"z": "91a88f212fb34de8",
"group": "ui_group_rm_edge_obs",
"name": "State Code",
"label": "State Code",
"order": 1,
"width": 6,
"height": 4,
"chartType": "line",
"xAxisType": "time",
"yAxisLabel": "state",
"removeOlder": "1",
"removeOlderUnit": "3600",
"x": 1230,
"y": 300,
"wires": []
}
]