326 lines
7.5 KiB
JSON
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": []
|
|
}
|
|
]
|