iobroker.prosoft_flow 0.1.1 → 0.1.3

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.

Potentially problematic release.


This version of iobroker.prosoft_flow might be problematic. Click here for more details.

@@ -1,776 +1,862 @@
1
1
  {
2
2
  "i18n": true,
3
- "type": "panel",
3
+ "type": "tabs",
4
4
  "items": {
5
- "tabs": {
6
- "type": "tabs",
5
+ "connection": {
6
+ "type": "panel",
7
+ "label": "Qoşulma / Connection",
7
8
  "items": {
8
- "connection": {
9
- "type": "panel",
10
- "label": "Qoşulma / Connection",
11
- "items": {
12
- "headerConn": {
13
- "type": "header",
14
- "text": "Modbus Rabitə Ayarları (Serial RTU / Modbus TCP)"
15
- },
16
- "connectionType": {
17
- "type": "select",
18
- "label": "Qoşulma Növü / Connection Type",
19
- "options": [
20
- {
21
- "value": "serial",
22
- "label": "Serial RTU (RS-232 / RS-485)"
23
- },
24
- {
25
- "value": "tcp",
26
- "label": "Modbus TCP"
27
- },
28
- {
29
- "value": "rtu_over_tcp",
30
- "label": "Modbus RTU over TCP"
31
- }
32
- ],
33
- "default": "serial",
34
- "sm": 12,
35
- "md": 4
9
+ "headerConn": {
10
+ "type": "header",
11
+ "text": "Modbus Rabitə Ayarları (Serial RTU / Modbus TCP)"
12
+ },
13
+ "connectionType": {
14
+ "type": "select",
15
+ "label": "Qoşulma Növü / Connection Type",
16
+ "options": [
17
+ {
18
+ "value": "serial",
19
+ "label": "Serial RTU (RS-232 / RS-485)"
36
20
  },
37
- "slaveId": {
38
- "type": "number",
39
- "label": "Modbus Slave ID (AFC)",
40
- "min": 1,
41
- "max": 255,
42
- "default": 244,
43
- "sm": 6,
44
- "md": 4
45
- },
46
- "pollInterval": {
47
- "type": "number",
48
- "label": "Dövri Sorğu İntervalı / Poll Interval (ms)",
49
- "min": 50,
50
- "max": 60000,
51
- "default": 1000,
52
- "sm": 6,
53
- "md": 4
54
- },
55
- "serialHeader": {
56
- "type": "header",
57
- "text": "Serial Parametrləri (COM Port)",
58
- "hidden": "data.connectionType !== 'serial'"
59
- },
60
- "serialPort": {
21
+ {
22
+ "value": "tcp",
23
+ "label": "Modbus TCP"
24
+ },
25
+ {
26
+ "value": "rtu_over_tcp",
27
+ "label": "Modbus RTU over TCP"
28
+ }
29
+ ],
30
+ "default": "serial",
31
+ "sm": 12,
32
+ "md": 4
33
+ },
34
+ "slaveId": {
35
+ "type": "number",
36
+ "label": "Modbus Slave ID (AFC)",
37
+ "min": 1,
38
+ "max": 255,
39
+ "default": 244,
40
+ "sm": 6,
41
+ "md": 4
42
+ },
43
+ "pollInterval": {
44
+ "type": "number",
45
+ "label": "Dövri Sorğu İntervalı / Poll Interval (ms)",
46
+ "min": 50,
47
+ "max": 60000,
48
+ "default": 1000,
49
+ "sm": 6,
50
+ "md": 4
51
+ },
52
+ "serialHeader": {
53
+ "type": "header",
54
+ "text": "Serial Parametrləri (COM Port)",
55
+ "hidden": "data.connectionType !== 'serial'"
56
+ },
57
+ "serialPort": {
58
+ "type": "text",
59
+ "label": "Serial Port (məs: COM1 və ya /dev/ttyUSB0)",
60
+ "default": "COM1",
61
+ "hidden": "data.connectionType !== 'serial'",
62
+ "sm": 12,
63
+ "md": 4
64
+ },
65
+ "baudRate": {
66
+ "type": "select",
67
+ "label": "Baud Rate",
68
+ "options": [
69
+ {
70
+ "value": 1200,
71
+ "label": "1200"
72
+ },
73
+ {
74
+ "value": 2400,
75
+ "label": "2400"
76
+ },
77
+ {
78
+ "value": 4800,
79
+ "label": "4800"
80
+ },
81
+ {
82
+ "value": 9600,
83
+ "label": "9600"
84
+ },
85
+ {
86
+ "value": 19200,
87
+ "label": "19200"
88
+ },
89
+ {
90
+ "value": 38400,
91
+ "label": "38400"
92
+ },
93
+ {
94
+ "value": 57600,
95
+ "label": "57600"
96
+ },
97
+ {
98
+ "value": 115200,
99
+ "label": "115200"
100
+ }
101
+ ],
102
+ "default": 9600,
103
+ "hidden": "data.connectionType !== 'serial'",
104
+ "sm": 6,
105
+ "md": 2
106
+ },
107
+ "dataBits": {
108
+ "type": "select",
109
+ "label": "Data Bits",
110
+ "options": [
111
+ {
112
+ "value": 7,
113
+ "label": "7"
114
+ },
115
+ {
116
+ "value": 8,
117
+ "label": "8"
118
+ }
119
+ ],
120
+ "default": 8,
121
+ "hidden": "data.connectionType !== 'serial'",
122
+ "sm": 6,
123
+ "md": 2
124
+ },
125
+ "stopBits": {
126
+ "type": "select",
127
+ "label": "Stop Bits",
128
+ "options": [
129
+ {
130
+ "value": 1,
131
+ "label": "1"
132
+ },
133
+ {
134
+ "value": 2,
135
+ "label": "2"
136
+ }
137
+ ],
138
+ "default": 1,
139
+ "hidden": "data.connectionType !== 'serial'",
140
+ "sm": 6,
141
+ "md": 2
142
+ },
143
+ "parity": {
144
+ "type": "select",
145
+ "label": "Parity",
146
+ "options": [
147
+ {
148
+ "value": "none",
149
+ "label": "None"
150
+ },
151
+ {
152
+ "value": "even",
153
+ "label": "Even"
154
+ },
155
+ {
156
+ "value": "odd",
157
+ "label": "Odd"
158
+ }
159
+ ],
160
+ "default": "none",
161
+ "hidden": "data.connectionType !== 'serial'",
162
+ "sm": 6,
163
+ "md": 2
164
+ },
165
+ "netHeader": {
166
+ "type": "header",
167
+ "text": "TCP Şəbəkə Parametrləri",
168
+ "hidden": "data.connectionType === 'serial'"
169
+ },
170
+ "tcpHost": {
171
+ "type": "text",
172
+ "label": "Modbus TCP Server IP / Host",
173
+ "default": "127.0.0.1",
174
+ "hidden": "data.connectionType === 'serial'",
175
+ "sm": 12,
176
+ "md": 6
177
+ },
178
+ "tcpPort": {
179
+ "type": "number",
180
+ "label": "TCP Port",
181
+ "min": 1,
182
+ "max": 65535,
183
+ "default": 502,
184
+ "hidden": "data.connectionType === 'serial'",
185
+ "sm": 6,
186
+ "md": 3
187
+ },
188
+ "tcpTimeout": {
189
+ "type": "number",
190
+ "label": "TCP Timeout (ms)",
191
+ "min": 200,
192
+ "max": 30000,
193
+ "default": 2000,
194
+ "hidden": "data.connectionType === 'serial'",
195
+ "sm": 6,
196
+ "md": 3
197
+ }
198
+ }
199
+ },
200
+ "tagsTab": {
201
+ "type": "panel",
202
+ "label": "Stansiya (Dövri Teqlər)",
203
+ "items": {
204
+ "formulaHelp": {
205
+ "type": "staticText",
206
+ "text": "📐 **Formula Sintaksisi**: Oxunan xam dəyər `x` dəyişəni ilə ifadə olunur. İstənilən riyazi ifadə və `Math.*` funksiyaları yazıla bilər.\nNümunələr: `x * 0.1`, `x / 1000`, `x + 273.15`, `Math.round(x * 100) / 100`. Boş buraxıldıqda xam dəyər qəbul edilir.",
207
+ "sm": 12
208
+ },
209
+ "tags": {
210
+ "type": "table",
211
+ "label": "Cari Dövri Teqlər Siyahısı",
212
+ "sm": 12,
213
+ "items": [
214
+ {
215
+ "name": "name",
216
+ "attr": "name",
61
217
  "type": "text",
62
- "label": "Serial Port (məs: COM1 və ya /dev/ttyUSB0)",
63
- "default": "COM1",
64
- "hidden": "data.connectionType !== 'serial'",
65
- "sm": 12,
66
- "md": 4
218
+ "title": "Teq Adı / Tagname",
219
+ "width": "20%"
67
220
  },
68
- "baudRate": {
221
+ {
222
+ "name": "address",
223
+ "attr": "address",
224
+ "type": "number",
225
+ "title": "Modbus Ünvan",
226
+ "width": "10%"
227
+ },
228
+ {
229
+ "name": "dataType",
230
+ "attr": "dataType",
69
231
  "type": "select",
70
- "label": "Baud Rate",
232
+ "title": "Tip",
71
233
  "options": [
72
234
  {
73
- "value": 1200,
74
- "label": "1200"
235
+ "value": "float",
236
+ "label": "float (IEEE-754)"
237
+ },
238
+ {
239
+ "value": "uint32",
240
+ "label": "uint32"
75
241
  },
76
242
  {
77
- "value": 2400,
78
- "label": "2400"
243
+ "value": "int32",
244
+ "label": "int32"
79
245
  },
80
246
  {
81
- "value": 4800,
82
- "label": "4800"
247
+ "value": "uint16",
248
+ "label": "uint16"
83
249
  },
84
250
  {
85
- "value": 9600,
86
- "label": "9600"
251
+ "value": "int16",
252
+ "label": "int16"
87
253
  },
88
254
  {
89
- "value": 19200,
90
- "label": "19200"
255
+ "value": "dt",
256
+ "label": "dt (DateTime)"
91
257
  },
92
258
  {
93
- "value": 38400,
94
- "label": "38400"
259
+ "value": "bool",
260
+ "label": "bool (Coil)"
95
261
  },
96
262
  {
97
- "value": 57600,
98
- "label": "57600"
263
+ "value": "ascii8",
264
+ "label": "ascii8 (4 Reg)"
99
265
  },
100
266
  {
101
- "value": 115200,
102
- "label": "115200"
267
+ "value": "ascii16",
268
+ "label": "ascii16 (8 Reg)"
103
269
  }
104
270
  ],
105
- "default": 9600,
106
- "hidden": "data.connectionType !== 'serial'",
107
- "sm": 6,
108
- "md": 2
271
+ "width": "15%"
272
+ },
273
+ {
274
+ "name": "group",
275
+ "attr": "group",
276
+ "type": "text",
277
+ "title": "Qrup / Group",
278
+ "width": "15%"
109
279
  },
110
- "dataBits": {
280
+ {
281
+ "name": "poll",
282
+ "attr": "poll",
283
+ "type": "checkbox",
284
+ "title": "Dövri",
285
+ "width": "8%"
286
+ },
287
+ {
288
+ "name": "formula",
289
+ "attr": "formula",
290
+ "type": "text",
291
+ "title": "Formula (məs: x * 0.1)",
292
+ "width": "16%"
293
+ },
294
+ {
295
+ "name": "unit",
296
+ "attr": "unit",
297
+ "type": "text",
298
+ "title": "Vahid",
299
+ "width": "8%"
300
+ },
301
+ {
302
+ "name": "description",
303
+ "attr": "description",
304
+ "type": "text",
305
+ "title": "Təsvir",
306
+ "width": "18%"
307
+ }
308
+ ]
309
+ }
310
+ }
311
+ },
312
+ "reportsTab": {
313
+ "type": "panel",
314
+ "label": "Hesabatlar & Cədvəl",
315
+ "items": {
316
+ "reportHelp": {
317
+ "type": "staticText",
318
+ "text": "⏱️ **Cədvəl və Yaş (Age 1) Məntiqi**: Günün tamamında (məs: 08:02) və ya saat tamamında axın kompüteri bağlanmış dövrün məlumatlarını Age 1 yaddaşına atır. Hər qrup üçün fərdi olaraq cədvəl (saatlıq, gündəlik, aylıq) və ya dövri sorğu (polling) seçilə bilər.\n🔒 **Yarım-dupleks Qorunması**: Hesabat oxunarkən əsas Modbus sorğu dövrü müvəqqəti dayandırılır (`pollPaused=true`) və hesabat qurtardıqdan sonra avtomatik bərpa olunur.",
319
+ "sm": 12
320
+ },
321
+ "clockHeader": {
322
+ "type": "header",
323
+ "text": "AFC Vaxt Mənbəyi"
324
+ },
325
+ "afcTimeRegister": {
326
+ "type": "number",
327
+ "label": "Əsas AFC Vaxt Registri (Default AFC Real-Time Clock Register)",
328
+ "default": 9900,
329
+ "min": 1,
330
+ "max": 65535,
331
+ "sm": 12,
332
+ "md": 6
333
+ },
334
+ "groupsHeader": {
335
+ "type": "header",
336
+ "text": "Hesabat Qrupları Konfiqurasiyası (Oxuma Növü: Cədvəl / Dövri / Əl ilə)"
337
+ },
338
+ "reportGroups": {
339
+ "type": "table",
340
+ "label": "Hesabat Qrupları Siyahısı",
341
+ "sm": 12,
342
+ "items": [
343
+ {
344
+ "name": "name",
345
+ "attr": "name",
346
+ "type": "text",
347
+ "title": "Qrup Adı",
348
+ "width": "12%"
349
+ },
350
+ {
351
+ "name": "enabled",
352
+ "attr": "enabled",
353
+ "type": "checkbox",
354
+ "title": "Aktiv",
355
+ "width": "5%"
356
+ },
357
+ {
358
+ "name": "readMode",
359
+ "attr": "readMode",
111
360
  "type": "select",
112
- "label": "Data Bits",
361
+ "title": "Oxuma Növü",
113
362
  "options": [
114
363
  {
115
- "value": 7,
116
- "label": "7"
364
+ "value": "schedule",
365
+ "label": "Cədvəl (AFC Saatı)"
117
366
  },
118
367
  {
119
- "value": 8,
120
- "label": "8"
368
+ "value": "polling",
369
+ "label": "Dövri (Interval)"
370
+ },
371
+ {
372
+ "value": "manual",
373
+ "label": "Yalnız Əl ilə"
121
374
  }
122
375
  ],
123
- "default": 8,
124
- "hidden": "data.connectionType !== 'serial'",
125
- "sm": 6,
126
- "md": 2
376
+ "width": "15%"
127
377
  },
128
- "stopBits": {
378
+ {
379
+ "name": "scheduleType",
380
+ "attr": "scheduleType",
129
381
  "type": "select",
130
- "label": "Stop Bits",
382
+ "title": "Cədvəl Tipi",
131
383
  "options": [
132
384
  {
133
- "value": 1,
134
- "label": "1"
385
+ "value": "hourly",
386
+ "label": "Hər saat"
135
387
  },
136
388
  {
137
- "value": 2,
138
- "label": "2"
389
+ "value": "daily",
390
+ "label": "Hər gün"
391
+ },
392
+ {
393
+ "value": "monthly",
394
+ "label": "Hər ay"
139
395
  }
140
396
  ],
141
- "default": 1,
142
- "hidden": "data.connectionType !== 'serial'",
143
- "sm": 6,
144
- "md": 2
397
+ "width": "11%"
398
+ },
399
+ {
400
+ "name": "scheduleDay",
401
+ "attr": "scheduleDay",
402
+ "type": "number",
403
+ "title": "Gün",
404
+ "width": "5%"
145
405
  },
146
- "parity": {
406
+ {
407
+ "name": "scheduleHour",
408
+ "attr": "scheduleHour",
409
+ "type": "number",
410
+ "title": "Saat",
411
+ "width": "5%"
412
+ },
413
+ {
414
+ "name": "scheduleMinute",
415
+ "attr": "scheduleMinute",
416
+ "type": "number",
417
+ "title": "Dəq",
418
+ "width": "5%"
419
+ },
420
+ {
421
+ "name": "timeRegister",
422
+ "attr": "timeRegister",
423
+ "type": "number",
424
+ "title": "AFC Vaxt Reg",
425
+ "width": "10%"
426
+ },
427
+ {
428
+ "name": "age",
429
+ "attr": "age",
430
+ "type": "number",
431
+ "title": "Yaş (Age)",
432
+ "width": "6%"
433
+ },
434
+ {
435
+ "name": "pollInterval",
436
+ "attr": "pollInterval",
437
+ "type": "number",
438
+ "title": "Interval (s)",
439
+ "width": "8%"
440
+ },
441
+ {
442
+ "name": "ageRegisterM1",
443
+ "attr": "ageRegisterM1",
444
+ "type": "number",
445
+ "title": "M1 Age Reg",
446
+ "width": "5%"
447
+ },
448
+ {
449
+ "name": "ageRegisterM2",
450
+ "attr": "ageRegisterM2",
451
+ "type": "number",
452
+ "title": "M2 Age Reg",
453
+ "width": "5%"
454
+ },
455
+ {
456
+ "name": "ageRegisterM3",
457
+ "attr": "ageRegisterM3",
458
+ "type": "number",
459
+ "title": "M3 Age Reg",
460
+ "width": "5%"
461
+ },
462
+ {
463
+ "name": "ageRegisterM4",
464
+ "attr": "ageRegisterM4",
465
+ "type": "number",
466
+ "title": "M4 Age Reg",
467
+ "width": "5%"
468
+ },
469
+ {
470
+ "name": "ageRegisterM5",
471
+ "attr": "ageRegisterM5",
472
+ "type": "number",
473
+ "title": "M5 Age Reg",
474
+ "width": "5%"
475
+ },
476
+ {
477
+ "name": "ageRegisterM6",
478
+ "attr": "ageRegisterM6",
479
+ "type": "number",
480
+ "title": "M6 Age Reg",
481
+ "width": "5%"
482
+ },
483
+ {
484
+ "name": "ageRegisterM7",
485
+ "attr": "ageRegisterM7",
486
+ "type": "number",
487
+ "title": "M7 Age Reg",
488
+ "width": "5%"
489
+ },
490
+ {
491
+ "name": "ageRegisterM8",
492
+ "attr": "ageRegisterM8",
493
+ "type": "number",
494
+ "title": "M8 Age Reg",
495
+ "width": "5%"
496
+ }
497
+ ]
498
+ },
499
+ "dailyTagsHeader": {
500
+ "type": "header",
501
+ "text": "Gündəlik Hesabat Teqləri (Daily Report - 57 Teq)"
502
+ },
503
+ "dailyTags": {
504
+ "type": "table",
505
+ "label": "Gündəlik Teqlər",
506
+ "sm": 12,
507
+ "items": [
508
+ {
509
+ "name": "name",
510
+ "attr": "name",
511
+ "type": "text",
512
+ "title": "Teq Adı",
513
+ "width": "25%"
514
+ },
515
+ {
516
+ "name": "meter",
517
+ "attr": "meter",
518
+ "type": "number",
519
+ "title": "Sayğac (Meter)",
520
+ "width": "10%"
521
+ },
522
+ {
523
+ "name": "addressAge0",
524
+ "attr": "addressAge0",
525
+ "type": "number",
526
+ "title": "Ünvan (Age 0)",
527
+ "width": "15%"
528
+ },
529
+ {
530
+ "name": "addressAgeOthers",
531
+ "attr": "addressAgeOthers",
532
+ "type": "number",
533
+ "title": "Ünvan (Age 1..35)",
534
+ "width": "15%"
535
+ },
536
+ {
537
+ "name": "dataType",
538
+ "attr": "dataType",
147
539
  "type": "select",
148
- "label": "Parity",
540
+ "title": "Tip",
149
541
  "options": [
150
542
  {
151
- "value": "none",
152
- "label": "None"
543
+ "value": "float",
544
+ "label": "float"
545
+ },
546
+ {
547
+ "value": "uint32",
548
+ "label": "uint32"
549
+ },
550
+ {
551
+ "value": "int32",
552
+ "label": "int32"
553
+ },
554
+ {
555
+ "value": "uint16",
556
+ "label": "uint16"
557
+ },
558
+ {
559
+ "value": "dt",
560
+ "label": "dt"
153
561
  },
154
562
  {
155
- "value": "even",
156
- "label": "Even"
563
+ "value": "ascii8",
564
+ "label": "ascii8"
157
565
  },
158
566
  {
159
- "value": "odd",
160
- "label": "Odd"
567
+ "value": "ascii16",
568
+ "label": "ascii16"
161
569
  }
162
570
  ],
163
- "default": "none",
164
- "hidden": "data.connectionType !== 'serial'",
165
- "sm": 6,
166
- "md": 2
167
- },
168
- "netHeader": {
169
- "type": "header",
170
- "text": "TCP Şəbəkə Parametrləri",
171
- "hidden": "data.connectionType === 'serial'"
571
+ "width": "15%"
172
572
  },
173
- "tcpHost": {
573
+ {
574
+ "name": "formula",
575
+ "attr": "formula",
174
576
  "type": "text",
175
- "label": "Modbus TCP Server IP / Host",
176
- "default": "127.0.0.1",
177
- "hidden": "data.connectionType === 'serial'",
178
- "sm": 12,
179
- "md": 6
577
+ "title": "Formula",
578
+ "width": "20%"
579
+ }
580
+ ]
581
+ },
582
+ "hourlyTagsHeader": {
583
+ "type": "header",
584
+ "text": "Saatlıq Hesabat Teqləri (Hourly Report - 57 Teq)"
585
+ },
586
+ "hourlyTags": {
587
+ "type": "table",
588
+ "label": "Saatlıq Teqlər",
589
+ "sm": 12,
590
+ "items": [
591
+ {
592
+ "name": "name",
593
+ "attr": "name",
594
+ "type": "text",
595
+ "title": "Teq Adı",
596
+ "width": "25%"
180
597
  },
181
- "tcpPort": {
598
+ {
599
+ "name": "meter",
600
+ "attr": "meter",
182
601
  "type": "number",
183
- "label": "TCP Port",
184
- "min": 1,
185
- "max": 65535,
186
- "default": 502,
187
- "hidden": "data.connectionType === 'serial'",
188
- "sm": 6,
189
- "md": 3
190
- },
191
- "tcpTimeout": {
602
+ "title": "Sayğac (Meter)",
603
+ "width": "10%"
604
+ },
605
+ {
606
+ "name": "addressAge0",
607
+ "attr": "addressAge0",
192
608
  "type": "number",
193
- "label": "TCP Timeout (ms)",
194
- "min": 200,
195
- "max": 30000,
196
- "default": 2000,
197
- "hidden": "data.connectionType === 'serial'",
198
- "sm": 6,
199
- "md": 3
200
- }
201
- }
202
- },
203
- "tagsTab": {
204
- "type": "panel",
205
- "label": "Stansiya (Dövri Teqlər)",
206
- "items": {
207
- "formulaHelp": {
208
- "type": "staticText",
209
- "text": "📐 **Formula Sintaksisi**: Oxunan xam dəyər `x` dəyişəni ilə ifadə olunur. İstənilən riyazi ifadə və `Math.*` funksiyaları yazıla bilər.\nNümunələr: `x * 0.1`, `x / 1000`, `x + 273.15`, `Math.round(x * 100) / 100`. Boş buraxıldıqda xam dəyər qəbul edilir.",
210
- "sm": 12
211
- },
212
- "tags": {
213
- "type": "table",
214
- "label": "Cari Dövri Teqlər Siyahısı (123 Teq)",
215
- "sm": 12,
216
- "items": [
217
- {
218
- "type": "text",
219
- "attr": "name",
220
- "title": "Teq Adı / Tagname",
221
- "width": "20%"
222
- },
223
- {
224
- "type": "number",
225
- "attr": "address",
226
- "title": "Modbus Ünvan",
227
- "width": "10%"
228
- },
229
- {
230
- "type": "select",
231
- "attr": "dataType",
232
- "title": "Tip",
233
- "options": [
234
- {
235
- "value": "float",
236
- "label": "float (IEEE-754)"
237
- },
238
- {
239
- "value": "uint32",
240
- "label": "uint32"
241
- },
242
- {
243
- "value": "int32",
244
- "label": "int32"
245
- },
246
- {
247
- "value": "uint16",
248
- "label": "uint16"
249
- },
250
- {
251
- "value": "int16",
252
- "label": "int16"
253
- },
254
- {
255
- "value": "dt",
256
- "label": "dt (DateTime)"
257
- },
258
- {
259
- "value": "bool",
260
- "label": "bool (Coil)"
261
- },
262
- {
263
- "value": "ascii8",
264
- "label": "ascii8 (4 Reg)"
265
- },
266
- {
267
- "value": "ascii16",
268
- "label": "ascii16 (8 Reg)"
269
- }
270
- ],
271
- "width": "15%"
272
- },
273
- {
274
- "type": "text",
275
- "attr": "group",
276
- "title": "Qrup / Group",
277
- "width": "15%"
278
- },
279
- {
280
- "type": "checkbox",
281
- "attr": "poll",
282
- "title": "Dövri",
283
- "width": "8%"
284
- },
285
- {
286
- "type": "text",
287
- "attr": "formula",
288
- "title": "Formula (məs: x * 0.1)",
289
- "width": "16%"
290
- },
291
- {
292
- "type": "text",
293
- "attr": "unit",
294
- "title": "Vahid",
295
- "width": "8%"
296
- },
297
- {
298
- "type": "text",
299
- "attr": "description",
300
- "title": "Təsvir",
301
- "width": "18%"
609
+ "title": "Ünvan (Age 0)",
610
+ "width": "15%"
611
+ },
612
+ {
613
+ "name": "addressAgeOthers",
614
+ "attr": "addressAgeOthers",
615
+ "type": "number",
616
+ "title": "Ünvan (Age 1..35)",
617
+ "width": "15%"
618
+ },
619
+ {
620
+ "name": "dataType",
621
+ "attr": "dataType",
622
+ "type": "select",
623
+ "title": "Tip",
624
+ "options": [
625
+ {
626
+ "value": "float",
627
+ "label": "float"
628
+ },
629
+ {
630
+ "value": "uint32",
631
+ "label": "uint32"
632
+ },
633
+ {
634
+ "value": "int32",
635
+ "label": "int32"
636
+ },
637
+ {
638
+ "value": "uint16",
639
+ "label": "uint16"
640
+ },
641
+ {
642
+ "value": "dt",
643
+ "label": "dt"
644
+ },
645
+ {
646
+ "value": "ascii8",
647
+ "label": "ascii8"
648
+ },
649
+ {
650
+ "value": "ascii16",
651
+ "label": "ascii16"
302
652
  }
303
- ]
653
+ ],
654
+ "width": "15%"
655
+ },
656
+ {
657
+ "name": "formula",
658
+ "attr": "formula",
659
+ "type": "text",
660
+ "title": "Formula",
661
+ "width": "20%"
304
662
  }
305
- }
663
+ ]
306
664
  },
307
- "reportsTab": {
308
- "type": "panel",
309
- "label": "Hesabatlar & Cədvəl",
310
- "items": {
311
- "reportHelp": {
312
- "type": "staticText",
313
- "text": "⏱️ **Cədvəl və Yaş (Age 1) Məntiqi**: Günün tamamında (məs: 08:02) və ya saat tamamında axın kompüteri bağlanmış dövrün məlumatlarını Age 1 yaddaşına atır. Hər qrup üçün fərdi olaraq cədvəl (saatlıq, gündəlik, aylıq) və ya dövri sorğu (polling) seçilə bilər.\n🔒 **Yarım-dupleks Qorunması**: Hesabat oxunarkən əsas Modbus sorğu dövrü müvəqqəti dayandırılır (`pollPaused=true`) və hesabat qurtardıqdan sonra avtomatik bərpa olunur.",
314
- "sm": 12
315
- },
316
- "clockHeader": {
317
- "type": "header",
318
- "text": "AFC Vaxt Mənbəyi"
319
- },
320
- "afcTimeRegister": {
665
+ "snapshotTagsHeader": {
666
+ "type": "header",
667
+ "text": "Ani Hesabat Teqləri (Snapshot Report - 57 Teq)"
668
+ },
669
+ "snapshotTags": {
670
+ "type": "table",
671
+ "label": "Ani Teqlər",
672
+ "sm": 12,
673
+ "items": [
674
+ {
675
+ "name": "name",
676
+ "attr": "name",
677
+ "type": "text",
678
+ "title": "Teq Adı",
679
+ "width": "30%"
680
+ },
681
+ {
682
+ "name": "meter",
683
+ "attr": "meter",
321
684
  "type": "number",
322
- "label": "Əsas AFC Vaxt Registri (Default AFC Real-Time Clock Register)",
323
- "default": 9900,
324
- "min": 1,
325
- "max": 65535,
326
- "sm": 12,
327
- "md": 6
328
- },
329
- "groupsHeader": {
330
- "type": "header",
331
- "text": "Hesabat Qrupları Konfiqurasiyası (Oxuma Növü: Cədvəl / Dövri / Əl ilə)"
332
- },
333
- "reportGroups": {
334
- "type": "table",
335
- "label": "Hesabat Qrupları Siyahısı",
336
- "sm": 12,
337
- "items": [
338
- {
339
- "type": "text",
340
- "attr": "name",
341
- "title": "Qrup Adı",
342
- "width": "12%"
343
- },
344
- {
345
- "type": "checkbox",
346
- "attr": "enabled",
347
- "title": "Aktiv",
348
- "width": "5%"
349
- },
350
- {
351
- "type": "select",
352
- "attr": "readMode",
353
- "title": "Oxuma Növü",
354
- "options": [
355
- {
356
- "value": "schedule",
357
- "label": "Cədvəl (AFC Saatı)"
358
- },
359
- {
360
- "value": "polling",
361
- "label": "Dövri (Interval)"
362
- },
363
- {
364
- "value": "manual",
365
- "label": "Yalnız Əl ilə"
366
- }
367
- ],
368
- "width": "15%"
369
- },
370
- {
371
- "type": "select",
372
- "attr": "scheduleType",
373
- "title": "Cədvəl Tipi",
374
- "options": [
375
- {
376
- "value": "hourly",
377
- "label": "Hər saat"
378
- },
379
- {
380
- "value": "daily",
381
- "label": "Hər gün"
382
- },
383
- {
384
- "value": "monthly",
385
- "label": "Hər ay"
386
- }
387
- ],
388
- "width": "11%"
389
- },
390
- {
391
- "type": "number",
392
- "attr": "scheduleDay",
393
- "title": "Gün",
394
- "width": "5%"
395
- },
396
- {
397
- "type": "number",
398
- "attr": "scheduleHour",
399
- "title": "Saat",
400
- "width": "5%"
401
- },
402
- {
403
- "type": "number",
404
- "attr": "scheduleMinute",
405
- "title": "Dəq",
406
- "width": "5%"
407
- },
408
- {
409
- "type": "number",
410
- "attr": "timeRegister",
411
- "title": "AFC Vaxt Reg",
412
- "width": "10%"
413
- },
414
- {
415
- "type": "number",
416
- "attr": "age",
417
- "title": "Yaş (Age)",
418
- "width": "6%"
419
- },
420
- {
421
- "type": "number",
422
- "attr": "pollInterval",
423
- "title": "Interval (s)",
424
- "width": "8%"
425
- },
426
- {
427
- "type": "number",
428
- "attr": "ageRegisterM1",
429
- "title": "M1 Age Reg",
430
- "width": "9%"
431
- },
432
- {
433
- "type": "number",
434
- "attr": "ageRegisterM2",
435
- "title": "M2 Age Reg",
436
- "width": "9%"
437
- }
438
- ]
439
- },
440
- "dailyTagsHeader": {
441
- "type": "header",
442
- "text": "Gündəlik Hesabat Teqləri (Daily Report - 57 Teq)"
443
- },
444
- "dailyTags": {
445
- "type": "table",
446
- "label": "Gündəlik Teqlər",
447
- "sm": 12,
448
- "items": [
449
- {
450
- "type": "text",
451
- "attr": "name",
452
- "title": "Teq Adı",
453
- "width": "25%"
454
- },
455
- {
456
- "type": "number",
457
- "attr": "meter",
458
- "title": "Sayğac (Meter)",
459
- "width": "10%"
460
- },
461
- {
462
- "type": "number",
463
- "attr": "addressAge0",
464
- "title": "Ünvan (Age 0)",
465
- "width": "15%"
466
- },
467
- {
468
- "type": "number",
469
- "attr": "addressAgeOthers",
470
- "title": "Ünvan (Age 1..35)",
471
- "width": "15%"
472
- },
473
- {
474
- "type": "select",
475
- "attr": "dataType",
476
- "title": "Tip",
477
- "options": [
478
- {
479
- "value": "float",
480
- "label": "float"
481
- },
482
- {
483
- "value": "uint32",
484
- "label": "uint32"
485
- },
486
- {
487
- "value": "int32",
488
- "label": "int32"
489
- },
490
- {
491
- "value": "uint16",
492
- "label": "uint16"
493
- },
494
- {
495
- "value": "dt",
496
- "label": "dt"
497
- },
498
- {
499
- "value": "ascii8",
500
- "label": "ascii8"
501
- },
502
- {
503
- "value": "ascii16",
504
- "label": "ascii16"
505
- }
506
- ],
507
- "width": "15%"
508
- },
509
- {
510
- "type": "text",
511
- "attr": "formula",
512
- "title": "Formula",
513
- "width": "20%"
514
- }
515
- ]
516
- },
517
- "hourlyTagsHeader": {
518
- "type": "header",
519
- "text": "Saatlıq Hesabat Teqləri (Hourly Report - 57 Teq)"
520
- },
521
- "hourlyTags": {
522
- "type": "table",
523
- "label": "Saatlıq Teqlər",
524
- "sm": 12,
525
- "items": [
526
- {
527
- "type": "text",
528
- "attr": "name",
529
- "title": "Teq Adı",
530
- "width": "25%"
531
- },
532
- {
533
- "type": "number",
534
- "attr": "meter",
535
- "title": "Sayğac (Meter)",
536
- "width": "10%"
537
- },
538
- {
539
- "type": "number",
540
- "attr": "addressAge0",
541
- "title": "Ünvan (Age 0)",
542
- "width": "15%"
543
- },
544
- {
545
- "type": "number",
546
- "attr": "addressAgeOthers",
547
- "title": "Ünvan (Age 1..35)",
548
- "width": "15%"
549
- },
550
- {
551
- "type": "select",
552
- "attr": "dataType",
553
- "title": "Tip",
554
- "options": [
555
- {
556
- "value": "float",
557
- "label": "float"
558
- },
559
- {
560
- "value": "uint32",
561
- "label": "uint32"
562
- },
563
- {
564
- "value": "int32",
565
- "label": "int32"
566
- },
567
- {
568
- "value": "uint16",
569
- "label": "uint16"
570
- },
571
- {
572
- "value": "dt",
573
- "label": "dt"
574
- },
575
- {
576
- "value": "ascii8",
577
- "label": "ascii8"
578
- },
579
- {
580
- "value": "ascii16",
581
- "label": "ascii16"
582
- }
583
- ],
584
- "width": "15%"
585
- },
586
- {
587
- "type": "text",
588
- "attr": "formula",
589
- "title": "Formula",
590
- "width": "20%"
591
- }
592
- ]
593
- },
594
- "snapshotTagsHeader": {
595
- "type": "header",
596
- "text": "Ani Hesabat Teqləri (Snapshot Report - 57 Teq)"
597
- },
598
- "snapshotTags": {
599
- "type": "table",
600
- "label": "Ani Teqlər",
601
- "sm": 12,
602
- "items": [
603
- {
604
- "type": "text",
605
- "attr": "name",
606
- "title": "Teq Adı",
607
- "width": "30%"
608
- },
609
- {
610
- "type": "number",
611
- "attr": "meter",
612
- "title": "Sayğac",
613
- "width": "15%"
614
- },
615
- {
616
- "type": "number",
617
- "attr": "address",
618
- "title": "Ünvan",
619
- "width": "20%"
620
- },
621
- {
622
- "type": "select",
623
- "attr": "dataType",
624
- "title": "Tip",
625
- "options": [
626
- {
627
- "value": "float",
628
- "label": "float"
629
- },
630
- {
631
- "value": "uint32",
632
- "label": "uint32"
633
- },
634
- {
635
- "value": "int32",
636
- "label": "int32"
637
- },
638
- {
639
- "value": "uint16",
640
- "label": "uint16"
641
- },
642
- {
643
- "value": "dt",
644
- "label": "dt"
645
- },
646
- {
647
- "value": "ascii8",
648
- "label": "ascii8"
649
- },
650
- {
651
- "value": "ascii16",
652
- "label": "ascii16"
653
- }
654
- ],
655
- "width": "15%"
656
- },
657
- {
658
- "type": "text",
659
- "attr": "formula",
660
- "title": "Formula",
661
- "width": "20%"
662
- }
663
- ]
664
- },
665
- "customTagsHeader": {
666
- "type": "header",
667
- "text": "Xüsusi Hesabat Teqləri (Prover və s.)"
668
- },
669
- "customReportTags": {
670
- "type": "table",
671
- "label": "Xüsusi Teqlər",
672
- "sm": 12,
673
- "items": [
674
- {
675
- "type": "text",
676
- "attr": "groupName",
677
- "title": "Qrup Adı (məs: Prover)",
678
- "width": "20%"
679
- },
680
- {
681
- "type": "text",
682
- "attr": "name",
683
- "title": "Teq Adı",
684
- "width": "25%"
685
- },
686
- {
687
- "type": "number",
688
- "attr": "meter",
689
- "title": "Sayğac",
690
- "width": "10%"
691
- },
692
- {
693
- "type": "number",
694
- "attr": "addressAge0",
695
- "title": "Ünvan (Age 0)",
696
- "width": "15%"
697
- },
698
- {
699
- "type": "number",
700
- "attr": "addressAgeOthers",
701
- "title": "Ünvan (Age Others)",
702
- "width": "15%"
703
- },
704
- {
705
- "type": "select",
706
- "attr": "dataType",
707
- "title": "Tip",
708
- "options": [
709
- {
710
- "value": "float",
711
- "label": "float"
712
- },
713
- {
714
- "value": "uint32",
715
- "label": "uint32"
716
- },
717
- {
718
- "value": "int32",
719
- "label": "int32"
720
- },
721
- {
722
- "value": "uint16",
723
- "label": "uint16"
724
- },
725
- {
726
- "value": "dt",
727
- "label": "dt"
728
- }
729
- ],
730
- "width": "15%"
685
+ "title": "Sayğac",
686
+ "width": "15%"
687
+ },
688
+ {
689
+ "name": "address",
690
+ "attr": "address",
691
+ "type": "number",
692
+ "title": "Ünvan",
693
+ "width": "20%"
694
+ },
695
+ {
696
+ "name": "dataType",
697
+ "attr": "dataType",
698
+ "type": "select",
699
+ "title": "Tip",
700
+ "options": [
701
+ {
702
+ "value": "float",
703
+ "label": "float"
704
+ },
705
+ {
706
+ "value": "uint32",
707
+ "label": "uint32"
708
+ },
709
+ {
710
+ "value": "int32",
711
+ "label": "int32"
712
+ },
713
+ {
714
+ "value": "uint16",
715
+ "label": "uint16"
716
+ },
717
+ {
718
+ "value": "dt",
719
+ "label": "dt"
720
+ },
721
+ {
722
+ "value": "ascii8",
723
+ "label": "ascii8"
724
+ },
725
+ {
726
+ "value": "ascii16",
727
+ "label": "ascii16"
731
728
  }
732
- ]
729
+ ],
730
+ "width": "15%"
731
+ },
732
+ {
733
+ "name": "formula",
734
+ "attr": "formula",
735
+ "type": "text",
736
+ "title": "Formula",
737
+ "width": "20%"
733
738
  }
734
- }
739
+ ]
735
740
  },
736
- "licensingTab": {
737
- "type": "panel",
738
- "label": "Lisenziya (RFC-005)",
739
- "items": {
740
- "licHeader": {
741
- "type": "header",
742
- "text": "Avadanlıq İdentifikatoru və Lisenziyalaşdırma"
743
- },
744
- "licText": {
745
- "type": "staticText",
746
- "text": "🛡️ Bu adapter Native AOT mühərriki vasitəsilə aparat səviyyəsində qorunur (RFC-005). Lisenziya açarı almaq üçün aşağıdakı Hardware ID-ni təqdim edin.",
747
- "sm": 12
748
- },
749
- "licenseKey": {
741
+ "customTagsHeader": {
742
+ "type": "header",
743
+ "text": "Xüsusi Hesabat Teqləri (Prover və s.)"
744
+ },
745
+ "customReportTags": {
746
+ "type": "table",
747
+ "label": "Xüsusi Teqlər",
748
+ "sm": 12,
749
+ "items": [
750
+ {
751
+ "name": "groupName",
752
+ "attr": "groupName",
753
+ "type": "text",
754
+ "title": "Qrup Adı (məs: Prover)",
755
+ "width": "20%"
756
+ },
757
+ {
758
+ "name": "name",
759
+ "attr": "name",
750
760
  "type": "text",
751
- "label": "Lisenziya Açarı / Expired Hash (PFH- / Ed25519)",
752
- "help": "Xüsusi hazırlanmış PFH- expired hash və ya Ed25519 lisenziya açarını bura daxil edin",
753
- "sm": 12
761
+ "title": "Teq Adı",
762
+ "width": "25%"
754
763
  },
755
- "licenseTimeSource": {
764
+ {
765
+ "name": "meter",
766
+ "attr": "meter",
767
+ "type": "number",
768
+ "title": "Sayğac",
769
+ "width": "10%"
770
+ },
771
+ {
772
+ "name": "addressAge0",
773
+ "attr": "addressAge0",
774
+ "type": "number",
775
+ "title": "Ünvan (Age 0)",
776
+ "width": "15%"
777
+ },
778
+ {
779
+ "name": "addressAgeOthers",
780
+ "attr": "addressAgeOthers",
781
+ "type": "number",
782
+ "title": "Ünvan (Age Others)",
783
+ "width": "15%"
784
+ },
785
+ {
786
+ "name": "dataType",
787
+ "attr": "dataType",
756
788
  "type": "select",
757
- "label": "Zaman Yoxlama Mənbəyi / License Time Source",
789
+ "title": "Tip",
758
790
  "options": [
759
- { "value": "afc", "label": "Physical Flow Computer (AFC Hardware RTC - Tamper Proof) [Tövsiyə olunur]" },
760
- { "value": "pc", "label": "Local PC Clock (Monotonic Anti-Rollback Guard)" }
791
+ {
792
+ "value": "float",
793
+ "label": "float"
794
+ },
795
+ {
796
+ "value": "uint32",
797
+ "label": "uint32"
798
+ },
799
+ {
800
+ "value": "int32",
801
+ "label": "int32"
802
+ },
803
+ {
804
+ "value": "uint16",
805
+ "label": "uint16"
806
+ },
807
+ {
808
+ "value": "dt",
809
+ "label": "dt"
810
+ }
761
811
  ],
762
- "default": "afc",
763
- "sm": 8
812
+ "width": "15%"
813
+ }
814
+ ]
815
+ }
816
+ }
817
+ },
818
+ "licensingTab": {
819
+ "type": "panel",
820
+ "label": "Lisenziya (RFC-005)",
821
+ "items": {
822
+ "licHeader": {
823
+ "type": "header",
824
+ "text": "Avadanlıq İdentifikatoru və Lisenziyalaşdırma"
825
+ },
826
+ "licText": {
827
+ "type": "staticText",
828
+ "text": "🛡️ Bu adapter Native AOT mühərriki vasitəsilə aparat səviyyəsində qorunur (RFC-005). Lisenziya açarı almaq üçün aşağıdakı Hardware ID-ni təqdim edin.",
829
+ "sm": 12
830
+ },
831
+ "licenseKey": {
832
+ "type": "text",
833
+ "label": "Lisenziya Açarı / Expired Hash (PFH- / Ed25519)",
834
+ "help": "Xüsusi hazırlanmış PFH- expired hash və ya Ed25519 lisenziya açarını bura daxil edin",
835
+ "sm": 12
836
+ },
837
+ "licenseTimeSource": {
838
+ "type": "select",
839
+ "label": "Zaman Yoxlama Mənbəyi / License Time Source",
840
+ "options": [
841
+ {
842
+ "value": "afc",
843
+ "label": "Physical Flow Computer (AFC Hardware RTC - Tamper Proof) [Tövsiyə olunur]"
764
844
  },
765
- "licenseTimeAddress": {
766
- "type": "number",
767
- "label": "AFC RTC Clock Registr Ünvanı",
768
- "default": 9950,
769
- "min": 1,
770
- "max": 65535,
771
- "sm": 4
845
+ {
846
+ "value": "pc",
847
+ "label": "Local PC Clock (Monotonic Anti-Rollback Guard)"
772
848
  }
773
- }
849
+ ],
850
+ "default": "afc",
851
+ "sm": 8
852
+ },
853
+ "licenseTimeAddress": {
854
+ "type": "number",
855
+ "label": "AFC RTC Clock Registr Ünvanı",
856
+ "default": 9950,
857
+ "min": 1,
858
+ "max": 65535,
859
+ "sm": 4
774
860
  }
775
861
  }
776
862
  }