@opcua/for-node-red 3.9.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,44 +1,40 @@
1
1
  [
2
2
  {
3
- "id": "44b167d3.5d3188",
3
+ "id": "25c4e5d730592b2b",
4
4
  "type": "tab",
5
5
  "label": "JobManager OPCUA Machinery Example",
6
6
  "disabled": false,
7
7
  "info": ""
8
8
  },
9
9
  {
10
- "id": "53cd820c08927f03",
10
+ "id": "d129ade3f9ed3659",
11
11
  "type": "group",
12
- "z": "44b167d3.5d3188",
12
+ "z": "25c4e5d730592b2b",
13
+ "name": "",
13
14
  "style": {
14
- "stroke": "#999999",
15
- "stroke-opacity": "1",
16
- "fill": "none",
17
- "fill-opacity": "1",
18
- "label": true,
19
- "label-position": "nw",
20
- "color": "#a4a4a4"
15
+ "label": true
21
16
  },
22
17
  "nodes": [
23
- "e9c7f25bddf4c167",
24
- "6ccf4e248c8eab88",
25
- "1c28099545d7ab92",
26
- "70c022ddb61c61b3",
27
- "859d210b50d203a4",
28
- "2693d1c45a502905",
29
- "5c137941f5b8ed2e",
30
- "a3f2a4fd281d277a",
31
- "8369fc155a2187d6"
18
+ "3fd5d486caf072b5",
19
+ "814cfd7c9337b1b1",
20
+ "4a98424f5b976aa5",
21
+ "7fe1cd69324b6fd1",
22
+ "b9e262ebb761f709",
23
+ "b6d2d40b1ae2fa2c",
24
+ "8cf31117c1bea29c",
25
+ "771efa88648e9096",
26
+ "8f20b0e71b679e34",
27
+ "15e0c9ef0874e0eb"
32
28
  ],
33
29
  "x": 34,
34
- "y": 619,
30
+ "y": 639,
35
31
  "w": 1012,
36
32
  "h": 202
37
33
  },
38
34
  {
39
- "id": "4d795342d3d0a8a3",
35
+ "id": "b69c611cfdc19ed6",
40
36
  "type": "group",
41
- "z": "44b167d3.5d3188",
37
+ "z": "25c4e5d730592b2b",
42
38
  "style": {
43
39
  "stroke": "#999999",
44
40
  "stroke-opacity": "1",
@@ -49,20 +45,21 @@
49
45
  "color": "#a4a4a4"
50
46
  },
51
47
  "nodes": [
52
- "7f864718456248a5",
53
- "56df6e6c8bc88b41",
54
- "9303b230c35329f5",
55
- "fb714196be82ddbd"
48
+ "bfb02ea9d939668a",
49
+ "97ce5c30f7d69f55",
50
+ "4839c8b615c090fe",
51
+ "4d8e00de18ead6b6",
52
+ "1487015ec02a1dae"
56
53
  ],
57
54
  "x": 34,
58
55
  "y": 239,
59
- "w": 792,
60
- "h": 82
56
+ "w": 852,
57
+ "h": 122
61
58
  },
62
59
  {
63
- "id": "aea140a2210cb654",
60
+ "id": "0fd4a5ae57d0c6ae",
64
61
  "type": "group",
65
- "z": "44b167d3.5d3188",
62
+ "z": "25c4e5d730592b2b",
66
63
  "style": {
67
64
  "stroke": "#999999",
68
65
  "stroke-opacity": "1",
@@ -73,20 +70,21 @@
73
70
  "color": "#a4a4a4"
74
71
  },
75
72
  "nodes": [
76
- "8ebb5e1fd8009ed0",
77
- "e284863fe201626d",
78
- "317be299ea9203c5",
79
- "a258c7c279349105"
73
+ "ec803f8f45bd36ec",
74
+ "914c5f09025efcff",
75
+ "ef7a8c532d2d9966",
76
+ "b158d0e8a511836d",
77
+ "9730539f5e0a2c5d"
80
78
  ],
81
79
  "x": 44,
82
- "y": 99,
83
- "w": 782,
84
- "h": 82
80
+ "y": 59,
81
+ "w": 762,
82
+ "h": 122
85
83
  },
86
84
  {
87
- "id": "76c189cf4c737b20",
85
+ "id": "9d3c61f34686f717",
88
86
  "type": "group",
89
- "z": "44b167d3.5d3188",
87
+ "z": "25c4e5d730592b2b",
90
88
  "style": {
91
89
  "stroke": "#999999",
92
90
  "stroke-opacity": "1",
@@ -97,47 +95,47 @@
97
95
  "color": "#a4a4a4"
98
96
  },
99
97
  "nodes": [
100
- "624f5ed5d95c0363",
101
- "2f8c29651c9a03b3",
102
- "64f434e5f6814720",
103
- "264202d200921c3d",
104
- "5d30097b3c6961e4",
105
- "abeec47eb859b6a8",
106
- "0654f7e5e114e5d2",
107
- "9350020966300ac0",
108
- "35813ce352e85c7a"
98
+ "e6af947e9ff65d9f",
99
+ "4b2bcb690d01c253",
100
+ "b40d866850496887",
101
+ "f0ffba5b4fe25341",
102
+ "ed6656cca99e19f1",
103
+ "d4cd78bd31be0b64",
104
+ "472cb59b34337242",
105
+ "397500cb931863db",
106
+ "047e2383e4cea75b"
109
107
  ],
110
108
  "x": 34,
111
- "y": 399,
109
+ "y": 419,
112
110
  "w": 672,
113
111
  "h": 162
114
112
  },
115
113
  {
116
- "id": "8ebb5e1fd8009ed0",
114
+ "id": "ec803f8f45bd36ec",
117
115
  "type": "OpcUa-Client2-Explore",
118
- "z": "44b167d3.5d3188",
119
- "g": "aea140a2210cb654",
116
+ "z": "25c4e5d730592b2b",
117
+ "g": "0fd4a5ae57d0c6ae",
120
118
  "inputs": 1,
121
119
  "output": 4,
122
120
  "name": "",
123
- "endpoint": "05260ca81c461b6e",
121
+ "endpoint": "db39ec6289f64f32",
124
122
  "nodeId": "/machinery:Machines/own:MyControledMachine.di:Identification",
125
123
  "outputType": "Value",
126
124
  "excludeEmpty": true,
127
125
  "followOrganizes": true,
128
- "x": 360,
129
- "y": 140,
126
+ "x": 320,
127
+ "y": 100,
130
128
  "wires": [
131
129
  [
132
- "a258c7c279349105"
130
+ "b158d0e8a511836d"
133
131
  ]
134
132
  ]
135
133
  },
136
134
  {
137
- "id": "e284863fe201626d",
135
+ "id": "914c5f09025efcff",
138
136
  "type": "inject",
139
- "z": "44b167d3.5d3188",
140
- "g": "aea140a2210cb654",
137
+ "z": "25c4e5d730592b2b",
138
+ "g": "0fd4a5ae57d0c6ae",
141
139
  "name": "",
142
140
  "props": [],
143
141
  "repeat": "",
@@ -146,57 +144,57 @@
146
144
  "onceDelay": 0.1,
147
145
  "topic": "",
148
146
  "x": 140,
149
- "y": 140,
147
+ "y": 100,
150
148
  "wires": [
151
149
  [
152
- "8ebb5e1fd8009ed0"
150
+ "ec803f8f45bd36ec"
153
151
  ]
154
152
  ]
155
153
  },
156
154
  {
157
- "id": "e9c7f25bddf4c167",
155
+ "id": "3fd5d486caf072b5",
158
156
  "type": "OpcUa-Client2-ExtensionObject",
159
- "z": "44b167d3.5d3188",
160
- "g": "53cd820c08927f03",
157
+ "z": "25c4e5d730592b2b",
158
+ "g": "d129ade3f9ed3659",
161
159
  "inputs": 1,
162
160
  "output": 1,
163
161
  "name": "Create JobOrder ExtensionObject",
164
- "endpoint": "05260ca81c461b6e",
162
+ "endpoint": "db39ec6289f64f32",
165
163
  "dataType": "ISA95JobOrderDataType",
166
- "x": 580,
167
- "y": 660,
164
+ "x": 740,
165
+ "y": 680,
168
166
  "wires": [
169
167
  [
170
- "1c28099545d7ab92"
168
+ "4a98424f5b976aa5"
171
169
  ]
172
170
  ]
173
171
  },
174
172
  {
175
- "id": "6ccf4e248c8eab88",
173
+ "id": "814cfd7c9337b1b1",
176
174
  "type": "OpcUa-Client2-Call",
177
- "z": "44b167d3.5d3188",
178
- "g": "53cd820c08927f03",
175
+ "z": "25c4e5d730592b2b",
176
+ "g": "d129ade3f9ed3659",
179
177
  "inputs": 1,
180
178
  "output": 4,
181
179
  "name": "Call StoreAndStart",
182
- "endpoint": "05260ca81c461b6e",
180
+ "endpoint": "db39ec6289f64f32",
183
181
  "action": "read",
184
182
  "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:StoreAndStart",
185
183
  "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
186
184
  "x": 710,
187
- "y": 720,
185
+ "y": 740,
188
186
  "wires": [
189
187
  [
190
- "8369fc155a2187d6"
188
+ "8f20b0e71b679e34"
191
189
  ],
192
190
  []
193
191
  ]
194
192
  },
195
193
  {
196
- "id": "1c28099545d7ab92",
194
+ "id": "4a98424f5b976aa5",
197
195
  "type": "function",
198
- "z": "44b167d3.5d3188",
199
- "g": "53cd820c08927f03",
196
+ "z": "25c4e5d730592b2b",
197
+ "g": "d129ade3f9ed3659",
200
198
  "name": "Build Method args",
201
199
  "func": "\nmsg.payload={\n \"JobOrder\": msg.payload,\n \"Comment\": msg.comment\n}\nreturn msg;\n",
202
200
  "outputs": 1,
@@ -205,23 +203,23 @@
205
203
  "initialize": "",
206
204
  "finalize": "",
207
205
  "libs": [],
208
- "x": 330,
209
- "y": 740,
206
+ "x": 250,
207
+ "y": 780,
210
208
  "wires": [
211
209
  [
212
- "2693d1c45a502905"
210
+ "b6d2d40b1ae2fa2c"
213
211
  ]
214
212
  ]
215
213
  },
216
214
  {
217
- "id": "7f864718456248a5",
215
+ "id": "bfb02ea9d939668a",
218
216
  "type": "OpcUa-Client2-Monitor",
219
- "z": "44b167d3.5d3188",
220
- "g": "4d795342d3d0a8a3",
217
+ "z": "25c4e5d730592b2b",
218
+ "g": "b69c611cfdc19ed6",
221
219
  "inputs": 0,
222
220
  "output": 2,
223
221
  "name": "MonitorJobOrderList",
224
- "endpoint": "05260ca81c461b6e",
222
+ "endpoint": "db39ec6289f64f32",
225
223
  "subscription": "s0",
226
224
  "startImmediately": true,
227
225
  "nodeId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:JobOrderList",
@@ -232,18 +230,18 @@
232
230
  "y": 280,
233
231
  "wires": [
234
232
  [
235
- "9303b230c35329f5"
233
+ "4839c8b615c090fe"
236
234
  ]
237
235
  ]
238
236
  },
239
237
  {
240
- "id": "56df6e6c8bc88b41",
238
+ "id": "97ce5c30f7d69f55",
241
239
  "type": "ui-table",
242
- "z": "44b167d3.5d3188",
243
- "g": "4d795342d3d0a8a3",
244
- "group": "2e72b62e599dcc83",
240
+ "z": "25c4e5d730592b2b",
241
+ "g": "b69c611cfdc19ed6",
242
+ "group": "d6d1d412b897cd43",
245
243
  "name": "JobOrder Table",
246
- "label": "text",
244
+ "label": "Job Order Table",
247
245
  "order": 2,
248
246
  "width": 0,
249
247
  "height": 0,
@@ -251,21 +249,25 @@
251
249
  "passthru": false,
252
250
  "autocols": true,
253
251
  "showSearch": false,
252
+ "deselect": true,
254
253
  "selectionType": "checkbox",
255
254
  "columns": [],
256
- "x": 540,
255
+ "mobileBreakpoint": "sm",
256
+ "mobileBreakpointType": "defaults",
257
+ "action": "replace",
258
+ "x": 580,
257
259
  "y": 280,
258
260
  "wires": [
259
261
  [
260
- "fb714196be82ddbd"
262
+ "4d8e00de18ead6b6"
261
263
  ]
262
264
  ]
263
265
  },
264
266
  {
265
- "id": "9303b230c35329f5",
267
+ "id": "4839c8b615c090fe",
266
268
  "type": "function",
267
- "z": "44b167d3.5d3188",
268
- "g": "4d795342d3d0a8a3",
269
+ "z": "25c4e5d730592b2b",
270
+ "g": "b69c611cfdc19ed6",
269
271
  "name": "Format for Table",
270
272
  "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;",
271
273
  "outputs": 1,
@@ -278,18 +280,19 @@
278
280
  "y": 280,
279
281
  "wires": [
280
282
  [
281
- "56df6e6c8bc88b41"
283
+ "97ce5c30f7d69f55",
284
+ "1487015ec02a1dae"
282
285
  ]
283
286
  ]
284
287
  },
285
288
  {
286
- "id": "317be299ea9203c5",
289
+ "id": "ef7a8c532d2d9966",
287
290
  "type": "ui-table",
288
- "z": "44b167d3.5d3188",
289
- "g": "aea140a2210cb654",
290
- "group": "2e72b62e599dcc83",
291
+ "z": "25c4e5d730592b2b",
292
+ "g": "0fd4a5ae57d0c6ae",
293
+ "group": "d6d1d412b897cd43",
291
294
  "name": "Idenfication table",
292
- "label": "text",
295
+ "label": "Machine Identification",
293
296
  "order": 1,
294
297
  "width": "6",
295
298
  "height": "2",
@@ -297,19 +300,23 @@
297
300
  "passthru": false,
298
301
  "autocols": true,
299
302
  "showSearch": false,
303
+ "deselect": true,
300
304
  "selectionType": "none",
301
305
  "columns": [],
302
- "x": 710,
303
- "y": 140,
306
+ "mobileBreakpoint": "sm",
307
+ "mobileBreakpointType": "defaults",
308
+ "action": "replace",
309
+ "x": 690,
310
+ "y": 100,
304
311
  "wires": [
305
312
  []
306
313
  ]
307
314
  },
308
315
  {
309
- "id": "70c022ddb61c61b3",
316
+ "id": "7fe1cd69324b6fd1",
310
317
  "type": "function",
311
- "z": "44b167d3.5d3188",
312
- "g": "53cd820c08927f03",
318
+ "z": "25c4e5d730592b2b",
319
+ "g": "d129ade3f9ed3659",
313
320
  "name": "prepare Job",
314
321
  "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;",
315
322
  "outputs": 1,
@@ -318,25 +325,25 @@
318
325
  "initialize": "",
319
326
  "finalize": "",
320
327
  "libs": [],
321
- "x": 310,
322
- "y": 660,
328
+ "x": 410,
329
+ "y": 680,
323
330
  "wires": [
324
331
  [
325
- "e9c7f25bddf4c167"
332
+ "3fd5d486caf072b5"
326
333
  ]
327
334
  ]
328
335
  },
329
336
  {
330
- "id": "859d210b50d203a4",
337
+ "id": "b9e262ebb761f709",
331
338
  "type": "ui-form",
332
- "z": "44b167d3.5d3188",
333
- "g": "53cd820c08927f03",
334
- "name": "",
335
- "group": "2e72b62e599dcc83",
336
- "label": "",
337
- "order": 6,
338
- "width": "2",
339
- "height": "3",
339
+ "z": "25c4e5d730592b2b",
340
+ "g": "d129ade3f9ed3659",
341
+ "name": "Create Job Order",
342
+ "group": "f3b27308f213ed63",
343
+ "label": "Create Job Order",
344
+ "order": 1,
345
+ "width": "3",
346
+ "height": "4",
340
347
  "options": [
341
348
  {
342
349
  "label": "Comments",
@@ -369,23 +376,25 @@
369
376
  "submit": "SendJobOrder",
370
377
  "cancel": "clear",
371
378
  "resetOnSubmit": true,
372
- "topic": "topic",
379
+ "topic": "payload",
373
380
  "topicType": "msg",
374
381
  "splitLayout": "",
375
382
  "className": "",
376
- "x": 130,
377
- "y": 660,
383
+ "dropdownOptions": [],
384
+ "x": 150,
385
+ "y": 680,
378
386
  "wires": [
379
387
  [
380
- "70c022ddb61c61b3"
388
+ "7fe1cd69324b6fd1",
389
+ "15e0c9ef0874e0eb"
381
390
  ]
382
391
  ]
383
392
  },
384
393
  {
385
- "id": "2693d1c45a502905",
394
+ "id": "b6d2d40b1ae2fa2c",
386
395
  "type": "switch",
387
- "z": "44b167d3.5d3188",
388
- "g": "53cd820c08927f03",
396
+ "z": "25c4e5d730592b2b",
397
+ "g": "d129ade3f9ed3659",
389
398
  "name": "",
390
399
  "property": "shouldStart",
391
400
  "propertyType": "msg",
@@ -400,48 +409,48 @@
400
409
  "checkall": "true",
401
410
  "repair": true,
402
411
  "outputs": 2,
403
- "x": 520,
404
- "y": 740,
412
+ "x": 470,
413
+ "y": 780,
405
414
  "wires": [
406
415
  [
407
- "6ccf4e248c8eab88"
416
+ "814cfd7c9337b1b1"
408
417
  ],
409
418
  [
410
- "5c137941f5b8ed2e"
419
+ "8cf31117c1bea29c"
411
420
  ]
412
421
  ]
413
422
  },
414
423
  {
415
- "id": "5c137941f5b8ed2e",
424
+ "id": "8cf31117c1bea29c",
416
425
  "type": "OpcUa-Client2-Call",
417
- "z": "44b167d3.5d3188",
418
- "g": "53cd820c08927f03",
426
+ "z": "25c4e5d730592b2b",
427
+ "g": "d129ade3f9ed3659",
419
428
  "inputs": 1,
420
429
  "output": 4,
421
430
  "name": "Call Store",
422
- "endpoint": "05260ca81c461b6e",
431
+ "endpoint": "db39ec6289f64f32",
423
432
  "action": "read",
424
433
  "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Store",
425
434
  "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
426
435
  "x": 680,
427
- "y": 780,
436
+ "y": 800,
428
437
  "wires": [
429
438
  [
430
- "8369fc155a2187d6"
439
+ "8f20b0e71b679e34"
431
440
  ],
432
441
  []
433
442
  ]
434
443
  },
435
444
  {
436
- "id": "624f5ed5d95c0363",
445
+ "id": "e6af947e9ff65d9f",
437
446
  "type": "ui-button",
438
- "z": "44b167d3.5d3188",
439
- "g": "76c189cf4c737b20",
440
- "group": "2e72b62e599dcc83",
447
+ "z": "25c4e5d730592b2b",
448
+ "g": "9d3c61f34686f717",
449
+ "group": "d6d1d412b897cd43",
441
450
  "name": "Start",
442
451
  "label": "Start",
443
452
  "order": 3,
444
- "width": "2",
453
+ "width": 1,
445
454
  "height": "1",
446
455
  "emulateClick": true,
447
456
  "tooltip": "",
@@ -454,24 +463,34 @@
454
463
  "payloadType": "str",
455
464
  "topic": "topic",
456
465
  "topicType": "msg",
466
+ "buttonColor": "",
467
+ "textColor": "",
468
+ "iconColor": "",
469
+ "enableClick": true,
470
+ "enablePointerdown": false,
471
+ "pointerdownPayload": "",
472
+ "pointerdownPayloadType": "str",
473
+ "enablePointerup": false,
474
+ "pointerupPayload": "",
475
+ "pointerupPayloadType": "str",
457
476
  "x": 110,
458
- "y": 440,
477
+ "y": 460,
459
478
  "wires": [
460
479
  [
461
- "264202d200921c3d"
480
+ "f0ffba5b4fe25341"
462
481
  ]
463
482
  ]
464
483
  },
465
484
  {
466
- "id": "2f8c29651c9a03b3",
485
+ "id": "4b2bcb690d01c253",
467
486
  "type": "ui-button",
468
- "z": "44b167d3.5d3188",
469
- "g": "76c189cf4c737b20",
470
- "group": "2e72b62e599dcc83",
487
+ "z": "25c4e5d730592b2b",
488
+ "g": "9d3c61f34686f717",
489
+ "group": "d6d1d412b897cd43",
471
490
  "name": "Abort",
472
491
  "label": "Abort",
473
492
  "order": 4,
474
- "width": "2",
493
+ "width": 1,
475
494
  "height": "1",
476
495
  "emulateClick": false,
477
496
  "tooltip": "",
@@ -484,24 +503,34 @@
484
503
  "payloadType": "str",
485
504
  "topic": "topic",
486
505
  "topicType": "msg",
506
+ "buttonColor": "",
507
+ "textColor": "",
508
+ "iconColor": "",
509
+ "enableClick": true,
510
+ "enablePointerdown": false,
511
+ "pointerdownPayload": "",
512
+ "pointerdownPayloadType": "str",
513
+ "enablePointerup": false,
514
+ "pointerupPayload": "",
515
+ "pointerupPayloadType": "str",
487
516
  "x": 110,
488
- "y": 480,
517
+ "y": 500,
489
518
  "wires": [
490
519
  [
491
- "abeec47eb859b6a8"
520
+ "d4cd78bd31be0b64"
492
521
  ]
493
522
  ]
494
523
  },
495
524
  {
496
- "id": "64f434e5f6814720",
525
+ "id": "b40d866850496887",
497
526
  "type": "ui-button",
498
- "z": "44b167d3.5d3188",
499
- "g": "76c189cf4c737b20",
500
- "group": "2e72b62e599dcc83",
527
+ "z": "25c4e5d730592b2b",
528
+ "g": "9d3c61f34686f717",
529
+ "group": "d6d1d412b897cd43",
501
530
  "name": "Clear",
502
531
  "label": "Clear",
503
532
  "order": 5,
504
- "width": "2",
533
+ "width": 1,
505
534
  "height": "1",
506
535
  "emulateClick": true,
507
536
  "tooltip": "",
@@ -514,19 +543,29 @@
514
543
  "payloadType": "str",
515
544
  "topic": "topic",
516
545
  "topicType": "msg",
546
+ "buttonColor": "",
547
+ "textColor": "",
548
+ "iconColor": "",
549
+ "enableClick": true,
550
+ "enablePointerdown": false,
551
+ "pointerdownPayload": "",
552
+ "pointerdownPayloadType": "str",
553
+ "enablePointerup": false,
554
+ "pointerupPayload": "",
555
+ "pointerupPayloadType": "str",
517
556
  "x": 110,
518
- "y": 520,
557
+ "y": 540,
519
558
  "wires": [
520
559
  [
521
- "9350020966300ac0"
560
+ "397500cb931863db"
522
561
  ]
523
562
  ]
524
563
  },
525
564
  {
526
- "id": "a3f2a4fd281d277a",
565
+ "id": "771efa88648e9096",
527
566
  "type": "inject",
528
- "z": "44b167d3.5d3188",
529
- "g": "53cd820c08927f03",
567
+ "z": "25c4e5d730592b2b",
568
+ "g": "d129ade3f9ed3659",
530
569
  "name": "",
531
570
  "props": [
532
571
  {
@@ -541,18 +580,19 @@
541
580
  "payload": "{\"Priority\":2,\"StoreAndStart\":true,\"Comment\":\"line1\\nline2\"}",
542
581
  "payloadType": "json",
543
582
  "x": 130,
544
- "y": 700,
583
+ "y": 720,
545
584
  "wires": [
546
585
  [
547
- "70c022ddb61c61b3"
586
+ "7fe1cd69324b6fd1",
587
+ "15e0c9ef0874e0eb"
548
588
  ]
549
589
  ]
550
590
  },
551
591
  {
552
- "id": "fb714196be82ddbd",
592
+ "id": "4d8e00de18ead6b6",
553
593
  "type": "function",
554
- "z": "44b167d3.5d3188",
555
- "g": "4d795342d3d0a8a3",
594
+ "z": "25c4e5d730592b2b",
595
+ "g": "b69c611cfdc19ed6",
556
596
  "name": "Store Selection",
557
597
  "func": "if (msg.action == \"multi_select\") {\n const rows = RED.util.cloneMessage(msg.payload);\n flow.set(\"selectedRows\", rows);\n}\nreturn msg;",
558
598
  "outputs": 1,
@@ -561,17 +601,17 @@
561
601
  "initialize": "",
562
602
  "finalize": "",
563
603
  "libs": [],
564
- "x": 720,
604
+ "x": 780,
565
605
  "y": 280,
566
606
  "wires": [
567
607
  []
568
608
  ]
569
609
  },
570
610
  {
571
- "id": "264202d200921c3d",
611
+ "id": "f0ffba5b4fe25341",
572
612
  "type": "function",
573
- "z": "44b167d3.5d3188",
574
- "g": "76c189cf4c737b20",
613
+ "z": "25c4e5d730592b2b",
614
+ "g": "9d3c61f34686f717",
575
615
  "name": "Format Method Arguments",
576
616
  "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]];",
577
617
  "outputs": 1,
@@ -581,58 +621,59 @@
581
621
  "finalize": "",
582
622
  "libs": [],
583
623
  "x": 380,
584
- "y": 440,
624
+ "y": 460,
585
625
  "wires": [
586
626
  [
587
- "5d30097b3c6961e4"
627
+ "ed6656cca99e19f1"
588
628
  ]
589
629
  ]
590
630
  },
591
631
  {
592
- "id": "a258c7c279349105",
632
+ "id": "b158d0e8a511836d",
593
633
  "type": "function",
594
- "z": "44b167d3.5d3188",
595
- "g": "aea140a2210cb654",
634
+ "z": "25c4e5d730592b2b",
635
+ "g": "0fd4a5ae57d0c6ae",
596
636
  "name": "clean up",
597
- "func": "msg.payload.Manufacturer = msg.payload.Manufacturer?.text || \"\";\nreturn msg;",
637
+ "func": "msg.payload.Manufacturer = msg.payload.Manufacturer?.text || \"\";\nmsg.payload = [ msg.payload];\nreturn msg;",
598
638
  "outputs": 1,
599
639
  "timeout": 0,
600
640
  "noerr": 0,
601
641
  "initialize": "",
602
642
  "finalize": "",
603
643
  "libs": [],
604
- "x": 520,
605
- "y": 140,
644
+ "x": 500,
645
+ "y": 100,
606
646
  "wires": [
607
647
  [
608
- "317be299ea9203c5"
648
+ "ef7a8c532d2d9966",
649
+ "9730539f5e0a2c5d"
609
650
  ]
610
651
  ]
611
652
  },
612
653
  {
613
- "id": "5d30097b3c6961e4",
654
+ "id": "ed6656cca99e19f1",
614
655
  "type": "OpcUa-Client2-Call",
615
- "z": "44b167d3.5d3188",
616
- "g": "76c189cf4c737b20",
656
+ "z": "25c4e5d730592b2b",
657
+ "g": "9d3c61f34686f717",
617
658
  "inputs": 1,
618
659
  "output": 4,
619
660
  "name": "Call Start",
620
- "endpoint": "05260ca81c461b6e",
661
+ "endpoint": "c22bb208bf9b2236",
621
662
  "action": "read",
622
663
  "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Start",
623
664
  "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
624
665
  "x": 620,
625
- "y": 440,
666
+ "y": 460,
626
667
  "wires": [
627
668
  [],
628
669
  []
629
670
  ]
630
671
  },
631
672
  {
632
- "id": "abeec47eb859b6a8",
673
+ "id": "d4cd78bd31be0b64",
633
674
  "type": "function",
634
- "z": "44b167d3.5d3188",
635
- "g": "76c189cf4c737b20",
675
+ "z": "25c4e5d730592b2b",
676
+ "g": "9d3c61f34686f717",
636
677
  "name": "Format Method Arguments",
637
678
  "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]];",
638
679
  "outputs": 1,
@@ -642,37 +683,37 @@
642
683
  "finalize": "",
643
684
  "libs": [],
644
685
  "x": 380,
645
- "y": 480,
686
+ "y": 500,
646
687
  "wires": [
647
688
  [
648
- "0654f7e5e114e5d2"
689
+ "472cb59b34337242"
649
690
  ]
650
691
  ]
651
692
  },
652
693
  {
653
- "id": "0654f7e5e114e5d2",
694
+ "id": "472cb59b34337242",
654
695
  "type": "OpcUa-Client2-Call",
655
- "z": "44b167d3.5d3188",
656
- "g": "76c189cf4c737b20",
696
+ "z": "25c4e5d730592b2b",
697
+ "g": "9d3c61f34686f717",
657
698
  "inputs": 1,
658
699
  "output": 4,
659
700
  "name": "Call Abort",
660
- "endpoint": "05260ca81c461b6e",
701
+ "endpoint": "db39ec6289f64f32",
661
702
  "action": "read",
662
703
  "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Abort",
663
704
  "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
664
705
  "x": 620,
665
- "y": 480,
706
+ "y": 500,
666
707
  "wires": [
667
708
  [],
668
709
  []
669
710
  ]
670
711
  },
671
712
  {
672
- "id": "9350020966300ac0",
713
+ "id": "397500cb931863db",
673
714
  "type": "function",
674
- "z": "44b167d3.5d3188",
675
- "g": "76c189cf4c737b20",
715
+ "z": "25c4e5d730592b2b",
716
+ "g": "9d3c61f34686f717",
676
717
  "name": "Format Method Arguments",
677
718
  "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]];",
678
719
  "outputs": 1,
@@ -682,49 +723,49 @@
682
723
  "finalize": "",
683
724
  "libs": [],
684
725
  "x": 380,
685
- "y": 520,
726
+ "y": 540,
686
727
  "wires": [
687
728
  [
688
- "35813ce352e85c7a"
729
+ "047e2383e4cea75b"
689
730
  ]
690
731
  ]
691
732
  },
692
733
  {
693
- "id": "35813ce352e85c7a",
734
+ "id": "047e2383e4cea75b",
694
735
  "type": "OpcUa-Client2-Call",
695
- "z": "44b167d3.5d3188",
696
- "g": "76c189cf4c737b20",
736
+ "z": "25c4e5d730592b2b",
737
+ "g": "9d3c61f34686f717",
697
738
  "inputs": 1,
698
739
  "output": 4,
699
740
  "name": "Call Clear",
700
- "endpoint": "05260ca81c461b6e",
741
+ "endpoint": "db39ec6289f64f32",
701
742
  "action": "read",
702
743
  "methodId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl.isa95JobControl:Clear",
703
744
  "objectId": "/machinery:Machines/own:MyControledMachine.machinery:MachineryBuildingBlocks.machineryJobs:JobManagement.machineryJobs:JobOrderControl",
704
745
  "x": 620,
705
- "y": 520,
746
+ "y": 540,
706
747
  "wires": [
707
748
  [],
708
749
  []
709
750
  ]
710
751
  },
711
752
  {
712
- "id": "bacd7289227e076e",
753
+ "id": "5d47e925b0e22999",
713
754
  "type": "comment",
714
- "z": "44b167d3.5d3188",
755
+ "z": "25c4e5d730592b2b",
715
756
  "name": "Create JobOrder",
716
757
  "info": "",
717
758
  "x": 120,
718
- "y": 600,
759
+ "y": 620,
719
760
  "wires": []
720
761
  },
721
762
  {
722
- "id": "8369fc155a2187d6",
763
+ "id": "8f20b0e71b679e34",
723
764
  "type": "debug",
724
- "z": "44b167d3.5d3188",
725
- "g": "53cd820c08927f03",
765
+ "z": "25c4e5d730592b2b",
766
+ "g": "d129ade3f9ed3659",
726
767
  "name": "debug 1",
727
- "active": true,
768
+ "active": false,
728
769
  "tosidebar": true,
729
770
  "console": false,
730
771
  "tostatus": false,
@@ -732,23 +773,23 @@
732
773
  "statusVal": "",
733
774
  "statusType": "auto",
734
775
  "x": 940,
735
- "y": 780,
776
+ "y": 800,
736
777
  "wires": []
737
778
  },
738
779
  {
739
- "id": "b736875d33a97216",
780
+ "id": "a7d6681dd02b656e",
740
781
  "type": "comment",
741
- "z": "44b167d3.5d3188",
782
+ "z": "25c4e5d730592b2b",
742
783
  "name": "Extract Machine Identification (in one operation !)",
743
784
  "info": "This sequence reads the Identification variables of the machine\nand display it in a list on the UI",
744
785
  "x": 220,
745
- "y": 80,
786
+ "y": 40,
746
787
  "wires": []
747
788
  },
748
789
  {
749
- "id": "547c9af37a313d76",
790
+ "id": "360eb9aed981544d",
750
791
  "type": "comment",
751
- "z": "44b167d3.5d3188",
792
+ "z": "25c4e5d730592b2b",
752
793
  "name": "List of Jobs",
753
794
  "info": "",
754
795
  "x": 110,
@@ -756,17 +797,69 @@
756
797
  "wires": []
757
798
  },
758
799
  {
759
- "id": "4323a00aa97369a2",
800
+ "id": "06b4272e41021789",
760
801
  "type": "comment",
761
- "z": "44b167d3.5d3188",
802
+ "z": "25c4e5d730592b2b",
762
803
  "name": "Actions on List of Jobs selected rows",
763
804
  "info": "",
764
805
  "x": 180,
765
- "y": 380,
806
+ "y": 400,
766
807
  "wires": []
767
808
  },
768
809
  {
769
- "id": "05260ca81c461b6e",
810
+ "id": "9730539f5e0a2c5d",
811
+ "type": "debug",
812
+ "z": "25c4e5d730592b2b",
813
+ "g": "0fd4a5ae57d0c6ae",
814
+ "name": "debug 2",
815
+ "active": false,
816
+ "tosidebar": true,
817
+ "console": false,
818
+ "tostatus": false,
819
+ "complete": "payload",
820
+ "targetType": "msg",
821
+ "statusVal": "",
822
+ "statusType": "auto",
823
+ "x": 660,
824
+ "y": 140,
825
+ "wires": []
826
+ },
827
+ {
828
+ "id": "1487015ec02a1dae",
829
+ "type": "debug",
830
+ "z": "25c4e5d730592b2b",
831
+ "g": "b69c611cfdc19ed6",
832
+ "name": "debug 3",
833
+ "active": false,
834
+ "tosidebar": true,
835
+ "console": false,
836
+ "tostatus": false,
837
+ "complete": "false",
838
+ "statusVal": "",
839
+ "statusType": "auto",
840
+ "x": 560,
841
+ "y": 320,
842
+ "wires": []
843
+ },
844
+ {
845
+ "id": "15e0c9ef0874e0eb",
846
+ "type": "debug",
847
+ "z": "25c4e5d730592b2b",
848
+ "g": "d129ade3f9ed3659",
849
+ "name": "debug 4",
850
+ "active": true,
851
+ "tosidebar": true,
852
+ "console": false,
853
+ "tostatus": false,
854
+ "complete": "false",
855
+ "statusVal": "",
856
+ "statusType": "auto",
857
+ "x": 380,
858
+ "y": 720,
859
+ "wires": []
860
+ },
861
+ {
862
+ "id": "db39ec6289f64f32",
770
863
  "type": "OpcUa-Endpoint2",
771
864
  "name": "",
772
865
  "endpoint": "opc.tcp://opcuademo.sterfive.com:26543/UA/SampleServer",
@@ -892,49 +985,190 @@
892
985
  ]
893
986
  },
894
987
  {
895
- "id": "2e72b62e599dcc83",
988
+ "id": "d6d1d412b897cd43",
896
989
  "type": "ui-group",
897
990
  "name": "JobManager",
898
991
  "page": "72c675db46ea859f",
899
- "width": "10",
992
+ "width": 8,
900
993
  "height": "12",
994
+ "order": 2,
995
+ "showTitle": true,
996
+ "className": "",
997
+ "visible": "true",
998
+ "disabled": "false",
999
+ "groupType": "default"
1000
+ },
1001
+ {
1002
+ "id": "f3b27308f213ed63",
1003
+ "type": "ui-group",
1004
+ "name": "Edit Form",
1005
+ "page": "72c675db46ea859f",
1006
+ "width": "4",
1007
+ "height": "4",
901
1008
  "order": 1,
902
1009
  "showTitle": true,
903
1010
  "className": "",
904
1011
  "visible": "true",
905
- "disabled": "false"
1012
+ "disabled": "false",
1013
+ "groupType": "default"
1014
+ },
1015
+ {
1016
+ "id": "c22bb208bf9b2236",
1017
+ "type": "OpcUa-Endpoint2",
1018
+ "name": "",
1019
+ "endpoint": "opc.tcp://opcuademo.sterfive.com:26541",
1020
+ "securityMode": "None",
1021
+ "securityPolicy": "None",
1022
+ "userIdentityType": "Anonymous",
1023
+ "pkiName": "",
1024
+ "useTransport": false,
1025
+ "maxChunkCount": "1",
1026
+ "maxMessageSize": "8192",
1027
+ "receiveBufferSize": "8192",
1028
+ "sendBufferSize": "8192",
1029
+ "subscriptions": [
1030
+ {
1031
+ "id": "s0",
1032
+ "name": "Default Subscription",
1033
+ "isDefault": true,
1034
+ "parameters": {
1035
+ "publishingEnabled": true,
1036
+ "requestedLifetimeCount": "100",
1037
+ "requestedMaxKeepAliveCount": "10",
1038
+ "requestedPublishingInterval": "1000",
1039
+ "maxNotificationsPerPublish": "0",
1040
+ "priority": "100"
1041
+ }
1042
+ }
1043
+ ],
1044
+ "namespaceAliases": [
1045
+ {
1046
+ "namespaceUri": "http://opcfoundation.org/UA/",
1047
+ "alias": "ua"
1048
+ },
1049
+ {
1050
+ "namespaceUri": "~urn:.*",
1051
+ "alias": "own"
1052
+ },
1053
+ {
1054
+ "namespaceUri": "http://opcfoundation.org/UA/DI/",
1055
+ "alias": "di"
1056
+ },
1057
+ {
1058
+ "namespaceUri": "http://opcfoundation.org/UA/ADI/",
1059
+ "alias": "adi"
1060
+ },
1061
+ {
1062
+ "namespaceUri": "http://opcfoundation.org/UA/AutoID/",
1063
+ "alias": "autoId"
1064
+ },
1065
+ {
1066
+ "namespaceUri": "http://opcfoundation.org/UA/MachineVision",
1067
+ "alias": "machineVision"
1068
+ },
1069
+ {
1070
+ "namespaceUri": "http://opcfoundation.org/UA/Robotics/",
1071
+ "alias": "robotics"
1072
+ },
1073
+ {
1074
+ "namespaceUri": "http://opcfoundation.org/UA/CommercialKitchenEquipment/",
1075
+ "alias": "cke"
1076
+ },
1077
+ {
1078
+ "namespaceUri": "http://opcfoundation.org/UA/ISA95-JOBCONTROL_V2/",
1079
+ "alias": "isa95JobControl"
1080
+ },
1081
+ {
1082
+ "namespaceUri": "http://opcfoundation.org/UA/Dictionary/IRDI",
1083
+ "alias": "irdi"
1084
+ },
1085
+ {
1086
+ "namespaceUri": "http://opcfoundation.org/UA/IA/",
1087
+ "alias": "ia"
1088
+ },
1089
+ {
1090
+ "namespaceUri": "http://opcfoundation.org/UA/Machinery/",
1091
+ "alias": "machinery"
1092
+ },
1093
+ {
1094
+ "namespaceUri": "http://opcfoundation.org/UA/Machinery/Jobs/",
1095
+ "alias": "machineryJobs"
1096
+ },
1097
+ {
1098
+ "namespaceUri": "http://opcfoundation.org/UA/MachineTool/",
1099
+ "alias": "machineTool"
1100
+ },
1101
+ {
1102
+ "namespaceUri": "http://opcfoundation.org/UA/PackML/",
1103
+ "alias": "packML"
1104
+ },
1105
+ {
1106
+ "namespaceUri": "urn://node-opcua-simulator",
1107
+ "alias": "ns2"
1108
+ },
1109
+ {
1110
+ "namespaceUri": "http://sterfive.com/UA/CoffeeMachine/",
1111
+ "alias": "ns3"
1112
+ }
1113
+ ]
906
1114
  },
907
1115
  {
908
1116
  "id": "72c675db46ea859f",
909
1117
  "type": "ui-page",
910
- "name": "Page 1",
911
- "ui": "80991d06c0a2d115",
912
- "path": "/page1",
913
- "icon": "home",
1118
+ "name": "JobManager",
1119
+ "ui": "ba750d2403672175",
1120
+ "path": "/JobManager",
1121
+ "icon": "job",
914
1122
  "layout": "grid",
915
- "theme": "9a26b0f7e9fcb54c",
1123
+ "theme": "263ce4545ccf6ac5",
1124
+ "breakpoints": [
1125
+ {
1126
+ "name": "Default",
1127
+ "px": "0",
1128
+ "cols": "3"
1129
+ },
1130
+ {
1131
+ "name": "Tablet",
1132
+ "px": "576",
1133
+ "cols": "6"
1134
+ },
1135
+ {
1136
+ "name": "Small Desktop",
1137
+ "px": "768",
1138
+ "cols": "9"
1139
+ },
1140
+ {
1141
+ "name": "Desktop",
1142
+ "px": "1024",
1143
+ "cols": "12"
1144
+ }
1145
+ ],
916
1146
  "order": 1,
917
1147
  "className": "",
918
1148
  "visible": "true",
919
1149
  "disabled": "false"
920
1150
  },
921
1151
  {
922
- "id": "80991d06c0a2d115",
1152
+ "id": "ba750d2403672175",
923
1153
  "type": "ui-base",
924
1154
  "name": "My Dashboard",
925
1155
  "path": "/dashboard",
1156
+ "appIcon": "",
926
1157
  "includeClientData": true,
927
1158
  "acceptsClientConfig": [
928
1159
  "ui-notification",
929
1160
  "ui-control"
930
1161
  ],
931
1162
  "showPathInSidebar": false,
932
- "showPageTitle": true,
1163
+ "headerContent": "page",
933
1164
  "navigationStyle": "default",
934
- "titleBarStyle": "default"
1165
+ "titleBarStyle": "default",
1166
+ "showReconnectNotification": true,
1167
+ "notificationDisplayTime": 1,
1168
+ "showDisconnectNotification": true
935
1169
  },
936
1170
  {
937
- "id": "9a26b0f7e9fcb54c",
1171
+ "id": "263ce4545ccf6ac5",
938
1172
  "type": "ui-theme",
939
1173
  "name": "Default Theme",
940
1174
  "colors": {