node-red-dashboard-2-hmi 0.1.10 → 0.1.11

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,610 +1,610 @@
1
- [
2
- {
3
- "id": "ex_pin",
4
- "type": "tab",
5
- "label": "IHM pintura",
6
- "info": "Tela de linha de pintura com dados simulados. Abra /dashboard/pintura."
7
- },
8
- {
9
- "id": "hx_base",
10
- "type": "ui-base",
11
- "name": "Dashboard",
12
- "path": "/dashboard",
13
- "includeClientData": true,
14
- "acceptsClientConfig": [
15
- "ui-notification",
16
- "ui-control"
17
- ],
18
- "showPathInSidebar": false,
19
- "navigationStyle": "none",
20
- "titleBarStyle": "hidden"
21
- },
22
- {
23
- "id": "hx_theme",
24
- "type": "ui-theme",
25
- "name": "Default",
26
- "colors": {
27
- "surface": "#ffffff",
28
- "primary": "#0094CE",
29
- "bgPage": "#eeeeee",
30
- "groupBg": "#ffffff",
31
- "groupOutline": "#cccccc"
32
- },
33
- "sizes": {
34
- "pagePadding": "12px",
35
- "groupGap": "12px",
36
- "groupBorderRadius": "4px",
37
- "widgetGap": "12px"
38
- }
39
- },
40
- {
41
- "id": "pg_pin",
42
- "type": "ui-page",
43
- "name": "Pintura",
44
- "ui": "hx_base",
45
- "path": "/pintura",
46
- "icon": "factory",
47
- "layout": "grid",
48
- "theme": "hx_theme",
49
- "breakpoints": [
50
- {
51
- "name": "Default",
52
- "px": "0",
53
- "cols": "3"
54
- },
55
- {
56
- "name": "Desktop",
57
- "px": "1024",
58
- "cols": "12"
59
- }
60
- ],
61
- "order": 2,
62
- "visible": "true",
63
- "disabled": "false"
64
- },
65
- {
66
- "id": "pin_cmt",
67
- "type": "comment",
68
- "z": "ex_pin",
69
- "name": "Simulação a cada 1 s. Clique no motor da esteira para o faceplate (Ligar / Desligar / Reset).",
70
- "info": "",
71
- "x": 330,
72
- "y": 40,
73
- "wires": []
74
- },
75
- {
76
- "id": "pin_tick",
77
- "type": "inject",
78
- "z": "ex_pin",
79
- "name": "a cada 1 s",
80
- "props": [],
81
- "repeat": "1",
82
- "once": true,
83
- "onceDelay": "1",
84
- "topic": "",
85
- "x": 120,
86
- "y": 120,
87
- "wires": [
88
- [
89
- "pin_sim"
90
- ]
91
- ]
92
- },
93
- {
94
- "id": "pin_sim",
95
- "type": "function",
96
- "z": "ex_pin",
97
- "name": "simula linha",
98
- "func": "// Simulação da linha de pintura. Troque pelos valores do seu CLP.\nconst s = flow.get('sim') || { pecas: 0, tintaA: 80, tintaB: 60, t: 0, temp: 150 }\nconst cmd = flow.get('cmd') || { esteira: 1 }\ns.t++\nconst ligada = cmd.esteira === 1 && !s.falha\nif (ligada && s.t % 3 === 0) s.pecas++\ns.tintaA = s.tintaA <= 8 ? 95 : s.tintaA - (ligada ? 0.6 : 0)\ns.tintaB = s.tintaB <= 5 ? 90 : s.tintaB - (ligada ? 0.4 : 0)\ns.temp += ((ligada ? 205 : 120) - s.temp) * 0.08 + (Math.random() - 0.5) * 3\n// de vez em quando a cabine entra em falha; o comando reset limpa\nif (!s.falha && Math.random() < 0.01) s.falha = true\nif (cmd.reset) { s.falha = false; cmd.reset = 0; flow.set('cmd', cmd) }\nflow.set('sim', s)\nconst r = v => Math.round(v * 10) / 10\nmsg.payload = {\n lote: 'P' + (2610 + Math.floor(s.pecas / 50)), pecas: s.pecas, modo: 1,\n esteira: ligada ? 1 : 0, falhaEsteira: 0, velocidade: ligada ? r(6 + Math.random()) : 0,\n tempDesengraxe: r(62 + Math.random() * 4), aqDesengraxe: 1,\n cabine: ligada ? 1 : 0, falhaCabine: s.falha ? 1 : 0, robo: ligada ? 1 : 0,\n tempEstufa: r(s.temp), spEstufa: 200, queimador: s.temp < 200 ? 1 : 0, portaEstufa: 0,\n resfriamento: ligada ? 1 : 0, pecaSaida: ligada && s.t % 3 === 0 ? 1 : 0,\n tintaA: r(s.tintaA), tintaB: r(s.tintaB),\n disp: 91.5, perf: r(86 + Math.random() * 4), qual: 98.2,\n turno1: 412, turno2: 388, turno3: s.pecas,\n tProduzindo: 410 + Math.floor(s.t / 60), tParada: 35, tSetup: 22\n}\nreturn msg",
99
- "outputs": 1,
100
- "x": 290,
101
- "y": 120,
102
- "wires": [
103
- [
104
- "pin_canvas"
105
- ]
106
- ]
107
- },
108
- {
109
- "id": "pin_canvas",
110
- "type": "ui-hmi-canvas",
111
- "z": "ex_pin",
112
- "name": "Linha de pintura",
113
- "scope": "page",
114
- "page": "pg_pin",
115
- "order": 1,
116
- "viewW": 1280,
117
- "viewH": 720,
118
- "theme": "isa101",
119
- "fit": "screen",
120
- "background": "theme",
121
- "offlineAfter": 10,
122
- "locale": "pt-BR",
123
- "alarms": "on",
124
- "alarmsOut": "no",
125
- "symbols": [
126
- {
127
- "id": "e1",
128
- "type": "text",
129
- "x": 20,
130
- "y": 14,
131
- "w": 700,
132
- "h": 32,
133
- "rot": 0,
134
- "key": "",
135
- "props": {
136
- "text": "LINHA DE PINTURA · Lote {lote} · {pecas} peças hoje",
137
- "size": 20,
138
- "align": "start",
139
- "bold": "yes",
140
- "tone": "normal",
141
- "unit": "",
142
- "decimals": ""
143
- }
144
- },
145
- {
146
- "id": "e2",
147
- "type": "mode",
148
- "x": 880,
149
- "y": 12,
150
- "w": 150,
151
- "h": 36,
152
- "rot": 0,
153
- "key": "modo",
154
- "props": {
155
- "title": "MODO",
156
- "texts": "0=MANUAL,1=AUTO,2=LOCAL,3=REMOTO",
157
- "normal": "1",
158
- "label": ""
159
- }
160
- },
161
- {
162
- "id": "e3",
163
- "type": "alarmSummary",
164
- "x": 1040,
165
- "y": 10,
166
- "w": 220,
167
- "h": 40,
168
- "rot": 0,
169
- "key": "",
170
- "props": {
171
- "label": ""
172
- }
173
- },
174
- {
175
- "id": "e4",
176
- "type": "frame",
177
- "x": 20,
178
- "y": 300,
179
- "w": 1240,
180
- "h": 14,
181
- "rot": 0,
182
- "key": "",
183
- "props": {
184
- "shape": "rect",
185
- "tone": "floor",
186
- "label": "",
187
- "level": "no",
188
- "min": 0,
189
- "max": 100,
190
- "levelColor": "level",
191
- "showValue": "no",
192
- "unit": "%",
193
- "decimals": 0
194
- }
195
- },
196
- {
197
- "id": "e5",
198
- "type": "line",
199
- "x": 40,
200
- "y": 286,
201
- "w": 1200,
202
- "h": 1,
203
- "rot": 0,
204
- "key": "esteira",
205
- "props": {
206
- "style": "conveyor",
207
- "onWhen": "nonzero",
208
- "threshold": 0,
209
- "flow": "auto",
210
- "points": [
211
- [
212
- 0,
213
- 0
214
- ],
215
- [
216
- 1200,
217
- 0
218
- ]
219
- ]
220
- }
221
- },
222
- {
223
- "id": "e6",
224
- "type": "motor",
225
- "x": 40,
226
- "y": 200,
227
- "w": 70,
228
- "h": 70,
229
- "rot": 0,
230
- "key": "esteira",
231
- "props": {
232
- "label": "M1 ESTEIRA",
233
- "onWhen": "nonzero",
234
- "threshold": 0,
235
- "faultKey": "falhaEsteira",
236
- "priority": "1"
237
- },
238
- "action": {
239
- "mode": "faceplate",
240
- "confirm": "yes",
241
- "pin": "no",
242
- "value": "",
243
- "topic": "",
244
- "valueKey": "",
245
- "valueUnit": "",
246
- "modeKey": "modo",
247
- "modeTexts": "0=MANUAL,1=AUTO",
248
- "hoursKey": "",
249
- "startsKey": "",
250
- "onTopic": "cmd/esteira",
251
- "onValue": "1",
252
- "offTopic": "cmd/esteira",
253
- "offValue": "0",
254
- "resetTopic": "reset",
255
- "resetValue": "1"
256
- }
257
- },
258
- {
259
- "id": "e7",
260
- "type": "tag",
261
- "x": 130,
262
- "y": 204,
263
- "w": 150,
264
- "h": 60,
265
- "rot": 0,
266
- "key": "velocidade",
267
- "props": {
268
- "title": "VELOCIDADE",
269
- "unit": "m/min",
270
- "decimals": 1,
271
- "min": "",
272
- "max": "",
273
- "lo": 2,
274
- "hi": 9,
275
- "priority": "2"
276
- }
277
- },
278
- {
279
- "id": "e8",
280
- "type": "tank",
281
- "x": 320,
282
- "y": 160,
283
- "w": 90,
284
- "h": 120,
285
- "rot": 0,
286
- "key": "tempDesengraxe",
287
- "props": {
288
- "label": "DESENGRAXE",
289
- "unit": "°C",
290
- "decimals": 0,
291
- "min": 0,
292
- "max": 90,
293
- "lo": 45,
294
- "hi": 75,
295
- "priority": "2"
296
- }
297
- },
298
- {
299
- "id": "e9",
300
- "type": "heater",
301
- "x": 420,
302
- "y": 236,
303
- "w": 70,
304
- "h": 36,
305
- "rot": 0,
306
- "key": "aqDesengraxe",
307
- "props": {
308
- "label": "",
309
- "onWhen": "nonzero",
310
- "threshold": 0,
311
- "faultKey": "",
312
- "priority": "1"
313
- }
314
- },
315
- {
316
- "id": "e10",
317
- "type": "paintBooth",
318
- "x": 520,
319
- "y": 140,
320
- "w": 190,
321
- "h": 140,
322
- "rot": 0,
323
- "key": "cabine",
324
- "props": {
325
- "label": "CABINE",
326
- "onWhen": "nonzero",
327
- "threshold": 0,
328
- "invert": "no",
329
- "faultKey": "falhaCabine",
330
- "priority": "1"
331
- }
332
- },
333
- {
334
- "id": "e11",
335
- "type": "robot",
336
- "x": 600,
337
- "y": 150,
338
- "w": 90,
339
- "h": 100,
340
- "rot": 0,
341
- "key": "robo",
342
- "props": {
343
- "label": "",
344
- "onWhen": "nonzero",
345
- "threshold": 0,
346
- "invert": "no",
347
- "faultKey": "",
348
- "priority": "1",
349
- "weldKey": ""
350
- }
351
- },
352
- {
353
- "id": "e12",
354
- "type": "oven",
355
- "x": 760,
356
- "y": 140,
357
- "w": 220,
358
- "h": 140,
359
- "rot": 0,
360
- "key": "tempEstufa",
361
- "props": {
362
- "label": "ESTUFA",
363
- "unit": "°C",
364
- "decimals": 0,
365
- "lo": 160,
366
- "hi": 220,
367
- "priority": "2",
368
- "doorKey": "portaEstufa",
369
- "heatKey": "queimador"
370
- }
371
- },
372
- {
373
- "id": "e13",
374
- "type": "fan",
375
- "x": 1060,
376
- "y": 200,
377
- "w": 70,
378
- "h": 70,
379
- "rot": 0,
380
- "key": "resfriamento",
381
- "props": {
382
- "label": "RESFRIAMENTO",
383
- "onWhen": "nonzero",
384
- "threshold": 0,
385
- "faultKey": "",
386
- "priority": "1"
387
- }
388
- },
389
- {
390
- "id": "e14",
391
- "type": "sensor",
392
- "x": 1150,
393
- "y": 240,
394
- "w": 44,
395
- "h": 44,
396
- "rot": 0,
397
- "key": "pecaSaida",
398
- "props": {
399
- "label": "SAÍDA",
400
- "kind": "photo",
401
- "onWhen": "nonzero",
402
- "threshold": 0
403
- }
404
- },
405
- {
406
- "id": "e15",
407
- "type": "frame",
408
- "x": 1100,
409
- "y": 60,
410
- "w": 70,
411
- "h": 100,
412
- "rot": 0,
413
- "key": "tintaA",
414
- "props": {
415
- "shape": "silo",
416
- "tone": "equip",
417
- "label": "TINTA A",
418
- "level": "up",
419
- "min": 0,
420
- "max": 100,
421
- "levelColor": "level",
422
- "showValue": "yes",
423
- "unit": "%",
424
- "decimals": 0,
425
- "lo": ""
426
- }
427
- },
428
- {
429
- "id": "e16",
430
- "type": "frame",
431
- "x": 1190,
432
- "y": 70,
433
- "w": 70,
434
- "h": 90,
435
- "rot": 0,
436
- "key": "tintaB",
437
- "props": {
438
- "shape": "hopper",
439
- "tone": "equip",
440
- "label": "TINTA B",
441
- "level": "up",
442
- "min": 0,
443
- "max": 100,
444
- "levelColor": "material",
445
- "showValue": "yes",
446
- "unit": "%",
447
- "decimals": 0
448
- }
449
- },
450
- {
451
- "id": "e17",
452
- "type": "trend",
453
- "x": 520,
454
- "y": 50,
455
- "w": 420,
456
- "h": 80,
457
- "rot": 0,
458
- "key": "tempEstufa",
459
- "props": {
460
- "title": "TEMPERATURA DA ESTUFA",
461
- "unit": "°C",
462
- "decimals": 0,
463
- "min": 100,
464
- "max": 240,
465
- "window": 300
466
- }
467
- },
468
- {
469
- "id": "e18",
470
- "type": "isaBar",
471
- "x": 990,
472
- "y": 120,
473
- "w": 80,
474
- "h": 140,
475
- "rot": 0,
476
- "key": "tempEstufa",
477
- "props": {
478
- "title": "ESTUFA",
479
- "unit": "°C",
480
- "decimals": 0,
481
- "min": 0,
482
- "max": 260,
483
- "lolo": 140,
484
- "lo": 160,
485
- "hi": 220,
486
- "hihi": 240,
487
- "spKey": "spEstufa",
488
- "priority": "2",
489
- "alarmList": "no"
490
- }
491
- },
492
- {
493
- "id": "e19",
494
- "type": "oee",
495
- "x": 20,
496
- "y": 350,
497
- "w": 360,
498
- "h": 160,
499
- "rot": 0,
500
- "key": "",
501
- "props": {
502
- "title": "OEE DA LINHA",
503
- "availKey": "disp",
504
- "perfKey": "perf",
505
- "qualKey": "qual",
506
- "oeeKey": "",
507
- "goal": 85,
508
- "low": 60
509
- }
510
- },
511
- {
512
- "id": "e20",
513
- "type": "barChart",
514
- "x": 400,
515
- "y": 350,
516
- "w": 420,
517
- "h": 160,
518
- "rot": 0,
519
- "key": "",
520
- "props": {
521
- "title": "PEÇAS POR TURNO",
522
- "series": "turno1:1º turno, turno2:2º turno, turno3:3º turno",
523
- "labels": "",
524
- "unit": "",
525
- "decimals": 0,
526
- "max": "",
527
- "goal": 400,
528
- "lowColor": "warn"
529
- }
530
- },
531
- {
532
- "id": "e21",
533
- "type": "donut",
534
- "x": 840,
535
- "y": 350,
536
- "w": 420,
537
- "h": 160,
538
- "rot": 0,
539
- "key": "",
540
- "props": {
541
- "title": "TEMPO HOJE",
542
- "series": "tProduzindo:Produzindo, tParada:Parada, tSetup:Setup",
543
- "labels": "",
544
- "unit": "min",
545
- "decimals": 0,
546
- "legend": "yes",
547
- "center": "total"
548
- }
549
- },
550
- {
551
- "id": "e22",
552
- "type": "alarmList",
553
- "x": 20,
554
- "y": 530,
555
- "w": 1240,
556
- "h": 180,
557
- "rot": 0,
558
- "key": "",
559
- "props": {
560
- "title": "ALARMES",
561
- "rowHeight": 26,
562
- "tab": "active",
563
- "shelve": "yes",
564
- "shelveMinutes": 30
565
- }
566
- }
567
- ],
568
- "outputs": 1,
569
- "x": 460,
570
- "y": 120,
571
- "wires": [
572
- [
573
- "pin_cmd"
574
- ]
575
- ],
576
- "alarmSound": "new"
577
- },
578
- {
579
- "id": "pin_cmd",
580
- "type": "function",
581
- "z": "ex_pin",
582
- "name": "aplica comando",
583
- "func": "// Comandos da tela (faceplate da esteira). Aqui só mudam a simulação;\n// no seu flow ligue a saída do canvas no nó de escrita do CLP.\nconst cmd = flow.get('cmd') || { esteira: 1 }\nif (msg.topic === 'cmd/esteira') cmd.esteira = Number(msg.payload) ? 1 : 0\nif (msg.topic === 'reset') cmd.reset = 1\nflow.set('cmd', cmd)\nreturn msg",
584
- "outputs": 1,
585
- "x": 660,
586
- "y": 120,
587
- "wires": [
588
- [
589
- "pin_dbg"
590
- ]
591
- ]
592
- },
593
- {
594
- "id": "pin_dbg",
595
- "type": "debug",
596
- "z": "ex_pin",
597
- "name": "comandos",
598
- "active": true,
599
- "tosidebar": true,
600
- "console": false,
601
- "tostatus": true,
602
- "complete": "true",
603
- "targetType": "full",
604
- "statusVal": "topic",
605
- "statusType": "auto",
606
- "x": 850,
607
- "y": 120,
608
- "wires": []
609
- }
610
- ]
1
+ [
2
+ {
3
+ "id": "ex_pin",
4
+ "type": "tab",
5
+ "label": "IHM pintura",
6
+ "info": "Tela de linha de pintura com dados simulados. Abra /dashboard/pintura."
7
+ },
8
+ {
9
+ "id": "hx_base",
10
+ "type": "ui-base",
11
+ "name": "Dashboard",
12
+ "path": "/dashboard",
13
+ "includeClientData": true,
14
+ "acceptsClientConfig": [
15
+ "ui-notification",
16
+ "ui-control"
17
+ ],
18
+ "showPathInSidebar": false,
19
+ "navigationStyle": "none",
20
+ "titleBarStyle": "hidden"
21
+ },
22
+ {
23
+ "id": "hx_theme",
24
+ "type": "ui-theme",
25
+ "name": "Default",
26
+ "colors": {
27
+ "surface": "#ffffff",
28
+ "primary": "#0094CE",
29
+ "bgPage": "#eeeeee",
30
+ "groupBg": "#ffffff",
31
+ "groupOutline": "#cccccc"
32
+ },
33
+ "sizes": {
34
+ "pagePadding": "12px",
35
+ "groupGap": "12px",
36
+ "groupBorderRadius": "4px",
37
+ "widgetGap": "12px"
38
+ }
39
+ },
40
+ {
41
+ "id": "pg_pin",
42
+ "type": "ui-page",
43
+ "name": "Pintura",
44
+ "ui": "hx_base",
45
+ "path": "/pintura",
46
+ "icon": "factory",
47
+ "layout": "grid",
48
+ "theme": "hx_theme",
49
+ "breakpoints": [
50
+ {
51
+ "name": "Default",
52
+ "px": "0",
53
+ "cols": "3"
54
+ },
55
+ {
56
+ "name": "Desktop",
57
+ "px": "1024",
58
+ "cols": "12"
59
+ }
60
+ ],
61
+ "order": 2,
62
+ "visible": "true",
63
+ "disabled": "false"
64
+ },
65
+ {
66
+ "id": "pin_cmt",
67
+ "type": "comment",
68
+ "z": "ex_pin",
69
+ "name": "Simulação a cada 1 s. Clique no motor da esteira para o faceplate (Ligar / Desligar / Reset).",
70
+ "info": "",
71
+ "x": 330,
72
+ "y": 40,
73
+ "wires": []
74
+ },
75
+ {
76
+ "id": "pin_tick",
77
+ "type": "inject",
78
+ "z": "ex_pin",
79
+ "name": "a cada 1 s",
80
+ "props": [],
81
+ "repeat": "1",
82
+ "once": true,
83
+ "onceDelay": "1",
84
+ "topic": "",
85
+ "x": 120,
86
+ "y": 120,
87
+ "wires": [
88
+ [
89
+ "pin_sim"
90
+ ]
91
+ ]
92
+ },
93
+ {
94
+ "id": "pin_sim",
95
+ "type": "function",
96
+ "z": "ex_pin",
97
+ "name": "simula linha",
98
+ "func": "// Simulação da linha de pintura. Troque pelos valores do seu CLP.\nconst s = flow.get('sim') || { pecas: 0, tintaA: 80, tintaB: 60, t: 0, temp: 150 }\nconst cmd = flow.get('cmd') || { esteira: 1 }\ns.t++\nconst ligada = cmd.esteira === 1 && !s.falha\nif (ligada && s.t % 3 === 0) s.pecas++\ns.tintaA = s.tintaA <= 8 ? 95 : s.tintaA - (ligada ? 0.6 : 0)\ns.tintaB = s.tintaB <= 5 ? 90 : s.tintaB - (ligada ? 0.4 : 0)\ns.temp += ((ligada ? 205 : 120) - s.temp) * 0.08 + (Math.random() - 0.5) * 3\n// de vez em quando a cabine entra em falha; o comando reset limpa\nif (!s.falha && Math.random() < 0.01) s.falha = true\nif (cmd.reset) { s.falha = false; cmd.reset = 0; flow.set('cmd', cmd) }\nflow.set('sim', s)\nconst r = v => Math.round(v * 10) / 10\nmsg.payload = {\n lote: 'P' + (2610 + Math.floor(s.pecas / 50)), pecas: s.pecas, modo: 1,\n esteira: ligada ? 1 : 0, falhaEsteira: 0, velocidade: ligada ? r(6 + Math.random()) : 0,\n tempDesengraxe: r(62 + Math.random() * 4), aqDesengraxe: 1,\n cabine: ligada ? 1 : 0, falhaCabine: s.falha ? 1 : 0, robo: ligada ? 1 : 0,\n tempEstufa: r(s.temp), spEstufa: 200, queimador: s.temp < 200 ? 1 : 0, portaEstufa: 0,\n resfriamento: ligada ? 1 : 0, pecaSaida: ligada && s.t % 3 === 0 ? 1 : 0,\n tintaA: r(s.tintaA), tintaB: r(s.tintaB),\n disp: 91.5, perf: r(86 + Math.random() * 4), qual: 98.2,\n turno1: 412, turno2: 388, turno3: s.pecas,\n tProduzindo: 410 + Math.floor(s.t / 60), tParada: 35, tSetup: 22\n}\nreturn msg",
99
+ "outputs": 1,
100
+ "x": 290,
101
+ "y": 120,
102
+ "wires": [
103
+ [
104
+ "pin_canvas"
105
+ ]
106
+ ]
107
+ },
108
+ {
109
+ "id": "pin_canvas",
110
+ "type": "ui-hmi-canvas",
111
+ "z": "ex_pin",
112
+ "name": "Linha de pintura",
113
+ "scope": "page",
114
+ "page": "pg_pin",
115
+ "order": 1,
116
+ "viewW": 1280,
117
+ "viewH": 720,
118
+ "theme": "isa101",
119
+ "fit": "screen",
120
+ "background": "theme",
121
+ "offlineAfter": 10,
122
+ "locale": "pt-BR",
123
+ "alarms": "on",
124
+ "alarmsOut": "no",
125
+ "symbols": [
126
+ {
127
+ "id": "e1",
128
+ "type": "text",
129
+ "x": 20,
130
+ "y": 14,
131
+ "w": 700,
132
+ "h": 32,
133
+ "rot": 0,
134
+ "key": "",
135
+ "props": {
136
+ "text": "LINHA DE PINTURA · Lote {lote} · {pecas} peças hoje",
137
+ "size": 20,
138
+ "align": "start",
139
+ "bold": "yes",
140
+ "tone": "normal",
141
+ "unit": "",
142
+ "decimals": ""
143
+ }
144
+ },
145
+ {
146
+ "id": "e2",
147
+ "type": "mode",
148
+ "x": 880,
149
+ "y": 12,
150
+ "w": 150,
151
+ "h": 36,
152
+ "rot": 0,
153
+ "key": "modo",
154
+ "props": {
155
+ "title": "MODO",
156
+ "texts": "0=MANUAL,1=AUTO,2=LOCAL,3=REMOTO",
157
+ "normal": "1",
158
+ "label": ""
159
+ }
160
+ },
161
+ {
162
+ "id": "e3",
163
+ "type": "alarmSummary",
164
+ "x": 1040,
165
+ "y": 10,
166
+ "w": 220,
167
+ "h": 40,
168
+ "rot": 0,
169
+ "key": "",
170
+ "props": {
171
+ "label": ""
172
+ }
173
+ },
174
+ {
175
+ "id": "e4",
176
+ "type": "frame",
177
+ "x": 20,
178
+ "y": 300,
179
+ "w": 1240,
180
+ "h": 14,
181
+ "rot": 0,
182
+ "key": "",
183
+ "props": {
184
+ "shape": "rect",
185
+ "tone": "floor",
186
+ "label": "",
187
+ "level": "no",
188
+ "min": 0,
189
+ "max": 100,
190
+ "levelColor": "level",
191
+ "showValue": "no",
192
+ "unit": "%",
193
+ "decimals": 0
194
+ }
195
+ },
196
+ {
197
+ "id": "e5",
198
+ "type": "line",
199
+ "x": 40,
200
+ "y": 286,
201
+ "w": 1200,
202
+ "h": 1,
203
+ "rot": 0,
204
+ "key": "esteira",
205
+ "props": {
206
+ "style": "conveyor",
207
+ "onWhen": "nonzero",
208
+ "threshold": 0,
209
+ "flow": "auto",
210
+ "points": [
211
+ [
212
+ 0,
213
+ 0
214
+ ],
215
+ [
216
+ 1200,
217
+ 0
218
+ ]
219
+ ]
220
+ }
221
+ },
222
+ {
223
+ "id": "e6",
224
+ "type": "motor",
225
+ "x": 40,
226
+ "y": 200,
227
+ "w": 70,
228
+ "h": 70,
229
+ "rot": 0,
230
+ "key": "esteira",
231
+ "props": {
232
+ "label": "M1 ESTEIRA",
233
+ "onWhen": "nonzero",
234
+ "threshold": 0,
235
+ "faultKey": "falhaEsteira",
236
+ "priority": "1"
237
+ },
238
+ "action": {
239
+ "mode": "faceplate",
240
+ "confirm": "yes",
241
+ "pin": "no",
242
+ "value": "",
243
+ "topic": "",
244
+ "valueKey": "",
245
+ "valueUnit": "",
246
+ "modeKey": "modo",
247
+ "modeTexts": "0=MANUAL,1=AUTO",
248
+ "hoursKey": "",
249
+ "startsKey": "",
250
+ "onTopic": "cmd/esteira",
251
+ "onValue": "1",
252
+ "offTopic": "cmd/esteira",
253
+ "offValue": "0",
254
+ "resetTopic": "reset",
255
+ "resetValue": "1"
256
+ }
257
+ },
258
+ {
259
+ "id": "e7",
260
+ "type": "tag",
261
+ "x": 130,
262
+ "y": 204,
263
+ "w": 150,
264
+ "h": 60,
265
+ "rot": 0,
266
+ "key": "velocidade",
267
+ "props": {
268
+ "title": "VELOCIDADE",
269
+ "unit": "m/min",
270
+ "decimals": 1,
271
+ "min": "",
272
+ "max": "",
273
+ "lo": 2,
274
+ "hi": 9,
275
+ "priority": "2"
276
+ }
277
+ },
278
+ {
279
+ "id": "e8",
280
+ "type": "tank",
281
+ "x": 320,
282
+ "y": 160,
283
+ "w": 90,
284
+ "h": 120,
285
+ "rot": 0,
286
+ "key": "tempDesengraxe",
287
+ "props": {
288
+ "label": "DESENGRAXE",
289
+ "unit": "°C",
290
+ "decimals": 0,
291
+ "min": 0,
292
+ "max": 90,
293
+ "lo": 45,
294
+ "hi": 75,
295
+ "priority": "2"
296
+ }
297
+ },
298
+ {
299
+ "id": "e9",
300
+ "type": "heater",
301
+ "x": 420,
302
+ "y": 236,
303
+ "w": 70,
304
+ "h": 36,
305
+ "rot": 0,
306
+ "key": "aqDesengraxe",
307
+ "props": {
308
+ "label": "",
309
+ "onWhen": "nonzero",
310
+ "threshold": 0,
311
+ "faultKey": "",
312
+ "priority": "1"
313
+ }
314
+ },
315
+ {
316
+ "id": "e10",
317
+ "type": "paintBooth",
318
+ "x": 520,
319
+ "y": 140,
320
+ "w": 190,
321
+ "h": 140,
322
+ "rot": 0,
323
+ "key": "cabine",
324
+ "props": {
325
+ "label": "CABINE",
326
+ "onWhen": "nonzero",
327
+ "threshold": 0,
328
+ "invert": "no",
329
+ "faultKey": "falhaCabine",
330
+ "priority": "1"
331
+ }
332
+ },
333
+ {
334
+ "id": "e11",
335
+ "type": "robot",
336
+ "x": 600,
337
+ "y": 150,
338
+ "w": 90,
339
+ "h": 100,
340
+ "rot": 0,
341
+ "key": "robo",
342
+ "props": {
343
+ "label": "",
344
+ "onWhen": "nonzero",
345
+ "threshold": 0,
346
+ "invert": "no",
347
+ "faultKey": "",
348
+ "priority": "1",
349
+ "weldKey": ""
350
+ }
351
+ },
352
+ {
353
+ "id": "e12",
354
+ "type": "oven",
355
+ "x": 760,
356
+ "y": 140,
357
+ "w": 220,
358
+ "h": 140,
359
+ "rot": 0,
360
+ "key": "tempEstufa",
361
+ "props": {
362
+ "label": "ESTUFA",
363
+ "unit": "°C",
364
+ "decimals": 0,
365
+ "lo": 160,
366
+ "hi": 220,
367
+ "priority": "2",
368
+ "doorKey": "portaEstufa",
369
+ "heatKey": "queimador"
370
+ }
371
+ },
372
+ {
373
+ "id": "e13",
374
+ "type": "fan",
375
+ "x": 1060,
376
+ "y": 200,
377
+ "w": 70,
378
+ "h": 70,
379
+ "rot": 0,
380
+ "key": "resfriamento",
381
+ "props": {
382
+ "label": "RESFRIAMENTO",
383
+ "onWhen": "nonzero",
384
+ "threshold": 0,
385
+ "faultKey": "",
386
+ "priority": "1"
387
+ }
388
+ },
389
+ {
390
+ "id": "e14",
391
+ "type": "sensor",
392
+ "x": 1150,
393
+ "y": 240,
394
+ "w": 44,
395
+ "h": 44,
396
+ "rot": 0,
397
+ "key": "pecaSaida",
398
+ "props": {
399
+ "label": "SAÍDA",
400
+ "kind": "photo",
401
+ "onWhen": "nonzero",
402
+ "threshold": 0
403
+ }
404
+ },
405
+ {
406
+ "id": "e15",
407
+ "type": "frame",
408
+ "x": 1100,
409
+ "y": 60,
410
+ "w": 70,
411
+ "h": 100,
412
+ "rot": 0,
413
+ "key": "tintaA",
414
+ "props": {
415
+ "shape": "silo",
416
+ "tone": "equip",
417
+ "label": "TINTA A",
418
+ "level": "up",
419
+ "min": 0,
420
+ "max": 100,
421
+ "levelColor": "level",
422
+ "showValue": "yes",
423
+ "unit": "%",
424
+ "decimals": 0,
425
+ "lo": ""
426
+ }
427
+ },
428
+ {
429
+ "id": "e16",
430
+ "type": "frame",
431
+ "x": 1190,
432
+ "y": 70,
433
+ "w": 70,
434
+ "h": 90,
435
+ "rot": 0,
436
+ "key": "tintaB",
437
+ "props": {
438
+ "shape": "hopper",
439
+ "tone": "equip",
440
+ "label": "TINTA B",
441
+ "level": "up",
442
+ "min": 0,
443
+ "max": 100,
444
+ "levelColor": "material",
445
+ "showValue": "yes",
446
+ "unit": "%",
447
+ "decimals": 0
448
+ }
449
+ },
450
+ {
451
+ "id": "e17",
452
+ "type": "trend",
453
+ "x": 520,
454
+ "y": 50,
455
+ "w": 420,
456
+ "h": 80,
457
+ "rot": 0,
458
+ "key": "tempEstufa",
459
+ "props": {
460
+ "title": "TEMPERATURA DA ESTUFA",
461
+ "unit": "°C",
462
+ "decimals": 0,
463
+ "min": 100,
464
+ "max": 240,
465
+ "window": 300
466
+ }
467
+ },
468
+ {
469
+ "id": "e18",
470
+ "type": "isaBar",
471
+ "x": 990,
472
+ "y": 120,
473
+ "w": 80,
474
+ "h": 140,
475
+ "rot": 0,
476
+ "key": "tempEstufa",
477
+ "props": {
478
+ "title": "ESTUFA",
479
+ "unit": "°C",
480
+ "decimals": 0,
481
+ "min": 0,
482
+ "max": 260,
483
+ "lolo": 140,
484
+ "lo": 160,
485
+ "hi": 220,
486
+ "hihi": 240,
487
+ "spKey": "spEstufa",
488
+ "priority": "2",
489
+ "alarmList": "no"
490
+ }
491
+ },
492
+ {
493
+ "id": "e19",
494
+ "type": "oee",
495
+ "x": 20,
496
+ "y": 350,
497
+ "w": 360,
498
+ "h": 160,
499
+ "rot": 0,
500
+ "key": "",
501
+ "props": {
502
+ "title": "OEE DA LINHA",
503
+ "availKey": "disp",
504
+ "perfKey": "perf",
505
+ "qualKey": "qual",
506
+ "oeeKey": "",
507
+ "goal": 85,
508
+ "low": 60
509
+ }
510
+ },
511
+ {
512
+ "id": "e20",
513
+ "type": "barChart",
514
+ "x": 400,
515
+ "y": 350,
516
+ "w": 420,
517
+ "h": 160,
518
+ "rot": 0,
519
+ "key": "",
520
+ "props": {
521
+ "title": "PEÇAS POR TURNO",
522
+ "series": "turno1:1º turno, turno2:2º turno, turno3:3º turno",
523
+ "labels": "",
524
+ "unit": "",
525
+ "decimals": 0,
526
+ "max": "",
527
+ "goal": 400,
528
+ "lowColor": "warn"
529
+ }
530
+ },
531
+ {
532
+ "id": "e21",
533
+ "type": "donut",
534
+ "x": 840,
535
+ "y": 350,
536
+ "w": 420,
537
+ "h": 160,
538
+ "rot": 0,
539
+ "key": "",
540
+ "props": {
541
+ "title": "TEMPO HOJE",
542
+ "series": "tProduzindo:Produzindo, tParada:Parada, tSetup:Setup",
543
+ "labels": "",
544
+ "unit": "min",
545
+ "decimals": 0,
546
+ "legend": "yes",
547
+ "center": "total"
548
+ }
549
+ },
550
+ {
551
+ "id": "e22",
552
+ "type": "alarmList",
553
+ "x": 20,
554
+ "y": 530,
555
+ "w": 1240,
556
+ "h": 180,
557
+ "rot": 0,
558
+ "key": "",
559
+ "props": {
560
+ "title": "ALARMES",
561
+ "rowHeight": 26,
562
+ "tab": "active",
563
+ "shelve": "yes",
564
+ "shelveMinutes": 30
565
+ }
566
+ }
567
+ ],
568
+ "outputs": 1,
569
+ "x": 460,
570
+ "y": 120,
571
+ "wires": [
572
+ [
573
+ "pin_cmd"
574
+ ]
575
+ ],
576
+ "alarmSound": "new"
577
+ },
578
+ {
579
+ "id": "pin_cmd",
580
+ "type": "function",
581
+ "z": "ex_pin",
582
+ "name": "aplica comando",
583
+ "func": "// Comandos da tela (faceplate da esteira). Aqui só mudam a simulação;\n// no seu flow ligue a saída do canvas no nó de escrita do CLP.\nconst cmd = flow.get('cmd') || { esteira: 1 }\nif (msg.topic === 'cmd/esteira') cmd.esteira = Number(msg.payload) ? 1 : 0\nif (msg.topic === 'reset') cmd.reset = 1\nflow.set('cmd', cmd)\nreturn msg",
584
+ "outputs": 1,
585
+ "x": 660,
586
+ "y": 120,
587
+ "wires": [
588
+ [
589
+ "pin_dbg"
590
+ ]
591
+ ]
592
+ },
593
+ {
594
+ "id": "pin_dbg",
595
+ "type": "debug",
596
+ "z": "ex_pin",
597
+ "name": "comandos",
598
+ "active": true,
599
+ "tosidebar": true,
600
+ "console": false,
601
+ "tostatus": true,
602
+ "complete": "true",
603
+ "targetType": "full",
604
+ "statusVal": "topic",
605
+ "statusType": "auto",
606
+ "x": 850,
607
+ "y": 120,
608
+ "wires": []
609
+ }
610
+ ]