iobroker.prosoft_flow 0.1.0 → 0.1.2

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,776 +1,820 @@
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%"
279
+ },
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%"
109
356
  },
110
- "dataBits": {
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ı)"
366
+ },
367
+ {
368
+ "value": "polling",
369
+ "label": "Dövri (Interval)"
117
370
  },
118
371
  {
119
- "value": 8,
120
- "label": "8"
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"
387
+ },
388
+ {
389
+ "value": "daily",
390
+ "label": "Hər gün"
135
391
  },
136
392
  {
137
- "value": 2,
138
- "label": "2"
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%"
405
+ },
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": "9%"
447
+ },
448
+ {
449
+ "name": "ageRegisterM2",
450
+ "attr": "ageRegisterM2",
451
+ "type": "number",
452
+ "title": "M2 Age Reg",
453
+ "width": "9%"
454
+ }
455
+ ]
456
+ },
457
+ "dailyTagsHeader": {
458
+ "type": "header",
459
+ "text": "Gündəlik Hesabat Teqləri (Daily Report - 57 Teq)"
460
+ },
461
+ "dailyTags": {
462
+ "type": "table",
463
+ "label": "Gündəlik Teqlər",
464
+ "sm": 12,
465
+ "items": [
466
+ {
467
+ "name": "name",
468
+ "attr": "name",
469
+ "type": "text",
470
+ "title": "Teq Adı",
471
+ "width": "25%"
472
+ },
473
+ {
474
+ "name": "meter",
475
+ "attr": "meter",
476
+ "type": "number",
477
+ "title": "Sayğac (Meter)",
478
+ "width": "10%"
479
+ },
480
+ {
481
+ "name": "addressAge0",
482
+ "attr": "addressAge0",
483
+ "type": "number",
484
+ "title": "Ünvan (Age 0)",
485
+ "width": "15%"
145
486
  },
146
- "parity": {
487
+ {
488
+ "name": "addressAgeOthers",
489
+ "attr": "addressAgeOthers",
490
+ "type": "number",
491
+ "title": "Ünvan (Age 1..35)",
492
+ "width": "15%"
493
+ },
494
+ {
495
+ "name": "dataType",
496
+ "attr": "dataType",
147
497
  "type": "select",
148
- "label": "Parity",
498
+ "title": "Tip",
149
499
  "options": [
150
500
  {
151
- "value": "none",
152
- "label": "None"
501
+ "value": "float",
502
+ "label": "float"
503
+ },
504
+ {
505
+ "value": "uint32",
506
+ "label": "uint32"
507
+ },
508
+ {
509
+ "value": "int32",
510
+ "label": "int32"
153
511
  },
154
512
  {
155
- "value": "even",
156
- "label": "Even"
513
+ "value": "uint16",
514
+ "label": "uint16"
157
515
  },
158
516
  {
159
- "value": "odd",
160
- "label": "Odd"
517
+ "value": "dt",
518
+ "label": "dt"
519
+ },
520
+ {
521
+ "value": "ascii8",
522
+ "label": "ascii8"
523
+ },
524
+ {
525
+ "value": "ascii16",
526
+ "label": "ascii16"
161
527
  }
162
528
  ],
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'"
529
+ "width": "15%"
172
530
  },
173
- "tcpHost": {
531
+ {
532
+ "name": "formula",
533
+ "attr": "formula",
534
+ "type": "text",
535
+ "title": "Formula",
536
+ "width": "20%"
537
+ }
538
+ ]
539
+ },
540
+ "hourlyTagsHeader": {
541
+ "type": "header",
542
+ "text": "Saatlıq Hesabat Teqləri (Hourly Report - 57 Teq)"
543
+ },
544
+ "hourlyTags": {
545
+ "type": "table",
546
+ "label": "Saatlıq Teqlər",
547
+ "sm": 12,
548
+ "items": [
549
+ {
550
+ "name": "name",
551
+ "attr": "name",
174
552
  "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
553
+ "title": "Teq Adı",
554
+ "width": "25%"
180
555
  },
181
- "tcpPort": {
556
+ {
557
+ "name": "meter",
558
+ "attr": "meter",
182
559
  "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": {
560
+ "title": "Sayğac (Meter)",
561
+ "width": "10%"
562
+ },
563
+ {
564
+ "name": "addressAge0",
565
+ "attr": "addressAge0",
192
566
  "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%"
567
+ "title": "Ünvan (Age 0)",
568
+ "width": "15%"
569
+ },
570
+ {
571
+ "name": "addressAgeOthers",
572
+ "attr": "addressAgeOthers",
573
+ "type": "number",
574
+ "title": "Ünvan (Age 1..35)",
575
+ "width": "15%"
576
+ },
577
+ {
578
+ "name": "dataType",
579
+ "attr": "dataType",
580
+ "type": "select",
581
+ "title": "Tip",
582
+ "options": [
583
+ {
584
+ "value": "float",
585
+ "label": "float"
586
+ },
587
+ {
588
+ "value": "uint32",
589
+ "label": "uint32"
590
+ },
591
+ {
592
+ "value": "int32",
593
+ "label": "int32"
594
+ },
595
+ {
596
+ "value": "uint16",
597
+ "label": "uint16"
598
+ },
599
+ {
600
+ "value": "dt",
601
+ "label": "dt"
602
+ },
603
+ {
604
+ "value": "ascii8",
605
+ "label": "ascii8"
606
+ },
607
+ {
608
+ "value": "ascii16",
609
+ "label": "ascii16"
302
610
  }
303
- ]
611
+ ],
612
+ "width": "15%"
613
+ },
614
+ {
615
+ "name": "formula",
616
+ "attr": "formula",
617
+ "type": "text",
618
+ "title": "Formula",
619
+ "width": "20%"
304
620
  }
305
- }
621
+ ]
306
622
  },
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": {
623
+ "snapshotTagsHeader": {
624
+ "type": "header",
625
+ "text": "Ani Hesabat Teqləri (Snapshot Report - 57 Teq)"
626
+ },
627
+ "snapshotTags": {
628
+ "type": "table",
629
+ "label": "Ani Teqlər",
630
+ "sm": 12,
631
+ "items": [
632
+ {
633
+ "name": "name",
634
+ "attr": "name",
635
+ "type": "text",
636
+ "title": "Teq Adı",
637
+ "width": "30%"
638
+ },
639
+ {
640
+ "name": "meter",
641
+ "attr": "meter",
321
642
  "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%"
643
+ "title": "Sayğac",
644
+ "width": "15%"
645
+ },
646
+ {
647
+ "name": "address",
648
+ "attr": "address",
649
+ "type": "number",
650
+ "title": "Ünvan",
651
+ "width": "20%"
652
+ },
653
+ {
654
+ "name": "dataType",
655
+ "attr": "dataType",
656
+ "type": "select",
657
+ "title": "Tip",
658
+ "options": [
659
+ {
660
+ "value": "float",
661
+ "label": "float"
662
+ },
663
+ {
664
+ "value": "uint32",
665
+ "label": "uint32"
666
+ },
667
+ {
668
+ "value": "int32",
669
+ "label": "int32"
670
+ },
671
+ {
672
+ "value": "uint16",
673
+ "label": "uint16"
674
+ },
675
+ {
676
+ "value": "dt",
677
+ "label": "dt"
678
+ },
679
+ {
680
+ "value": "ascii8",
681
+ "label": "ascii8"
682
+ },
683
+ {
684
+ "value": "ascii16",
685
+ "label": "ascii16"
731
686
  }
732
- ]
687
+ ],
688
+ "width": "15%"
689
+ },
690
+ {
691
+ "name": "formula",
692
+ "attr": "formula",
693
+ "type": "text",
694
+ "title": "Formula",
695
+ "width": "20%"
733
696
  }
734
- }
697
+ ]
698
+ },
699
+ "customTagsHeader": {
700
+ "type": "header",
701
+ "text": "Xüsusi Hesabat Teqləri (Prover və s.)"
735
702
  },
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": {
703
+ "customReportTags": {
704
+ "type": "table",
705
+ "label": "Xüsusi Teqlər",
706
+ "sm": 12,
707
+ "items": [
708
+ {
709
+ "name": "groupName",
710
+ "attr": "groupName",
711
+ "type": "text",
712
+ "title": "Qrup Adı (məs: Prover)",
713
+ "width": "20%"
714
+ },
715
+ {
716
+ "name": "name",
717
+ "attr": "name",
750
718
  "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
719
+ "title": "Teq Adı",
720
+ "width": "25%"
721
+ },
722
+ {
723
+ "name": "meter",
724
+ "attr": "meter",
725
+ "type": "number",
726
+ "title": "Sayğac",
727
+ "width": "10%"
754
728
  },
755
- "licenseTimeSource": {
729
+ {
730
+ "name": "addressAge0",
731
+ "attr": "addressAge0",
732
+ "type": "number",
733
+ "title": "Ünvan (Age 0)",
734
+ "width": "15%"
735
+ },
736
+ {
737
+ "name": "addressAgeOthers",
738
+ "attr": "addressAgeOthers",
739
+ "type": "number",
740
+ "title": "Ünvan (Age Others)",
741
+ "width": "15%"
742
+ },
743
+ {
744
+ "name": "dataType",
745
+ "attr": "dataType",
756
746
  "type": "select",
757
- "label": "Zaman Yoxlama Mənbəyi / License Time Source",
747
+ "title": "Tip",
758
748
  "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)" }
749
+ {
750
+ "value": "float",
751
+ "label": "float"
752
+ },
753
+ {
754
+ "value": "uint32",
755
+ "label": "uint32"
756
+ },
757
+ {
758
+ "value": "int32",
759
+ "label": "int32"
760
+ },
761
+ {
762
+ "value": "uint16",
763
+ "label": "uint16"
764
+ },
765
+ {
766
+ "value": "dt",
767
+ "label": "dt"
768
+ }
761
769
  ],
762
- "default": "afc",
763
- "sm": 8
770
+ "width": "15%"
771
+ }
772
+ ]
773
+ }
774
+ }
775
+ },
776
+ "licensingTab": {
777
+ "type": "panel",
778
+ "label": "Lisenziya (RFC-005)",
779
+ "items": {
780
+ "licHeader": {
781
+ "type": "header",
782
+ "text": "Avadanlıq İdentifikatoru və Lisenziyalaşdırma"
783
+ },
784
+ "licText": {
785
+ "type": "staticText",
786
+ "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.",
787
+ "sm": 12
788
+ },
789
+ "licenseKey": {
790
+ "type": "text",
791
+ "label": "Lisenziya Açarı / Expired Hash (PFH- / Ed25519)",
792
+ "help": "Xüsusi hazırlanmış PFH- expired hash və ya Ed25519 lisenziya açarını bura daxil edin",
793
+ "sm": 12
794
+ },
795
+ "licenseTimeSource": {
796
+ "type": "select",
797
+ "label": "Zaman Yoxlama Mənbəyi / License Time Source",
798
+ "options": [
799
+ {
800
+ "value": "afc",
801
+ "label": "Physical Flow Computer (AFC Hardware RTC - Tamper Proof) [Tövsiyə olunur]"
764
802
  },
765
- "licenseTimeAddress": {
766
- "type": "number",
767
- "label": "AFC RTC Clock Registr Ünvanı",
768
- "default": 9950,
769
- "min": 1,
770
- "max": 65535,
771
- "sm": 4
803
+ {
804
+ "value": "pc",
805
+ "label": "Local PC Clock (Monotonic Anti-Rollback Guard)"
772
806
  }
773
- }
807
+ ],
808
+ "default": "afc",
809
+ "sm": 8
810
+ },
811
+ "licenseTimeAddress": {
812
+ "type": "number",
813
+ "label": "AFC RTC Clock Registr Ünvanı",
814
+ "default": 9950,
815
+ "min": 1,
816
+ "max": 65535,
817
+ "sm": 4
774
818
  }
775
819
  }
776
820
  }