node-red-contrib-ta-cmi-coe 1.0.0 → 1.1.1

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +31 -17
  2. package/README.de.md +225 -0
  3. package/README.md +134 -187
  4. package/coe/coe-input.js +49 -36
  5. package/coe/coe-monitor.html +1 -1
  6. package/coe/coe-monitor.js +32 -41
  7. package/coe/coe-output.html +67 -28
  8. package/coe/coe-output.js +159 -24
  9. package/coe/config.js +14 -7
  10. package/coe/locales/de/coe-input.html +2 -2
  11. package/coe/locales/de/coe-input.json +8 -2
  12. package/coe/locales/de/coe-monitor.html +1 -2
  13. package/coe/locales/de/coe-monitor.json +9 -4
  14. package/coe/locales/de/coe-output.html +8 -2
  15. package/coe/locales/de/coe-output.json +11 -5
  16. package/coe/locales/de/config.html +3 -3
  17. package/coe/locales/de/config.json +1 -1
  18. package/coe/locales/en-US/coe-input.html +2 -2
  19. package/coe/locales/en-US/coe-input.json +8 -2
  20. package/coe/locales/en-US/coe-monitor.html +1 -2
  21. package/coe/locales/en-US/coe-monitor.json +9 -4
  22. package/coe/locales/en-US/coe-output.html +8 -2
  23. package/coe/locales/en-US/coe-output.json +10 -4
  24. package/coe/locales/en-US/config.html +3 -3
  25. package/coe/locales/en-US/config.json +1 -1
  26. package/coe/units-config.js +2 -1
  27. package/examples/in-out.json +56 -0
  28. package/examples/monitor.json +42 -0
  29. package/lib/coe-v1.js +152 -0
  30. package/lib/coe-v2.js +80 -119
  31. package/lib/protocol.js +19 -0
  32. package/lib/queueing.js +92 -137
  33. package/lib/units.js +7 -7
  34. package/lib/utils.js +71 -66
  35. package/package.json +17 -3
  36. package/__tests__/blockinfo.test.js +0 -24
  37. package/__tests__/conversion.test.js +0 -22
  38. package/__tests__/udp.test.js +0 -46
  39. package/lib/coe.js +0 -109
package/CHANGELOG.md CHANGED
@@ -1,23 +1,37 @@
1
1
  ## Changelog
2
2
 
3
- ### Version 1.0.0 (Erst-Release)
4
- - Added Support for CoE Version 2.0
5
- - Timeout für Input Nodes
6
- - Konfiguration Adresse UDP-Listener
7
- - Ergänzungen Dokumentation
8
- - Einstellung des Block Output Nodes
9
- - Zweisprachige Einheiten
10
- - Bug-Fixes
3
+ ### Version 1.1.1
4
+ - Fix wrong V2 output number
5
+
6
+ ### Version 1.1.0
7
+ - Change to variable message size (similar to CoE V2 approach)
8
+ - Added transmission conditions (output node)
9
+
10
+ ### Version 1.0.2
11
+ - Added unit ppb
12
+ - Bug fixes
13
+
14
+ ### Version 1.0.1
15
+ - Example flow
16
+
17
+ ### Version 1.0.0 (Initial Release)
18
+ - Added support for CoE Version 2.0
19
+ - Input node timeout
20
+ - UDP listener address configuration
21
+ - Enhanced documentation
22
+ - Block output node settings
23
+ - Bilingual units
24
+ - Bug fixes
11
25
 
12
26
  ### Version 0.9.1
13
- - Vorbereitungen für zweisprachige Version
14
- - Fehlerbehebung Output-Nodes
15
- - Ergänzungen Dokumentation
27
+ - Preparations for bilingual version
28
+ - Output node bug fixes
29
+ - Enhanced documentation
16
30
 
17
31
  ### Version 0.9.0
