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.
- package/CHANGELOG.md +31 -17
- package/README.de.md +225 -0
- package/README.md +134 -187
- package/coe/coe-input.js +49 -36
- package/coe/coe-monitor.html +1 -1
- package/coe/coe-monitor.js +32 -41
- package/coe/coe-output.html +67 -28
- package/coe/coe-output.js +159 -24
- package/coe/config.js +14 -7
- package/coe/locales/de/coe-input.html +2 -2
- package/coe/locales/de/coe-input.json +8 -2
- package/coe/locales/de/coe-monitor.html +1 -2
- package/coe/locales/de/coe-monitor.json +9 -4
- package/coe/locales/de/coe-output.html +8 -2
- package/coe/locales/de/coe-output.json +11 -5
- package/coe/locales/de/config.html +3 -3
- package/coe/locales/de/config.json +1 -1
- package/coe/locales/en-US/coe-input.html +2 -2
- package/coe/locales/en-US/coe-input.json +8 -2
- package/coe/locales/en-US/coe-monitor.html +1 -2
- package/coe/locales/en-US/coe-monitor.json +9 -4
- package/coe/locales/en-US/coe-output.html +8 -2
- package/coe/locales/en-US/coe-output.json +10 -4
- package/coe/locales/en-US/config.html +3 -3
- package/coe/locales/en-US/config.json +1 -1
- package/coe/units-config.js +2 -1
- package/examples/in-out.json +56 -0
- package/examples/monitor.json +42 -0
- package/lib/coe-v1.js +152 -0
- package/lib/coe-v2.js +80 -119
- package/lib/protocol.js +19 -0
- package/lib/queueing.js +92 -137
- package/lib/units.js +7 -7
- package/lib/utils.js +71 -66
- package/package.json +17 -3
- package/__tests__/blockinfo.test.js +0 -24
- package/__tests__/conversion.test.js +0 -22
- package/__tests__/udp.test.js +0 -46
- package/lib/coe.js +0 -109
package/CHANGELOG.md
CHANGED
|
@@ -1,23 +1,37 @@
|
|
|
1
1
|
## Changelog
|
|
2
2
|
|
|
3
|
-
### Version 1.
|
|
4
|
-
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
27
|
+
- Preparations for bilingual version
|
|
28
|
+
- Output node bug fixes
|
|
29
|
+
- Enhanced documentation
|
|
16
30
|
|
|
17
31
|
### Version 0.9.0
|
|
18
|
-
-
|
|
19
|
-
- CoE
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- Shared UDP
|
|
23
|
-
-
|
|
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
|