[ { "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", "category": "topic", "categoryType": "msg", "xAxisType": "time", "yAxisLabel": "state", "removeOlder": "1", "removeOlderUnit": "3600", "x": 1230, "y": 300, "wires": [] } ]