18
- - Initiale Veröffentlichung
19
- - CoE Input, Output und Block Output Nodes
20
- - Automatische Unit-Konvertierung
21
- - Unterstützung für alle TA Messgrößen
22
- - Shared UDP Socket
23
- - Umfassende Dokumentation
32
+ - Initial release
33
+ - CoE input, output, and block output nodes
34
+ - Automatic unit conversion
35
+ - Support for all TA measurement variables
36
+ - Shared UDP socket
37
+ - ​​Comprehensive documentation
package/README.de.md ADDED
@@ -0,0 +1,225 @@
1
+ # node-red-contrib-ta-cmi-coe
2
+
3
+ [🇬🇧 README English Version](README.md)
4
+
5
+ [![Platform][platform-shield]][platform-link] [![Release][release-shield]][release-link] [![Downloads][downloads-shield]][downloads-link] [![CommitDate][date-shield]][date-link] [![License][license-shield]][license-link] [![Languages][languages-shield]][languages-link]
6
+
7
+ Node-RED Bibliothek zum Lesen und Schreiben von Werten an Technische Alternative CMI über CAN over Ethernet (CoE).
8
+
9
+ ## Funktionsumfang
10
+
11
+ - **CoE Input Node**: Empfang von analogen und digitalen Einzelwerten von der CMI
12
+ - **CoE Output Node**: Senden einzelner Werte an das CMI / Regler
13
+ - **CoE Monitor**: Empfängt und überwacht Pakete von allen Quellen
14
+ - Unterstützung für CoE-Version 1 & 2
15
+ - Automatische Konvertierung analoger Werte basierend auf Unit ID
16
+ - Unterstützung für von TA definierte Messgrößen
17
+ - Einstellung von Sendebedingung und -intervall
18
+
19
+ ---
20
+
21
+ [![BuyMeCoffee][buymecoffee-shield]][buymecoffee-link]
22
+
23
+ ---
24
+
25
+ ## Installation
26
+
27
+ ### Über Node-RED Palette Manager (empfohlen)
28
+
29
+ 1. Öffne Node-RED
30
+ 2. Menü → Manage palette → Install
31
+ 3. Suche nach `node-red-contrib-ta-cmi-coe`
32
+ 4. Installiere das Paket
33
+
34
+ ### Manuelle Installation
35
+
36
+ ```bash
37
+ cd ~/.node-red
38
+ npm install node-red-contrib-ta-cmi-coe
39
+ ```
40
+
41
+ ### Lokale Entwicklungsumgebung
42
+
43
+ ```bash
44
+ cd ~/.node-red
45
+ git clone https://github.com/mayflo/node-red-contrib-ta-cmi-coe.git
46
+ cd node-red-contrib-ta-cmi-coe
47
+ npm link
48
+ cd ~/.node-red
49
+ npm link node-red-contrib-ta-cmi-coe
50
+ ```
51
+
52
+ Starte Node-RED neu.
53
+
54
+ ## Voraussetzungen
55
+
56
+ - CMI von Technische Alternative mit Firmware 1.39.1 oder höher
57
+ - Die verwendete CoE-Version wird auf dem CMI konfiguriert (Einstellungen > CAN > CoE).
58
+ - Für Empfang: CoE-Ausgänge müssen auf der CMI konfiguriert werden (Einstellungen > Ausgänge > CoE).
59
+ - Für Senden: CAN-Eingänge müssen auf dem Regler konfiguriert werden.
60
+ - Für den Empfang von Nachrichten benötigt die verwendeten CMIs eine fest eingestellte IP-Addresse
61
+ - Die Kommunikation erfolgt über UDP-Ports, welche auf dem Node-RED-Host geöffnet werden müssen (CoE V1 Port 5441 / CoE V2 Port 5442)
62
+
63
+ ## Unterstützte Geräte
64
+
65
+ Die Bibliothek wurde für UVR610 entwickelt und getestet, funktioniert aber grundsätzlich mit allen Geräten, die über den CAN-Bus der CMI verbunden sind:
66
+
67
+ - UVR16x2
68
+ - UVR1611
69
+ - UVR61-3
70
+ - X2 Regler
71
+ - Andere CAN-Bus Geräte von Technische Alternative
72
+
73
+ ## Schnellstart
74
+
75
+ ### 1. CMI Konfigurations-Node erstellen
76
+
77
+ Erstelle zunächst eine CMI Konfiguration:
78
+ - Öffne einen beliebigen Node zur Bearbeitung
79
+ - Bei "CMI Konfig" auf Plus klicken → "Neuen Knoten hinzufügen..."
80
+ - **IP-Bereich**: IP-Adressbereich des UDP-Ports (0.0.0.0 = alle Interfaces, 127.0.0.1 = lokales Netzwerk)
81
+ - **CMI Adresse**: (Feste) IP-Adresse des CMI
82
+ - **CoE Version**: CoE V1/V2 (siehe CMI Einstellungen → CAN)
83
+
84
+ ### 2. CMI konfigurieren
85
+
86
+ #### Für Empfang vom CMI (CoE Input):
87
+ Auf der CMI unter **Einstellungen → Ausgänge → CoE**:
88
+ - **Eingang**: CAN-Bus Eingang (z.B. CAN 1)
89
+ - **IP**: IP-Adresse von Node-RED
90
+ - **Knoten**: Knoten-Nummer des Input Nodes
91
+ - **Netzwerkausgang**: Nummer des Ausgangs (1-32)
92
+ - **Sendebedingungen**: Unterdrückung kleiner & häufiger Änderungen, Intervall für wiederholtes Senden (nach Bedarf)
93
+
94
+ #### Für Senden an CMI (CoE Output):
95
+ Auf dem Regler: CAN-Eingang konfigurieren
96
+ - **Knoten**: Wert aus "Node Number" des Output Nodes
97
+ - **Ausgangsnummer**: Nummer des Ausgangs (1-32)
98
+ - **Messgröße**: "Automatisch" für Unit von Node-RED
99
+
100
+ ## Node Typen
101
+
102
+ ### CoE Input Node
103
+
104
+ Empfängt Werte von der CMI.
105
+
106
+ **Output Message:**
107
+ ```javascript
108
+ {
109
+ payload: 22.5, // Der Wert
110
+ topic: "coe/10/analog/1", // Format: coe/{node}/{type}/{output}
111
+ coe: {
112
+ timestamp: 2026-01-08T // Eingangszeit
113
+ sourceIP: "192.168.1.100", // IP der CMI
114
+ nodeNumber: 10, // CAN Knoten-Nummer
115
+ dataType: "analog", // Datentyp
116
+ blockNumber: 1, // CoE Block-Nummer (nur V1)
117
+ outputNumber: 1, // Netzwerkausgang
118
+ state: 22.5, // Wert oder digitaler Zustand
119
+ unit: 1, // Unit ID (z.B. 1 = °C)
120
+ unitName: "Temperatur °C", // Unit Name
121
+ unitSymbol: "°C°" // Unit Symbol
122
+ }
123
+ }
124
+ ```
125
+
126
+ ### CoE Output Node
127
+
128
+ Sendet einzelne Werte an die CMI.
129
+
130
+ **Input Message:**
131
+ ```javascript
132
+ // Einfach:
133
+ msg.payload = 22.5;
134
+
135
+ // Mit eigener Unit:
136
+ msg.payload = 22.5;
137
+ msg.coe = { unit: 1 }; // Überschreibt Config
138
+ ```
139
+
140
+ ## Troubleshooting
141
+
142
+ ### Keine Daten empfangen
143
+
144
+ 1. **CMI CoE-Ausgänge prüfen**: Prüfe ob IP und Port korrekt sind
145
+ 2. **Lokale IP**: Den max. Empfangsbereich mit Lokale IP = 0.0.0.0 (alle) probieren (insbesondere für Docker-Umgebungen)
146
+ 3. **Firewall**: Prüfe ob in der Firewall Port 5441/UDP (CoE V1) bzw. 5442/UDP (CoE V2) geöffnet sind
147
+ 4. **Node Number**: Prüfe ob mit CMI-Konfiguration übereinstimmend
148
+ 5. **Debug aktivieren**: "Receive All" aktivieren und Debug-Output prüfen
149
+
150
+ ### Senden funktioniert nicht
151
+
152
+ 1. **CMI erreichbar?** Ping zur CMI IP
153
+ 2. **CAN-Eingang auf Regler**: Prüfe ob Knoten-Nr und Ausgangsnr korrekt sind
154
+ 3. **Timeout auf Regler?** "Sende Ausgänge alle" Intervall nutzen
155
+
156
+ ### Mehrere CMIs
157
+
158
+ - Es müssen unterschiedliche Knoten-Nummern verwendet werden.
159
+
160
+ ### Werte falsch
161
+
162
+ - **Zu große Werte**: CAN-Bus V1 ist limitiert auf ±32.767 (dimensionslos)
163
+ - **Falsche Unit**: Manche Einheiten (Arbeitszahl, Euro) haben Einschränkungen
164
+ - **Nachkommastellen**: Prüfe ob korrekte Einheiten-ID verwendet wird
165
+
166
+ ## Bekannte Einschränkungen
167
+
168
+ 1. **Max. Wertbereich**: CAN-Bus Version 1 ist limitiert auf ±32.767 (V2 für größeren Wertebereich benutzen)
169
+ 2. **Keine Quittierung**: CoE hat keine Bestätigung (Fire-and-forget)
170
+ 3. **Das CMI funktioniert als Gateway**: Werte werden zwar vom CMI über CoE übertragen, können aber nicht direkt an CMI gesendet werden. Die Werte werden vom CMI an den CAN-Bus weitergeleitet und von den Reglern ausgelesen.
171
+
172
+ ## Erweiterte Nutzung
173
+
174
+ ### Custom Unit Conversion
175
+
176
+ ```javascript
177
+ // In Function Node vor Output:
178
+ const rawValue = msg.payload * 100; // 2 Nachkommastellen
179
+ msg.payload = rawValue;
180
+ msg.coe = { unit: 0 }; // Dimensionslos
181
+ return msg;
182
+ ```
183
+
184
+ ## Lizenz
185
+
186
+ Veröffentlicht unter der [Apache 2.0 Lizenz](LICENSE)
187
+
188
+ - ✅ Private und gewerbliche Nutzung
189
+ - ⚠️ Keine Haftung für Schäden durch Nutzung
190
+
191
+ ## Credits
192
+
193
+ Basiert auf dem Protokoll-Verständnis und der Dokumentation von:
194
+ - [SymconJoTTACoE](https://github.com/jotata/SymconJoTTACoE/) von jotata
195
+ - [Ta-CoE](https://gitlab.com/DeerMaximum/ta-coe) von DeerMaximum
196
+
197
+ ## Support
198
+
199
+ - **Issues**: [GitHub Issue Tracker](https://github.com/mayflo/node-red-contrib-ta-cmi-coe/issues)
200
+ - **Dokumentation**: Siehe README
201
+
202
+ ## Author
203
+
204
+ [![Author][author-shield]][author-link]
205
+
206
+ ---
207
+
208
+ **Hinweis**: Diese Bibliothek wurde in der Freizeit entwickelt. Support erfolgt nach Verfügbarkeit. 😊
209
+
210
+ [platform-link]: https://nodered.org
211
+ [platform-shield]: https://img.shields.io/badge/platform-Node--RED-red?style=flat
212
+ [release-link]: https://www.npmjs.com/package/node-red-contrib-ta-cmi-coe
213
+ [release-shield]: https://img.shields.io/npm/v/node-red-contrib-ta-cmi-coe?style=flat
214
+ [date-link]: https://github.com/mayflo/node-red-contrib-ta-cmi-coe/releases
215
+ [date-shield]: https://img.shields.io/github/release-date/mayflo/node-red-contrib-ta-cmi-coe?style=flat
216
+ [downloads-link]: https://www.npmjs.com/package/node-red-contrib-ta-cmi-coe
217
+ [downloads-shield]: https://img.shields.io/npm/d18m/node-red-contrib-ta-cmi-coe?style=flat
218
+ [license-link]: https://github.com/mayflo/node-red-contrib-ta-cmi-coe/blob/main/LICENSE
219
+ [license-shield]: https://img.shields.io/badge/license-Apache%202.0-blue?style=flat?style=flat
220
+ [languages-link]: https://github.com/mayflo/node-red-contrib-ta-cmi-coe
221
+ [languages-shield]: https://img.shields.io/github/languages/count/mayflo/node-red-contrib-ta-cmi-coe?style=flat
222
+ [author-link]: https://github.com/mayflo
223
+ [author-shield]: https://img.shields.io/badge/author-mayflo-orange?style=flat&logo=github
224
+ [buymecoffee-link]: https://www.buymeacoffee.com/mayflo
225
+ [buymecoffee-shield]: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png