iobroker.prosoft_flow 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -0
- package/admin/jsonConfig.json +778 -0
- package/admin/prosoft_flow.png +0 -0
- package/io-package.json +3272 -0
- package/lib/engineBridge.js +178 -0
- package/main.js +832 -0
- package/package.json +42 -0
- package/prebuilds/linux-arm64/prosoft_flow_engine.node.gz +0 -0
- package/prebuilds/linux-x64/prosoft_flow_engine.node.gz +0 -0
- package/prebuilds/osx-arm64/prosoft_flow_engine.node.gz +0 -0
- package/prebuilds/osx-x64/prosoft_flow_engine.node.gz +0 -0
- package/prebuilds/win-x64/prosoft_flow_engine.node.gz +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# ioBroker.prosoft_flow
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/iobroker.prosoft_flow)
|
|
4
|
+
[](https://www.npmjs.com/package/iobroker.prosoft_flow)
|
|
5
|
+

|
|
6
|
+
[](https://github.com/gokturk413/ioBroker.prosoft_flow)
|
|
7
|
+
|
|
8
|
+
High-performance ioBroker adapter for **Prosoft Flow Computers** (oil & gas fiscal metering, pipeline automation, custody transfer stations) powered by an ultra-fast **.NET 10 Native AOT engine**.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Əsas Xüsusiyyətlər / Key Features
|
|
13
|
+
|
|
14
|
+
1. **Native AOT Yüksək Sürətli Rabitə**:
|
|
15
|
+
- .NET 10 Native AOT ilə kompilyasiya olunmuş C# mühərriki birbaşa Node.js C-API addon kimi işləyir. Heç bir kənar .NET runtime və ya asılılıq tələb olunmur.
|
|
16
|
+
- Dəstəklənən protokollar: **Serial RTU (RS-232 / RS-485)**, **Modbus TCP**, və **Modbus RTU over TCP**.
|
|
17
|
+
- Dəstəklənən platformalar: **Windows x64**, **Linux x64**, **Linux ARM64** (Raspberry Pi / Industrial Edge), **macOS ARM64/x64**.
|
|
18
|
+
|
|
19
|
+
2. **Daxili Konfiqurasiya (Kənar DB Tələb Olunmur)**:
|
|
20
|
+
- Əvvəlki SQLite/SQLCipher verilənlər bazasındakı bütün 123 dövri teq və 171 hesabat teqi birbaşa adapterin `admin/jsonConfig.json` konfiqurasiyasına inteqrasiya olunub.
|
|
21
|
+
|
|
22
|
+
3. **Yarım-dupleks Qorunması (Half-Duplex I/O Safety)**:
|
|
23
|
+
- RS-485 / Serial və ya RTU rabitə xətlərində toqquşmaların (collision / timeout) qarşısını almaq üçün hesabat oxunarkən (`ReadReportWithAge`) dövri sorğu dövrü (cyclic polling) `_ioLock` (SemaphoreSlim) vasitəsilə təhlükəsiz dayandırılır və hesabat oxunuşu bitdikdən sonra dərhal davam etdirilir.
|
|
24
|
+
|
|
25
|
+
4. **Age 1 Oxuma Məntiqi (Keçmiş Dövr Hesabatı)**:
|
|
26
|
+
- Saatın və günün tamamında (məs: saat 08:00-da nəql dövrü bağlanarkən) axın kompüteri həmin bağlanmış dövrün yekun arxiv məlumatlarını dərhal **Age 1** yaddaş xanasına ötürür.
|
|
27
|
+
- Avtomatik hesabat oxuyucusu dəqiq olaraq Age 1 qeydiyyatlarını oxuyur və heç bir məlumat itkisinə yol vermir.
|
|
28
|
+
|
|
29
|
+
5. **Axın Kompüteri ilə Vaxt Sinxronizasiyası (AFC Time Sync)**:
|
|
30
|
+
- AFC-nin 9900 ünvanlı `Closing_Timestamp_M1` registri (`dt` tipi) vasitəsilə axın kompüterinin real zaman saatı oxunaraq ioBroker `info.afcTime` vəziyyətinə yazılır.
|
|
31
|
+
|
|
32
|
+
6. **Dinamik Formula Dəstəyi (Math Expressions)**:
|
|
33
|
+
- İstər dövri teqlər, istərsə də hesabat teqləri üçün riyazi düstur təyin edilə bilər.
|
|
34
|
+
- Sintaksis: `x` dəyişəni oxunan xam dəyəri bildirir. Məsələn:
|
|
35
|
+
- `x * 0.1`
|
|
36
|
+
- `x / 1000`
|
|
37
|
+
- `x + 273.15`
|
|
38
|
+
- `Math.round(x * 100) / 100`
|
|
39
|
+
|
|
40
|
+
7. **RFC-005 Aparat Lisenziyalaşdırma və Virtualizasiya Qoruması**:
|
|
41
|
+
- Ed25519 kriptoqrafik imza təsdiqi.
|
|
42
|
+
- WHID2 sabit ana plata (SMBIOS UUID / Baseboard serial) avadanlıq identifikasiyası.
|
|
43
|
+
- Bare-metal vs Virtual Machine (VM) vs Docker fərqləndirilməsi.
|
|
44
|
+
- Yerli şəbəkədə (LAN UDP) eyni lisenziyanın təkrar istifadəsinin aşkarlanması.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Obyektlər Strukturu / Object Structure
|
|
49
|
+
|
|
50
|
+
### 1. `info` (Diaqnostika və Status)
|
|
51
|
+
- `info.connection`: Axın kompüteri ilə aktiv rabitə statusu (true/false).
|
|
52
|
+
- `info.afcTime`: Axın kompüterindən oxunmuş canlı saat/tarix.
|
|
53
|
+
- `info.hardwareId`: Maşının unikal RFC-005 Hardware ID-si.
|
|
54
|
+
- `info.environmentType`: Mühit növü (`bare-metal`, `vm`, `docker`).
|
|
55
|
+
- `info.licenseStatus`: Lisenziyanın etibarlılığı və icazə verilən teq sayı.
|
|
56
|
+
|
|
57
|
+
### 2. Stansiya Teqləri (Dövri Sorğu)
|
|
58
|
+
Teqlər qruplarına əsasən ağacvari strukturda saxlanılır:
|
|
59
|
+
- `Meter1_Daily.*` (Sayğac 1 parametrləri: Kütləvi sərf, Həcmi sərf, Sıxlıq, Temperatur, Təzyiq və s.)
|
|
60
|
+
- `Meter2_Daily.*` (Sayğac 2 parametrləri)
|
|
61
|
+
- `Station.*` (Ümumi stansiya sərfi və təzyiqləri)
|
|
62
|
+
|
|
63
|
+
### 3. `reports` (Hesabatlar və Arxiv)
|
|
64
|
+
- `reports.setAgeNumber`: Oxunacaq arxiv yaşı (0 = Cari, 1 = Keçmiş dövr, 2..35). Defolt: `1`.
|
|
65
|
+
- `reports.setDaily`: `true` yazıldıqda dərhal Gündəlik Hesabatı oxuyur.
|
|
66
|
+
- `reports.setHourly`: `true` yazıldıqda dərhal Saatlıq Hesabatı oxuyur.
|
|
67
|
+
- `reports.setSnapshot`: `true` yazıldıqda dərhal Ani (Snapshot) Hesabatı oxuyur.
|
|
68
|
+
- `reports.setProver`: `true` yazıldıqda dərhal Prover (Kalibrasiya) Hesabatını oxuyur.
|
|
69
|
+
- `reports.daily.*`: Gündəlik hesabatın 57 parametri.
|
|
70
|
+
- `reports.hourly.*`: Saatlıq hesabatın 57 parametri.
|
|
71
|
+
- `reports.snapshot.*`: Ani hesabatın 57 parametri.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Lisenziya / License
|
|
76
|
+
|
|
77
|
+
Bu adapter **CC-BY-NC-4.0** lisenziyası altında yayılır. Müəllif: **gokturk413** (<gokturk413@gmail.com>).
|
|
78
|
+
Sənaye və kommersiya lisenziyası almaq üçün adapterin `info.hardwareId` dəyəri ilə müəllifə müraciət edin.
|
|
79
|
+
|