[
    {
        "id": "25c4e5d730592b2b",
        "type": "tab",
        "label": "JobManager OPCUA Machinery Example",
        "disabled": false,
        "info": ""
    },
    {
        "id": "d129ade3f9ed3659",
        "type": "group",
        "z": "25c4e5d730592b2b",
        "name": "",
        "style": {
            "label": true
        },
        "nodes": [
            "3fd5d486caf072b5",
            "814cfd7c9337b1b1",
            "4a98424f5b976aa5",
            "7fe1cd69324b6fd1",
            "b9e262ebb761f709",
            "b6d2d40b1ae2fa2c",
            "8cf31117c1bea29c",
            "771efa88648e9096",
            "8f20b0e71b679e34",
            "15e0c9ef0874e0eb"
        ],
        "x": 34,
        "y": 639,
        "w": 1012,
        "h": 202
    },
    {
        "id": "b69c611cfdc19ed6",
        "type": "group",
        "z": "25c4e5d730592b2b",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "bfb02ea9d939668a",
            "97ce5c30f7d69f55",
            "4839c8b615c090fe",
            "4d8e00de18ead6b6",
            "1487015ec02a1dae"
        ],
        "x": 34,
        "y": 239,
        "w": 852,
        "h": 122
    },
    {
        "id": "0fd4a5ae57d0c6ae",
        "type": "group",
        "z": "25c4e5d730592b2b",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "ec803f8f45bd36ec",
            "914c5f09025efcff",
            "ef7a8c532d2d9966",
            "b158d0e8a511836d",
            "9730539f5e0a2c5d"
        ],
        "x": 44,
        "y": 59,
        "w": 762,
        "h": 122
    },
    {
        "id": "9d3c61f34686f717",
        "type": "group",
        "z": "25c4e5d730592b2b",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "e6af947e9ff65d9f",
            "4b2bcb690d01c253",
            "b40d866850496887",
            "f0ffba5b4fe25341",
            "ed6656cca99e19f1",
            "d4cd78bd31be0b64",
            "472cb59b34337242",
            "397500cb931863db",
            "047e2383e4cea75b"
        ],
        "x": 34,
        "y": 419,
        "w": 672,
        "h": 162
    },
    {
        "id": "ec803f8f45bd36ec",
        "type": "OpcUa-Client2-Explore",
        "z": "25c4e5d730592b2b",
        "g": "0fd4a5ae57d0c6ae",
        "inputs": 1,
        "output": 4,
        "name": "",
        "endpoint": "db39ec6289f64f32",
        "nodeId": "/machinery:Machines/own:MyControledMachine.di:Identification",
        "outputType": "Value",
        "excludeEmpty": true,
        "followOrganizes": true,
        "x": 320,
        "y": 100,
        "wires": [
            [
                "b158d0e8a511836d"
            ]
        ]
    },
    {
        "id": "914c5f09025efcff",
        "type": "inject",
        "z": "25c4e5d730592b2b",
        "g": "0fd4a5ae57d0c6ae",
        "name": "",
        "props": [],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "x": 140,
        "y": 100,
        "wires": [
            [
                "ec803f8f45bd36ec"
            ]
        ]
    },
    {
        "id": "3fd5d486caf072b5",
        "type": "OpcUa-Client2-ExtensionObject",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "inputs": 1,
        "output": 1,
        "name": "Create JobOrder ExtensionObject",
        "endpoint": "db39ec6289f64f32",
        "dataType": "ISA95JobOrderDataType",
        "x": 740,
        "y": 680,
        "wires": [
            [
                "4a98424f5b976aa5"
            ]
        ]
    },
    {
        "id": "814cfd7c9337b1b1",
        "type": "OpcUa-Client2-Call",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "inputs": 1,
        "output": 4,
        "name": "Call StoreAndStart",
        "endpoint": "db39ec6289f64f32",
        "action": "read",
        "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:StoreAndStart",
        "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
        "x": 710,
        "y": 740,
        "wires": [
            [
                "8f20b0e71b679e34"
            ],
            []
        ]
    },
    {
        "id": "4a98424f5b976aa5",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "Build Method args",
        "func": "\nmsg.payload={\n   \"JobOrder\": msg.payload,\n   \"Comment\": msg.comment\n}\nreturn msg;\n",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 250,
        "y": 780,
        "wires": [
            [
                "b6d2d40b1ae2fa2c"
            ]
        ]
    },
    {
        "id": "bfb02ea9d939668a",
        "type": "OpcUa-Client2-Monitor",
        "z": "25c4e5d730592b2b",
        "g": "b69c611cfdc19ed6",
        "inputs": 0,
        "output": 2,
        "name": "MonitorJobOrderList",
        "endpoint": "db39ec6289f64f32",
        "subscription": "s0",
        "startImmediately": true,
        "nodeId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:JobOrderList",
        "samplingInterval": "0",
        "discardOldest": true,
        "queueSize": 10,
        "x": 150,
        "y": 280,
        "wires": [
            [
                "4839c8b615c090fe"
            ]
        ]
    },
    {
        "id": "97ce5c30f7d69f55",
        "type": "ui-table",
        "z": "25c4e5d730592b2b",
        "g": "b69c611cfdc19ed6",
        "group": "d6d1d412b897cd43",
        "name": "JobOrder Table",
        "label": "Job Order Table",
        "order": 2,
        "width": 0,
        "height": 0,
        "maxrows": 0,
        "passthru": false,
        "autocols": true,
        "showSearch": false,
        "deselect": true,
        "selectionType": "checkbox",
        "columns": [],
        "mobileBreakpoint": "sm",
        "mobileBreakpointType": "defaults",
        "action": "replace",
        "x": 580,
        "y": 280,
        "wires": [
            [
                "4d8e00de18ead6b6"
            ]
        ]
    },
    {
        "id": "4839c8b615c090fe",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "b69c611cfdc19ed6",
        "name": "Format for Table",
        "func": "const jobArray = msg.payload;\nconst table =[];\nfor(const j of jobArray) {\n  \n  const jobOrderId = j.JobOrder.JobOrderID;\n  const status = j.State[0]?.StateText;\n  const start = j.JobOrder.StartTime?.toISOString();\n  const end = j.JobOrder.EndTime?.toISOString();\n\n  table.push({jobOrderId,status,start,end});\n}\nmsg.payload = table;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 360,
        "y": 280,
        "wires": [
            [
                "97ce5c30f7d69f55",
                "1487015ec02a1dae"
            ]
        ]
    },
    {
        "id": "ef7a8c532d2d9966",
        "type": "ui-table",
        "z": "25c4e5d730592b2b",
        "g": "0fd4a5ae57d0c6ae",
        "group": "d6d1d412b897cd43",
        "name": "Idenfication table",
        "label": "Machine Identification",
        "order": 1,
        "width": "6",
        "height": "2",
        "maxrows": 0,
        "passthru": false,
        "autocols": true,
        "showSearch": false,
        "deselect": true,
        "selectionType": "none",
        "columns": [],
        "mobileBreakpoint": "sm",
        "mobileBreakpointType": "defaults",
        "action": "replace",
        "x": 690,
        "y": 100,
        "wires": [
            []
        ]
    },
    {
        "id": "7fe1cd69324b6fd1",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "prepare Job",
        "func": "let counter = flow.get(\"counter\") || 0;\ncounter+=1;\nflow.set(\"counter\", counter);\n\nconst JobOrderID = `JOB${counter.toString().padStart(4,\"0\")}`;\n\nconst commentLines = (msg.payload?.Comment||\"\").split(\"\\n\");\nconst Description = [];\n\nfor(const l in commentLines ) {\n    break;\n    Description.push({ \n            Type: { Id: 21, Namespace:0},\n            Body: {\n                Text: l,\n                Locale: \"\"\n            }\n    });\n}\n\nconst Priority = msg.payload?.Priority || 1;\nmsg.shouldStart =  msg.payload.StoreAndStart === true;\n\nmsg.payload ={\n    JobOrderID,\n    Description,\n    Priority\n}\nmsg.comment = Description;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 410,
        "y": 680,
        "wires": [
            [
                "3fd5d486caf072b5"
            ]
        ]
    },
    {
        "id": "b9e262ebb761f709",
        "type": "ui-form",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "Create Job Order",
        "group": "f3b27308f213ed63",
        "label": "Create Job Order",
        "order": 1,
        "width": "3",
        "height": "4",
        "options": [
            {
                "label": "Comments",
                "key": "Comment",
                "type": "multiline",
                "required": false,
                "rows": 3
            },
            {
                "label": "Priority",
                "key": "Priority",
                "type": "number",
                "required": false,
                "rows": null
            },
            {
                "label": "StoreAndStart",
                "key": "StoreAndStart",
                "type": "checkbox",
                "required": false,
                "rows": null
            }
        ],
        "formValue": {
            "Comment": "",
            "Priority": "",
            "StoreAndStart": false
        },
        "payload": "",
        "submit": "SendJobOrder",
        "cancel": "clear",
        "resetOnSubmit": true,
        "topic": "payload",
        "topicType": "msg",
        "splitLayout": "",
        "className": "",
        "dropdownOptions": [],
        "x": 150,
        "y": 680,
        "wires": [
            [
                "7fe1cd69324b6fd1",
                "15e0c9ef0874e0eb"
            ]
        ]
    },
    {
        "id": "b6d2d40b1ae2fa2c",
        "type": "switch",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "",
        "property": "shouldStart",
        "propertyType": "msg",
        "rules": [
            {
                "t": "true"
            },
            {
                "t": "false"
            }
        ],
        "checkall": "true",
        "repair": true,
        "outputs": 2,
        "x": 470,
        "y": 780,
        "wires": [
            [
                "814cfd7c9337b1b1"
            ],
            [
                "8cf31117c1bea29c"
            ]
        ]
    },
    {
        "id": "8cf31117c1bea29c",
        "type": "OpcUa-Client2-Call",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "inputs": 1,
        "output": 4,
        "name": "Call Store",
        "endpoint": "db39ec6289f64f32",
        "action": "read",
        "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Store",
        "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
        "x": 680,
        "y": 800,
        "wires": [
            [
                "8f20b0e71b679e34"
            ],
            []
        ]
    },
    {
        "id": "e6af947e9ff65d9f",
        "type": "ui-button",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "group": "d6d1d412b897cd43",
        "name": "Start",
        "label": "Start",
        "order": 3,
        "width": 1,
        "height": "1",
        "emulateClick": true,
        "tooltip": "",
        "color": "",
        "bgcolor": "",
        "className": "",
        "icon": "start",
        "iconPosition": "left",
        "payload": "",
        "payloadType": "str",
        "topic": "topic",
        "topicType": "msg",
        "buttonColor": "",
        "textColor": "",
        "iconColor": "",
        "enableClick": true,
        "enablePointerdown": false,
        "pointerdownPayload": "",
        "pointerdownPayloadType": "str",
        "enablePointerup": false,
        "pointerupPayload": "",
        "pointerupPayloadType": "str",
        "x": 110,
        "y": 460,
        "wires": [
            [
                "f0ffba5b4fe25341"
            ]
        ]
    },
    {
        "id": "4b2bcb690d01c253",
        "type": "ui-button",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "group": "d6d1d412b897cd43",
        "name": "Abort",
        "label": "Abort",
        "order": 4,
        "width": 1,
        "height": "1",
        "emulateClick": false,
        "tooltip": "",
        "color": "",
        "bgcolor": "",
        "className": "",
        "icon": "",
        "iconPosition": "left",
        "payload": "",
        "payloadType": "str",
        "topic": "topic",
        "topicType": "msg",
        "buttonColor": "",
        "textColor": "",
        "iconColor": "",
        "enableClick": true,
        "enablePointerdown": false,
        "pointerdownPayload": "",
        "pointerdownPayloadType": "str",
        "enablePointerup": false,
        "pointerupPayload": "",
        "pointerupPayloadType": "str",
        "x": 110,
        "y": 500,
        "wires": [
            [
                "d4cd78bd31be0b64"
            ]
        ]
    },
    {
        "id": "b40d866850496887",
        "type": "ui-button",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "group": "d6d1d412b897cd43",
        "name": "Clear",
        "label": "Clear",
        "order": 5,
        "width": 1,
        "height": "1",
        "emulateClick": true,
        "tooltip": "",
        "color": "",
        "bgcolor": "",
        "className": "",
        "icon": "",
        "iconPosition": "left",
        "payload": "",
        "payloadType": "str",
        "topic": "topic",
        "topicType": "msg",
        "buttonColor": "",
        "textColor": "",
        "iconColor": "",
        "enableClick": true,
        "enablePointerdown": false,
        "pointerdownPayload": "",
        "pointerdownPayloadType": "str",
        "enablePointerup": false,
        "pointerupPayload": "",
        "pointerupPayloadType": "str",
        "x": 110,
        "y": 540,
        "wires": [
            [
                "397500cb931863db"
            ]
        ]
    },
    {
        "id": "771efa88648e9096",
        "type": "inject",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "{\"Priority\":2,\"StoreAndStart\":true,\"Comment\":\"line1\\nline2\"}",
        "payloadType": "json",
        "x": 130,
        "y": 720,
        "wires": [
            [
                "7fe1cd69324b6fd1",
                "15e0c9ef0874e0eb"
            ]
        ]
    },
    {
        "id": "4d8e00de18ead6b6",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "b69c611cfdc19ed6",
        "name": "Store Selection",
        "func": "if (msg.action == \"multi_select\") {\n  const rows = RED.util.cloneMessage(msg.payload);\n  flow.set(\"selectedRows\", rows);\n}\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 780,
        "y": 280,
        "wires": [
            []
        ]
    },
    {
        "id": "f0ffba5b4fe25341",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "name": "Format Method Arguments",
        "func": "const rows = flow.get(\"selectedRows\");\nconst messages = [];\n\nfor (const row of rows) {\n    messages.push({\n        payload: {\n            JobOrderID: row.jobOrderId,\n            Comment: []\n        },\n        \n    });\n}\n\nreturn [[...messages]];",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 380,
        "y": 460,
        "wires": [
            [
                "ed6656cca99e19f1"
            ]
        ]
    },
    {
        "id": "b158d0e8a511836d",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "0fd4a5ae57d0c6ae",
        "name": "clean up",
        "func": "msg.payload.Manufacturer = msg.payload.Manufacturer?.text || \"\";\nmsg.payload = [ msg.payload];\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 500,
        "y": 100,
        "wires": [
            [
                "ef7a8c532d2d9966",
                "9730539f5e0a2c5d"
            ]
        ]
    },
    {
        "id": "ed6656cca99e19f1",
        "type": "OpcUa-Client2-Call",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "inputs": 1,
        "output": 4,
        "name": "Call Start",
        "endpoint": "c22bb208bf9b2236",
        "action": "read",
        "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Start",
        "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
        "x": 620,
        "y": 460,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "d4cd78bd31be0b64",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "name": "Format Method Arguments",
        "func": "const rows = flow.get(\"selectedRows\");\nconst messages = [];\n\nfor (const row of rows) {\n    messages.push({\n        payload: {\n            JobOrderID: row.jobOrderId,\n            Comment: []\n        },\n        \n    });\n}\n\nreturn [[...messages]];",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 380,
        "y": 500,
        "wires": [
            [
                "472cb59b34337242"
            ]
        ]
    },
    {
        "id": "472cb59b34337242",
        "type": "OpcUa-Client2-Call",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "inputs": 1,
        "output": 4,
        "name": "Call Abort",
        "endpoint": "db39ec6289f64f32",
        "action": "read",
        "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Abort",
        "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
        "x": 620,
        "y": 500,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "397500cb931863db",
        "type": "function",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "name": "Format Method Arguments",
        "func": "const rows = flow.get(\"selectedRows\");\nconst messages = [];\n\nfor (const row of rows) {\n    messages.push({\n        payload: {\n            JobOrderID: row.jobOrderId,\n            Comment: []\n        },\n        \n    });\n}\n\nreturn [[...messages]];",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 380,
        "y": 540,
        "wires": [
            [
                "047e2383e4cea75b"
            ]
        ]
    },
    {
        "id": "047e2383e4cea75b",
        "type": "OpcUa-Client2-Call",
        "z": "25c4e5d730592b2b",
        "g": "9d3c61f34686f717",
        "inputs": 1,
        "output": 4,
        "name": "Call Clear",
        "endpoint": "db39ec6289f64f32",
        "action": "read",
        "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Clear",
        "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
        "x": 620,
        "y": 540,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "5d47e925b0e22999",
        "type": "comment",
        "z": "25c4e5d730592b2b",
        "name": "Create JobOrder",
        "info": "",
        "x": 120,
        "y": 620,
        "wires": []
    },
    {
        "id": "8f20b0e71b679e34",
        "type": "debug",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "debug 1",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 940,
        "y": 800,
        "wires": []
    },
    {
        "id": "a7d6681dd02b656e",
        "type": "comment",
        "z": "25c4e5d730592b2b",
        "name": "Extract Machine Identification (in one operation !)",
        "info": "This sequence reads the Identification variables of the machine\nand display it in a list on the UI",
        "x": 220,
        "y": 40,
        "wires": []
    },
    {
        "id": "360eb9aed981544d",
        "type": "comment",
        "z": "25c4e5d730592b2b",
        "name": "List of Jobs",
        "info": "",
        "x": 110,
        "y": 220,
        "wires": []
    },
    {
        "id": "06b4272e41021789",
        "type": "comment",
        "z": "25c4e5d730592b2b",
        "name": "Actions on List of Jobs selected rows",
        "info": "",
        "x": 180,
        "y": 400,
        "wires": []
    },
    {
        "id": "9730539f5e0a2c5d",
        "type": "debug",
        "z": "25c4e5d730592b2b",
        "g": "0fd4a5ae57d0c6ae",
        "name": "debug 2",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 660,
        "y": 140,
        "wires": []
    },
    {
        "id": "1487015ec02a1dae",
        "type": "debug",
        "z": "25c4e5d730592b2b",
        "g": "b69c611cfdc19ed6",
        "name": "debug 3",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 560,
        "y": 320,
        "wires": []
    },
    {
        "id": "15e0c9ef0874e0eb",
        "type": "debug",
        "z": "25c4e5d730592b2b",
        "g": "d129ade3f9ed3659",
        "name": "debug 4",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 380,
        "y": 720,
        "wires": []
    },
    {
        "id": "db39ec6289f64f32",
        "type": "OpcUa-Endpoint2",
        "name": "",
        "endpoint": "opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer",
        "securityMode": "None",
        "securityPolicy": "None",
        "userIdentityType": "Anonymous",
        "pkiName": "",
        "useTransport": false,
        "maxChunkCount": "1",
        "maxMessageSize": "8192",
        "receiveBufferSize": "8192",
        "sendBufferSize": "8192",
        "subscriptions": [
            {
                "id": "s0",
                "name": "Default Subscription",
                "isDefault": true,
                "parameters": {
                    "publishingEnabled": true,
                    "requestedLifetimeCount": "1000",
                    "requestedMaxKeepAliveCount": "10",
                    "requestedPublishingInterval": "1000",
                    "maxNotificationsPerPublish": "0",
                    "priority": "100"
                }
            },
            {
                "id": "s1",
                "name": "Slow Subscription",
                "isDefault": true,
                "parameters": {
                    "publishingEnabled": true,
                    "requestedLifetimeCount": "100",
                    "requestedMaxKeepAliveCount": "3",
                    "requestedPublishingInterval": "5000",
                    "maxNotificationsPerPublish": "100",
                    "priority": "10"
                }
            },
            {
                "id": "s2",
                "name": "Fast Subscription",
                "isDefault": true,
                "parameters": {
                    "publishingEnabled": true,
                    "requestedLifetimeCount": "4000",
                    "requestedMaxKeepAliveCount": "50",
                    "requestedPublishingInterval": "250",
                    "maxNotificationsPerPublish": "100",
                    "priority": "200"
                }
            }
        ],
        "namespaceAliases": [
            {
                "namespaceUri": "http://opcfoundation.org/UA/",
                "alias": "ua"
            },
            {
                "namespaceUri": "~urn:.*",
                "alias": "own"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/DI/",
                "alias": "di"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/ADI/",
                "alias": "adi"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/AutoID/",
                "alias": "autoId"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/MachineVision",
                "alias": "machineVision"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Robotics/",
                "alias": "robotics"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/CommercialKitchenEquipment/",
                "alias": "cke"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/ISA95-JOBCONTROL_V2/",
                "alias": "isa95JobControl"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Dictionary/IRDI",
                "alias": "irdi"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/IA/",
                "alias": "ia"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Machinery/",
                "alias": "machinery"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Machinery/Jobs/",
                "alias": "machineryJobs"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/MachineTool/",
                "alias": "machineTool"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/PackML/",
                "alias": "packML"
            },
            {
                "namespaceUri": "urn://node-opcua-simulator",
                "alias": "ns2"
            },
            {
                "namespaceUri": "http://sterfive.com/UA/CoffeeMachine/",
                "alias": "ns3"
            }
        ]
    },
    {
        "id": "d6d1d412b897cd43",
        "type": "ui-group",
        "name": "JobManager",
        "page": "72c675db46ea859f",
        "width": 8,
        "height": "12",
        "order": 2,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "f3b27308f213ed63",
        "type": "ui-group",
        "name": "Edit Form",
        "page": "72c675db46ea859f",
        "width": "4",
        "height": "4",
        "order": 1,
        "showTitle": true,
        "className": "",
        "visible": "true",
        "disabled": "false",
        "groupType": "default"
    },
    {
        "id": "c22bb208bf9b2236",
        "type": "OpcUa-Endpoint2",
        "name": "",
        "endpoint": "opc.tcp://opcuademo.sterfive.com:26541",
        "securityMode": "None",
        "securityPolicy": "None",
        "userIdentityType": "Anonymous",
        "pkiName": "",
        "useTransport": false,
        "maxChunkCount": "1",
        "maxMessageSize": "8192",
        "receiveBufferSize": "8192",
        "sendBufferSize": "8192",
        "subscriptions": [
            {
                "id": "s0",
                "name": "Default Subscription",
                "isDefault": true,
                "parameters": {
                    "publishingEnabled": true,
                    "requestedLifetimeCount": "100",
                    "requestedMaxKeepAliveCount": "10",
                    "requestedPublishingInterval": "1000",
                    "maxNotificationsPerPublish": "0",
                    "priority": "100"
                }
            }
        ],
        "namespaceAliases": [
            {
                "namespaceUri": "http://opcfoundation.org/UA/",
                "alias": "ua"
            },
            {
                "namespaceUri": "~urn:.*",
                "alias": "own"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/DI/",
                "alias": "di"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/ADI/",
                "alias": "adi"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/AutoID/",
                "alias": "autoId"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/MachineVision",
                "alias": "machineVision"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Robotics/",
                "alias": "robotics"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/CommercialKitchenEquipment/",
                "alias": "cke"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/ISA95-JOBCONTROL_V2/",
                "alias": "isa95JobControl"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Dictionary/IRDI",
                "alias": "irdi"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/IA/",
                "alias": "ia"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Machinery/",
                "alias": "machinery"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/Machinery/Jobs/",
                "alias": "machineryJobs"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/MachineTool/",
                "alias": "machineTool"
            },
            {
                "namespaceUri": "http://opcfoundation.org/UA/PackML/",
                "alias": "packML"
            },
            {
                "namespaceUri": "urn://node-opcua-simulator",
                "alias": "ns2"
            },
            {
                "namespaceUri": "http://sterfive.com/UA/CoffeeMachine/",
                "alias": "ns3"
            }
        ]
    },
    {
        "id": "72c675db46ea859f",
        "type": "ui-page",
        "name": "JobManager",
        "ui": "ba750d2403672175",
        "path": "/JobManager",
        "icon": "job",
        "layout": "grid",
        "theme": "263ce4545ccf6ac5",
        "breakpoints": [
            {
                "name": "Default",
                "px": "0",
                "cols": "3"
            },
            {
                "name": "Tablet",
                "px": "576",
                "cols": "6"
            },
            {
                "name": "Small Desktop",
                "px": "768",
                "cols": "9"
            },
            {
                "name": "Desktop",
                "px": "1024",
                "cols": "12"
            }
        ],
        "order": 1,
        "className": "",
        "visible": "true",
        "disabled": "false"
    },
    {
        "id": "ba750d2403672175",
        "type": "ui-base",
        "name": "My Dashboard",
        "path": "/dashboard",
        "appIcon": "",
        "includeClientData": true,
        "acceptsClientConfig": [
            "ui-notification",
            "ui-control"
        ],
        "showPathInSidebar": false,
        "headerContent": "page",
        "navigationStyle": "default",
        "titleBarStyle": "default",
        "showReconnectNotification": true,
        "notificationDisplayTime": 1,
        "showDisconnectNotification": true
    },
    {
        "id": "263ce4545ccf6ac5",
        "type": "ui-theme",
        "name": "Default Theme",
        "colors": {
            "surface": "#ffffff",
            "primary": "#0094CE",
            "bgPage": "#eeeeee",
            "groupBg": "#ffffff",
            "groupOutline": "#cccccc"
        },
        "sizes": {
            "density": "default",
            "pagePadding": "12px",
            "groupGap": "12px",
            "groupBorderRadius": "4px",
            "widgetGap": "12px"
        }
    }
]