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,431 +1,431 @@
1
- [
2
- {
3
- "id": "ex_clp",
4
- "type": "tab",
5
- "label": "IHM CLP Schneider",
6
- "info": "Lê um M221 com o schneider read e mostra no hmi canvas. Abra /dashboard/clp."
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_clp",
42
- "type": "ui-page",
43
- "name": "CLP",
44
- "ui": "hx_base",
45
- "path": "/clp",
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": 4,
62
- "visible": "true",
63
- "disabled": "false"
64
- },
65
- {
66
- "id": "clp_cmt",
67
- "type": "comment",
68
- "z": "ex_clp",
69
- "name": "Precisa do node-red-contrib-schneider-modbus-tags. Ajuste o IP do CLP e a lista de tags.",
70
- "info": "As chaves do payload do schneider read são os nomes da lista de tags. Cada símbolo usa um desses nomes como chave.\n\nPara escrever no CLP, ligue a saída de \"para Modbus\" num nó Modbus Flex Write (node-red-contrib-modbus) apontando para o mesmo CLP.",
71
- "x": 330,
72
- "y": 40,
73
- "wires": []
74
- },
75
- {
76
- "id": "clp_plc",
77
- "type": "schneider-plc",
78
- "name": "M221",
79
- "model": "M221",
80
- "host": "192.168.1.10",
81
- "port": 502,
82
- "unitId": 1,
83
- "timeout": 3000,
84
- "reconnectDelay": 5000,
85
- "maxQuantity": 120
86
- },
87
- {
88
- "id": "clp_read",
89
- "type": "schneider-read",
90
- "z": "ex_clp",
91
- "name": "leitura",
92
- "plc": "clp_plc",
93
- "tags": "# Troque pelos endereços do seu programa\nMF0 temperatura\nMD2 contador_pecas\nMW4 setpoint\nMW5.0 motor_ligado\nMW5.1 falha_motor\nMW10 string[20] codigo_lote\nMF20 nivel_tanque",
94
- "interval": 1,
95
- "topic": "M221",
96
- "wordOrder": "low",
97
- "byteOrder": "low",
98
- "decimals": "3",
99
- "x": 140,
100
- "y": 120,
101
- "wires": [
102
- [
103
- "clp_canvas"
104
- ]
105
- ]
106
- },
107
- {
108
- "id": "clp_test",
109
- "type": "inject",
110
- "z": "ex_clp",
111
- "name": "valores de teste (sem CLP)",
112
- "props": [
113
- {
114
- "p": "payload"
115
- }
116
- ],
117
- "repeat": "",
118
- "once": false,
119
- "topic": "",
120
- "payload": "{\"temperatura\":72.4,\"contador_pecas\":1450,\"setpoint\":75,\"motor_ligado\":true,\"falha_motor\":false,\"codigo_lote\":\"L2026-1017\",\"nivel_tanque\":63.5}",
121
- "payloadType": "json",
122
- "x": 170,
123
- "y": 180,
124
- "wires": [
125
- [
126
- "clp_canvas"
127
- ]
128
- ]
129
- },
130
- {
131
- "id": "clp_canvas",
132
- "type": "ui-hmi-canvas",
133
- "z": "ex_clp",
134
- "name": "CLP M221",
135
- "scope": "page",
136
- "page": "pg_clp",
137
- "order": 1,
138
- "viewW": 1280,
139
- "viewH": 720,
140
- "theme": "isa101",
141
- "fit": "screen",
142
- "background": "theme",
143
- "offlineAfter": 10,
144
- "locale": "pt-BR",
145
- "alarms": "on",
146
- "alarmsOut": "no",
147
- "symbols": [
148
- {
149
- "id": "e1",
150
- "type": "text",
151
- "x": 20,
152
- "y": 14,
153
- "w": 800,
154
- "h": 32,
155
- "rot": 0,
156
- "key": "",
157
- "props": {
158
- "text": "CLP M221 · Lote {codigo_lote} · {contador_pecas} peças",
159
- "size": 20,
160
- "align": "start",
161
- "bold": "yes",
162
- "tone": "normal",
163
- "unit": "",
164
- "decimals": ""
165
- }
166
- },
167
- {
168
- "id": "e2",
169
- "type": "alarmSummary",
170
- "x": 1040,
171
- "y": 10,
172
- "w": 220,
173
- "h": 40,
174
- "rot": 0,
175
- "key": "",
176
- "props": {
177
- "label": ""
178
- }
179
- },
180
- {
181
- "id": "e3",
182
- "type": "frame",
183
- "x": 80,
184
- "y": 120,
185
- "w": 160,
186
- "h": 240,
187
- "rot": 0,
188
- "key": "nivel_tanque",
189
- "props": {
190
- "shape": "silo",
191
- "tone": "equip",
192
- "label": "TANQUE (%MF20)",
193
- "level": "up",
194
- "min": 0,
195
- "max": 100,
196
- "levelColor": "level",
197
- "showValue": "yes",
198
- "unit": "%",
199
- "decimals": 1
200
- }
201
- },
202
- {
203
- "id": "e4",
204
- "type": "line",
205
- "x": 240,
206
- "y": 330,
207
- "w": 200,
208
- "h": 1,
209
- "rot": 0,
210
- "key": "motor_ligado",
211
- "props": {
212
- "style": "pipe",
213
- "onWhen": "nonzero",
214
- "threshold": 0,
215
- "flow": "auto",
216
- "points": [
217
- [
218
- 0,
219
- 0
220
- ],
221
- [
222
- 200,
223
- 0
224
- ]
225
- ]
226
- }
227
- },
228
- {
229
- "id": "e5",
230
- "type": "pump",
231
- "x": 440,
232
- "y": 300,
233
- "w": 60,
234
- "h": 60,
235
- "rot": 0,
236
- "key": "motor_ligado",
237
- "props": {
238
- "label": "BOMBA (%MW5.0)",
239
- "onWhen": "nonzero",
240
- "threshold": 0,
241
- "faultKey": "falha_motor",
242
- "priority": "1"
243
- },
244
- "action": {
245
- "mode": "faceplate",
246
- "confirm": "yes",
247
- "pin": "no",
248
- "value": "",
249
- "topic": "",
250
- "valueKey": "temperatura",
251
- "valueUnit": "°C",
252
- "modeKey": "",
253
- "modeTexts": "",
254
- "hoursKey": "",
255
- "startsKey": "",
256
- "onTopic": "comando",
257
- "onValue": "1",
258
- "offTopic": "comando",
259
- "offValue": "0",
260
- "resetTopic": "comando",
261
- "resetValue": "2"
262
- }
263
- },
264
- {
265
- "id": "e6",
266
- "type": "line",
267
- "x": 500,
268
- "y": 330,
269
- "w": 200,
270
- "h": 1,
271
- "rot": 0,
272
- "key": "motor_ligado",
273
- "props": {
274
- "style": "pipe",
275
- "onWhen": "nonzero",
276
- "threshold": 0,
277
- "flow": "auto",
278
- "points": [
279
- [
280
- 0,
281
- 0
282
- ],
283
- [
284
- 200,
285
- 0
286
- ]
287
- ]
288
- }
289
- },
290
- {
291
- "id": "e7",
292
- "type": "tag",
293
- "x": 560,
294
- "y": 120,
295
- "w": 220,
296
- "h": 64,
297
- "rot": 0,
298
- "key": "temperatura",
299
- "props": {
300
- "title": "TEMPERATURA (%MF0)",
301
- "unit": "°C",
302
- "decimals": 1,
303
- "min": "",
304
- "max": "",
305
- "lo": 20,
306
- "hi": 90,
307
- "priority": "2"
308
- }
309
- },
310
- {
311
- "id": "e8",
312
- "type": "setpoint",
313
- "x": 560,
314
- "y": 200,
315
- "w": 220,
316
- "h": 64,
317
- "rot": 0,
318
- "key": "setpoint",
319
- "props": {
320
- "title": "SETPOINT (%MW4)",
321
- "unit": "°C",
322
- "decimals": 0
323
- },
324
- "action": {
325
- "mode": "input",
326
- "value": "",
327
- "topic": "setpoint",
328
- "confirm": "yes",
329
- "pin": "no",
330
- "min": "0",
331
- "max": "120"
332
- }
333
- },
334
- {
335
- "id": "e9",
336
- "type": "isaBar",
337
- "x": 820,
338
- "y": 110,
339
- "w": 80,
340
- "h": 220,
341
- "rot": 0,
342
- "key": "temperatura",
343
- "props": {
344
- "title": "TEMP.",
345
- "unit": "°C",
346
- "decimals": 0,
347
- "min": 0,
348
- "max": 120,
349
- "lolo": 10,
350
- "lo": 20,
351
- "hi": 90,
352
- "hihi": 90,
353
- "spKey": "setpoint",
354
- "priority": "2"
355
- }
356
- },
357
- {
358
- "id": "e10",
359
- "type": "kpi",
360
- "x": 960,
361
- "y": 120,
362
- "w": 300,
363
- "h": 140,
364
- "rot": 0,
365
- "key": "contador_pecas",
366
- "props": {
367
- "title": "PEÇAS (%MD2)",
368
- "unit": "",
369
- "decimals": 0,
370
- "subtitle": "Lote {codigo_lote}"
371
- }
372
- },
373
- {
374
- "id": "e11",
375
- "type": "alarmList",
376
- "x": 20,
377
- "y": 450,
378
- "w": 1240,
379
- "h": 250,
380
- "rot": 0,
381
- "key": "",
382
- "props": {
383
- "title": "ALARMES",
384
- "rowHeight": 26,
385
- "tab": "active",
386
- "shelve": "yes",
387
- "shelveMinutes": 30
388
- }
389
- }
390
- ],
391
- "outputs": 1,
392
- "x": 380,
393
- "y": 120,
394
- "wires": [
395
- [
396
- "clp_modbus",
397
- "clp_dbg"
398
- ]
399
- ]
400
- },
401
- {
402
- "id": "clp_modbus",
403
- "type": "function",
404
- "z": "ex_clp",
405
- "name": "para Modbus",
406
- "func": "// Converte o comando da tela em escrita Modbus (formato do \"Modbus Flex Write\"\n// do node-red-contrib-modbus). Ajuste os endereços %MW do seu programa.\nconst map = { setpoint: 4, comando: 6 }\nconst address = map[msg.topic]\nif (address === undefined) return null\nmsg.payload = { value: Math.round(Number(msg.payload)), fc: 6, unitid: 1, address, quantity: 1 }\nreturn msg",
407
- "outputs": 1,
408
- "x": 620,
409
- "y": 100,
410
- "wires": [
411
- []
412
- ]
413
- },
414
- {
415
- "id": "clp_dbg",
416
- "type": "debug",
417
- "z": "ex_clp",
418
- "name": "comandos",
419
- "active": true,
420
- "tosidebar": true,
421
- "console": false,
422
- "tostatus": true,
423
- "complete": "true",
424
- "targetType": "full",
425
- "statusVal": "topic",
426
- "statusType": "auto",
427
- "x": 620,
428
- "y": 160,
429
- "wires": []
430
- }
431
- ]
1
+ [
2
+ {
3
+ "id": "ex_clp",
4
+ "type": "tab",
5
+ "label": "IHM CLP Schneider",
6
+ "info": "Lê um M221 com o schneider read e mostra no hmi canvas. Abra /dashboard/clp."
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_clp",
42
+ "type": "ui-page",
43
+ "name": "CLP",
44
+ "ui": "hx_base",
45
+ "path": "/clp",
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": 4,
62
+ "visible": "true",
63
+ "disabled": "false"
64
+ },
65
+ {
66
+ "id": "clp_cmt",
67
+ "type": "comment",
68
+ "z": "ex_clp",
69
+ "name": "Precisa do node-red-contrib-schneider-modbus-tags. Ajuste o IP do CLP e a lista de tags.",
70
+ "info": "As chaves do payload do schneider read são os nomes da lista de tags. Cada símbolo usa um desses nomes como chave.\n\nPara escrever no CLP, ligue a saída de \"para Modbus\" num nó Modbus Flex Write (node-red-contrib-modbus) apontando para o mesmo CLP.",
71
+ "x": 330,
72
+ "y": 40,
73
+ "wires": []
74
+ },
75
+ {
76
+ "id": "clp_plc",
77
+ "type": "schneider-plc",
78
+ "name": "M221",
79
+ "model": "M221",
80
+ "host": "192.168.1.10",
81
+ "port": 502,
82
+ "unitId": 1,
83
+ "timeout": 3000,
84
+ "reconnectDelay": 5000,
85
+ "maxQuantity": 120
86
+ },
87
+ {
88
+ "id": "clp_read",
89
+ "type": "schneider-read",
90
+ "z": "ex_clp",
91
+ "name": "leitura",
92
+ "plc": "clp_plc",
93
+ "tags": "# Troque pelos endereços do seu programa\nMF0 temperatura\nMD2 contador_pecas\nMW4 setpoint\nMW5.0 motor_ligado\nMW5.1 falha_motor\nMW10 string[20] codigo_lote\nMF20 nivel_tanque",
94
+ "interval": 1,
95
+ "topic": "M221",
96
+ "wordOrder": "low",
97
+ "byteOrder": "low",
98
+ "decimals": "3",
99
+ "x": 140,
100
+ "y": 120,
101
+ "wires": [
102
+ [
103
+ "clp_canvas"
104
+ ]
105
+ ]
106
+ },
107
+ {
108
+ "id": "clp_test",
109
+ "type": "inject",
110
+ "z": "ex_clp",
111
+ "name": "valores de teste (sem CLP)",
112
+ "props": [
113
+ {
114
+ "p": "payload"
115
+ }
116
+ ],
117
+ "repeat": "",
118
+ "once": false,
119
+ "topic": "",
120
+ "payload": "{\"temperatura\":72.4,\"contador_pecas\":1450,\"setpoint\":75,\"motor_ligado\":true,\"falha_motor\":false,\"codigo_lote\":\"L2026-1017\",\"nivel_tanque\":63.5}",
121
+ "payloadType": "json",
122
+ "x": 170,
123
+ "y": 180,
124
+ "wires": [
125
+ [
126
+ "clp_canvas"
127
+ ]
128
+ ]
129
+ },
130
+ {
131
+ "id": "clp_canvas",
132
+ "type": "ui-hmi-canvas",
133
+ "z": "ex_clp",
134
+ "name": "CLP M221",
135
+ "scope": "page",
136
+ "page": "pg_clp",
137
+ "order": 1,
138
+ "viewW": 1280,
139
+ "viewH": 720,
140
+ "theme": "isa101",
141
+ "fit": "screen",
142
+ "background": "theme",
143
+ "offlineAfter": 10,
144
+ "locale": "pt-BR",
145
+ "alarms": "on",
146
+ "alarmsOut": "no",
147
+ "symbols": [
148
+ {
149
+ "id": "e1",
150
+ "type": "text",
151
+ "x": 20,
152
+ "y": 14,
153
+ "w": 800,
154
+ "h": 32,
155
+ "rot": 0,
156
+ "key": "",
157
+ "props": {
158
+ "text": "CLP M221 · Lote {codigo_lote} · {contador_pecas} peças",
159
+ "size": 20,
160
+ "align": "start",
161
+ "bold": "yes",
162
+ "tone": "normal",
163
+ "unit": "",
164
+ "decimals": ""
165
+ }
166
+ },
167
+ {
168
+ "id": "e2",
169
+ "type": "alarmSummary",
170
+ "x": 1040,
171
+ "y": 10,
172
+ "w": 220,
173
+ "h": 40,
174
+ "rot": 0,
175
+ "key": "",
176
+ "props": {
177
+ "label": ""
178
+ }
179
+ },
180
+ {
181
+ "id": "e3",
182
+ "type": "frame",
183
+ "x": 80,
184
+ "y": 120,
185
+ "w": 160,
186
+ "h": 240,
187
+ "rot": 0,
188
+ "key": "nivel_tanque",
189
+ "props": {
190
+ "shape": "silo",
191
+ "tone": "equip",
192
+ "label": "TANQUE (%MF20)",
193
+ "level": "up",
194
+ "min": 0,
195
+ "max": 100,
196
+ "levelColor": "level",
197
+ "showValue": "yes",
198
+ "unit": "%",
199
+ "decimals": 1
200
+ }
201
+ },
202
+ {
203
+ "id": "e4",
204
+ "type": "line",
205
+ "x": 240,
206
+ "y": 330,
207
+ "w": 200,
208
+ "h": 1,
209
+ "rot": 0,
210
+ "key": "motor_ligado",
211
+ "props": {
212
+ "style": "pipe",
213
+ "onWhen": "nonzero",
214
+ "threshold": 0,
215
+ "flow": "auto",
216
+ "points": [
217
+ [
218
+ 0,
219
+ 0
220
+ ],
221
+ [
222
+ 200,
223
+ 0
224
+ ]
225
+ ]
226
+ }
227
+ },
228
+ {
229
+ "id": "e5",
230
+ "type": "pump",
231
+ "x": 440,
232
+ "y": 300,
233
+ "w": 60,
234
+ "h": 60,
235
+ "rot": 0,
236
+ "key": "motor_ligado",
237
+ "props": {
238
+ "label": "BOMBA (%MW5.0)",
239
+ "onWhen": "nonzero",
240
+ "threshold": 0,
241
+ "faultKey": "falha_motor",
242
+ "priority": "1"
243
+ },
244
+ "action": {
245
+ "mode": "faceplate",
246
+ "confirm": "yes",
247
+ "pin": "no",
248
+ "value": "",
249
+ "topic": "",
250
+ "valueKey": "temperatura",
251
+ "valueUnit": "°C",
252
+ "modeKey": "",
253
+ "modeTexts": "",
254
+ "hoursKey": "",
255
+ "startsKey": "",
256
+ "onTopic": "comando",
257
+ "onValue": "1",
258
+ "offTopic": "comando",
259
+ "offValue": "0",
260
+ "resetTopic": "comando",
261
+ "resetValue": "2"
262
+ }
263
+ },
264
+ {
265
+ "id": "e6",
266
+ "type": "line",
267
+ "x": 500,
268
+ "y": 330,
269
+ "w": 200,
270
+ "h": 1,
271
+ "rot": 0,
272
+ "key": "motor_ligado",
273
+ "props": {
274
+ "style": "pipe",
275
+ "onWhen": "nonzero",
276
+ "threshold": 0,
277
+ "flow": "auto",
278
+ "points": [
279
+ [
280
+ 0,
281
+ 0
282
+ ],
283
+ [
284
+ 200,
285
+ 0
286
+ ]
287
+ ]
288
+ }
289
+ },
290
+ {
291
+ "id": "e7",
292
+ "type": "tag",
293
+ "x": 560,
294
+ "y": 120,
295
+ "w": 220,
296
+ "h": 64,
297
+ "rot": 0,
298
+ "key": "temperatura",
299
+ "props": {
300
+ "title": "TEMPERATURA (%MF0)",
301
+ "unit": "°C",
302
+ "decimals": 1,
303
+ "min": "",
304
+ "max": "",
305
+ "lo": 20,
306
+ "hi": 90,
307
+ "priority": "2"
308
+ }
309
+ },
310
+ {
311
+ "id": "e8",
312
+ "type": "setpoint",
313
+ "x": 560,
314
+ "y": 200,
315
+ "w": 220,
316
+ "h": 64,
317
+ "rot": 0,
318
+ "key": "setpoint",
319
+ "props": {
320
+ "title": "SETPOINT (%MW4)",
321
+ "unit": "°C",
322
+ "decimals": 0
323
+ },
324
+ "action": {
325
+ "mode": "input",
326
+ "value": "",
327
+ "topic": "setpoint",
328
+ "confirm": "yes",
329
+ "pin": "no",
330
+ "min": "0",
331
+ "max": "120"
332
+ }
333
+ },
334
+ {
335
+ "id": "e9",
336
+ "type": "isaBar",
337
+ "x": 820,
338
+ "y": 110,
339
+ "w": 80,
340
+ "h": 220,
341
+ "rot": 0,
342
+ "key": "temperatura",
343
+ "props": {
344
+ "title": "TEMP.",
345
+ "unit": "°C",
346
+ "decimals": 0,
347
+ "min": 0,
348
+ "max": 120,
349
+ "lolo": 10,
350
+ "lo": 20,
351
+ "hi": 90,
352
+ "hihi": 90,
353
+ "spKey": "setpoint",
354
+ "priority": "2"
355
+ }
356
+ },
357
+ {
358
+ "id": "e10",
359
+ "type": "kpi",
360
+ "x": 960,
361
+ "y": 120,
362
+ "w": 300,
363
+ "h": 140,
364
+ "rot": 0,
365
+ "key": "contador_pecas",
366
+ "props": {
367
+ "title": "PEÇAS (%MD2)",
368
+ "unit": "",
369
+ "decimals": 0,
370
+ "subtitle": "Lote {codigo_lote}"
371
+ }
372
+ },
373
+ {
374
+ "id": "e11",
375
+ "type": "alarmList",
376
+ "x": 20,
377
+ "y": 450,
378
+ "w": 1240,
379
+ "h": 250,
380
+ "rot": 0,
381
+ "key": "",
382
+ "props": {
383
+ "title": "ALARMES",
384
+ "rowHeight": 26,
385
+ "tab": "active",
386
+ "shelve": "yes",
387
+ "shelveMinutes": 30
388
+ }
389
+ }
390
+ ],
391
+ "outputs": 1,
392
+ "x": 380,
393
+ "y": 120,
394
+ "wires": [
395
+ [
396
+ "clp_modbus",
397
+ "clp_dbg"
398
+ ]
399
+ ]
400
+ },
401
+ {
402
+ "id": "clp_modbus",
403
+ "type": "function",
404
+ "z": "ex_clp",
405
+ "name": "para Modbus",
406
+ "func": "// Converte o comando da tela em escrita Modbus (formato do \"Modbus Flex Write\"\n// do node-red-contrib-modbus). Ajuste os endereços %MW do seu programa.\nconst map = { setpoint: 4, comando: 6 }\nconst address = map[msg.topic]\nif (address === undefined) return null\nmsg.payload = { value: Math.round(Number(msg.payload)), fc: 6, unitid: 1, address, quantity: 1 }\nreturn msg",
407
+ "outputs": 1,
408
+ "x": 620,
409
+ "y": 100,
410
+ "wires": [
411
+ []
412
+ ]
413
+ },
414
+ {
415
+ "id": "clp_dbg",
416
+ "type": "debug",
417
+ "z": "ex_clp",
418
+ "name": "comandos",
419
+ "active": true,
420
+ "tosidebar": true,
421
+ "console": false,
422
+ "tostatus": true,
423
+ "complete": "true",
424
+ "targetType": "full",
425
+ "statusVal": "topic",
426
+ "statusType": "auto",
427
+ "x": 620,
428
+ "y": 160,
429
+ "wires": []
430
+ }
431
+ ]