node-red-contrib-tcp-client-server-avd 1.0.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.
@@ -0,0 +1,408 @@
1
+ # Node-RED TCP Client/Server Node (AVD)
2
+
3
+ Een flexibele Node-RED node die functioneert als TCP client en/of TCP server, met uitgebreide configuratiemogelijkheden en foutafhandeling.
4
+
5
+ ## Installatie
6
+
7
+ ### Via Node-RED Manage Palette (aanbevolen voor lokale installatie)
8
+
9
+ 1. Open de Node-RED webinterface
10
+ 2. Ga naar **Menu** → **Manage palette**
11
+ 3. Klik op de **Install** tab
12
+ 4. Klik op **install from** of gebruik het upload veld
13
+ 5. Geef het volledige pad op naar het `.tgz` bestand:
14
+ ```
15
+ C:\Users\Arie\Desktop\NodeRedTCP\node-red-contrib-tcp-client-server-avd-1.0.0.tgz
16
+ ```
17
+ Of upload het bestand direct
18
+ 6. Klik op **Install**
19
+ 7. Herstart Node-RED (indien nodig)
20
+
21
+ ### Via npm (aanbevolen voor gepubliceerde packages)
22
+
23
+ ```bash
24
+ npm install node-red-contrib-tcp-client-server-avd
25
+ ```
26
+
27
+ ### Handmatige installatie
28
+
29
+ 1. Clone of download dit project
30
+ 2. Kopieer de map naar je Node-RED `nodes` directory (meestal `~/.node-red/nodes/`)
31
+ 3. Installeer dependencies:
32
+ ```bash
33
+ cd ~/.node-red/nodes/node-red-contrib-tcp-client-server-avd
34
+ npm install
35
+ ```
36
+ 4. Herstart Node-RED
37
+
38
+ ## Functionaliteiten
39
+
40
+ ### TCP Client Mode
41
+ - Automatisch verbinden bij flow start (optioneel)
42
+ - Handmatig verbinden/verbreken via messages
43
+ - Automatische herconnectie met configureerbare instellingen
44
+ - Ondersteuning voor verschillende dataformaten (String, Buffer, JSON, Hex)
45
+ - Message delimiter ondersteuning voor message framing
46
+ - Keep-alive optie
47
+
48
+ ### TCP Server Mode
49
+ - Automatisch starten bij flow start (optioneel)
50
+ - Luisteren op geconfigureerde poort
51
+ - Meerdere gelijktijdige client verbindingen
52
+ - Unieke client identificatie
53
+ - Broadcast naar alle clients of verzenden naar specifieke client
54
+ - Zelfde dataformaat ondersteuning als client mode
55
+
56
+ ### Gecombineerde Mode
57
+ - Gebruik zowel client als server functionaliteit in één node
58
+ - Onafhankelijke configuratie voor beide modi
59
+
60
+ ## Gebruik
61
+
62
+ ### Basis Configuratie
63
+
64
+ 1. Sleep de node naar je flow
65
+ 2. Dubbelklik op de node om te configureren
66
+ 3. Selecteer de gewenste mode: TCP Client, TCP Server, of TCP Client & Server
67
+ 4. Configureer de instellingen volgens je behoeften
68
+
69
+ ### Client Mode - Verbinden
70
+
71
+ **Automatisch verbinden:**
72
+ - Zet "Auto Verbinden" aan
73
+ - De client verbindt automatisch bij flow start
74
+
75
+ **Handmatig verbinden:**
76
+ - Zet "Auto Verbinden" uit
77
+ - Stuur een message met `topic: "connect"` naar de node
78
+
79
+ **Verbinden verbreken:**
80
+ - Stuur een message met `topic: "disconnect"` naar de node
81
+
82
+ ### Server Mode - Server Beheer
83
+
84
+ **Automatisch starten:**
85
+ - Zet "Auto Start" aan
86
+ - De server start automatisch bij flow start
87
+
88
+ **Handmatig starten:**
89
+ - Zet "Auto Start" uit
90
+ - Stuur een message met `topic: "start"` naar de node
91
+
92
+ **Server stoppen:**
93
+ - Stuur een message met `topic: "stop"` naar de node
94
+
95
+ ## Message Formats
96
+
97
+ ### Input Messages (naar Node)
98
+
99
+ #### Client Mode
100
+
101
+ **Verbinden:**
102
+ ```javascript
103
+ { topic: "connect" }
104
+ ```
105
+
106
+ **Verbreken:**
107
+ ```javascript
108
+ { topic: "disconnect" }
109
+ ```
110
+
111
+ **Data verzenden:**
112
+ ```javascript
113
+ {
114
+ topic: "send",
115
+ payload: "data om te verzenden" // string, buffer, of object
116
+ }
117
+ ```
118
+
119
+ Als er geen topic is opgegeven, wordt de payload automatisch verzonden.
120
+
121
+ #### Server Mode
122
+
123
+ **Server starten:**
124
+ ```javascript
125
+ { topic: "start" }
126
+ ```
127
+
128
+ **Server stoppen:**
129
+ ```javascript
130
+ { topic: "stop" }
131
+ ```
132
+
133
+ **Data verzenden naar specifieke client:**
134
+ ```javascript
135
+ {
136
+ topic: "send",
137
+ clientId: "client-unique-id",
138
+ payload: "data om te verzenden"
139
+ }
140
+ ```
141
+
142
+ **Data verzenden naar alle clients (broadcast):**
143
+ ```javascript
144
+ {
145
+ topic: "broadcast",
146
+ payload: "data om te verzenden"
147
+ }
148
+ ```
149
+
150
+ ### Output Messages (van Node)
151
+
152
+ #### Client Mode
153
+
154
+ **Verbindingsstatus:**
155
+ ```javascript
156
+ {
157
+ topic: "status",
158
+ payload: "connected" | "disconnected" | "error",
159
+ status: "connected" | "disconnected" | "error",
160
+ error: "error message (indien van toepassing)"
161
+ }
162
+ ```
163
+
164
+ **Ontvangen data:**
165
+ ```javascript
166
+ {
167
+ topic: "data",
168
+ payload: "ontvangen data",
169
+ timestamp: "ISO timestamp"
170
+ }
171
+ ```
172
+
173
+ #### Server Mode
174
+
175
+ **Server status:**
176
+ ```javascript
177
+ {
178
+ topic: "status",
179
+ payload: "listening" | "stopped" | "error",
180
+ port: 1234,
181
+ error: "error message (indien van toepassing)"
182
+ }
183
+ ```
184
+
185
+ **Client verbinding:**
186
+ ```javascript
187
+ {
188
+ topic: "client/connected",
189
+ clientId: "unique-client-id",
190
+ remoteAddress: "client-ip",
191
+ remotePort: "client-port"
192
+ }
193
+ ```
194
+
195
+ **Client verbreking:**
196
+ ```javascript
197
+ {
198
+ topic: "client/disconnected",
199
+ clientId: "unique-client-id"
200
+ }
201
+ ```
202
+
203
+ **Ontvangen data:**
204
+ ```javascript
205
+ {
206
+ topic: "data",
207
+ payload: "ontvangen data",
208
+ clientId: "unique-client-id",
209
+ remoteAddress: "client-ip",
210
+ remotePort: "client-port",
211
+ timestamp: "ISO timestamp"
212
+ }
213
+ ```
214
+
215
+ ## Configuratie Opties
216
+
217
+ ### Client Mode
218
+
219
+ - **Host**: Server hostname of IP adres (standaard: "localhost")
220
+ - **Port**: Server poort nummer (standaard: 8080)
221
+ - **IP Versie**: IPv4 of IPv6 (standaard: IPv4)
222
+ - **Auto Verbinden**: Automatisch verbinden bij flow start (standaard: true)
223
+ - **Herconnectie**: Automatische herconnectie bij verbroken verbinding (standaard: true)
224
+ - **Reconnect Interval**: Tijd tussen reconnect pogingen in seconden (standaard: 5)
225
+ - **Max Reconnect Pogingen**: Maximum aantal reconnect pogingen (0 = oneindig, standaard: 0)
226
+ - **Connection Timeout**: Timeout voor connectiepogingen in seconden (standaard: 10)
227
+ - **Input Format**: Data formaat voor verzenden (String, Buffer, JSON, Hex String)
228
+ - **Output Format**: Data formaat voor ontvangen (String, Buffer, JSON, Hex String)
229
+ - **Encoding**: Character encoding voor String format (UTF-8, ASCII, Latin1, Base64)
230
+ - **Message Delimiter**: Optionele delimiter voor message framing (bijv. `\n` of `\r\n`)
231
+ - **Keep-Alive**: TCP keep-alive optie (standaard: false)
232
+
233
+ ### Server Mode
234
+
235
+ - **Listen Port**: Poort waarop de server luistert (standaard: 8080)
236
+ - **Bind Address**: IP adres om aan te binden (standaard: "0.0.0.0" = alle interfaces)
237
+ - **IP Versie**: IPv4 of IPv6 (standaard: IPv4)
238
+ - **Auto Start**: Automatisch starten bij flow start (standaard: true)
239
+ - **Max Connections**: Maximum aantal gelijktijdige verbindingen (0 = onbeperkt, standaard: 0)
240
+ - **Connection Timeout**: Timeout voor client verbindingen in seconden (standaard: 600)
241
+ - **Input Format**: Data formaat voor verzenden (String, Buffer, JSON, Hex String)
242
+ - **Output Format**: Data formaat voor ontvangen (String, Buffer, JSON, Hex String)
243
+ - **Encoding**: Character encoding voor String format (UTF-8, ASCII, Latin1, Base64)
244
+ - **Message Delimiter**: Optionele delimiter voor message framing (bijv. `\n` of `\r\n`)
245
+ - **Keep-Alive**: TCP keep-alive optie (standaard: false)
246
+
247
+ ## Status Weergave
248
+
249
+ De node toont verschillende status indicatoren:
250
+
251
+ ### Client Mode
252
+ - **Groen (verbonden)**: Succesvol verbonden met server
253
+ - **Rood (fout)**: Verbindingsfout of verbreken
254
+ - **Grijs (niet verbonden)**: Niet verbonden
255
+ - **Geel (verbinden)**: Verbinding wordt tot stand gebracht
256
+
257
+ ### Server Mode
258
+ - **Groen (luisterend)**: Server luistert actief op poort
259
+ - **Rood (gestopt/fout)**: Server is gestopt of fout opgetreden
260
+ - **Blauw (actief)**: Server actief met X verbindingen
261
+
262
+ ## Voorbeelden
263
+
264
+ ### Voorbeeld 1: Basis TCP Client
265
+
266
+ Een eenvoudige TCP client die verbindt met een server en data verzendt/ontvangt.
267
+
268
+ **Flow:**
269
+ ```
270
+ [Inject] → [TCP Client Node] → [Debug]
271
+ ```
272
+
273
+ **Configuratie:**
274
+ - Mode: TCP Client
275
+ - Host: localhost
276
+ - Port: 8080
277
+ - Auto Verbinden: aan
278
+
279
+ ### Voorbeeld 2: Basis TCP Server
280
+
281
+ Een TCP server die luistert op poort 8080 en data ontvangt van clients.
282
+
283
+ **Flow:**
284
+ ```
285
+ [TCP Server Node] → [Debug]
286
+ ```
287
+
288
+ **Configuratie:**
289
+ - Mode: TCP Server
290
+ - Listen Port: 8080
291
+ - Auto Start: aan
292
+
293
+ ### Voorbeeld 3: Client met Reconnect
294
+
295
+ Een TCP client met automatische herconnectie.
296
+
297
+ **Configuratie:**
298
+ - Mode: TCP Client
299
+ - Host: 192.168.1.100
300
+ - Port: 8080
301
+ - Auto Verbinden: aan
302
+ - Herconnectie: aan
303
+ - Reconnect Interval: 5 seconden
304
+ - Max Reconnect Pogingen: 0 (oneindig)
305
+
306
+ ### Voorbeeld 4: Server met Meerdere Clients
307
+
308
+ Een TCP server die data ontvangt van meerdere clients en responses terugstuurt.
309
+
310
+ **Flow:**
311
+ ```
312
+ [TCP Server Node] → [Function Node] → [TCP Server Node]
313
+ ```
314
+
315
+ **Function Node code:**
316
+ ```javascript
317
+ // Echo de data terug naar dezelfde client
318
+ msg.topic = "send";
319
+ msg.payload = "Echo: " + msg.payload;
320
+ return msg;
321
+ ```
322
+
323
+ ## Troubleshooting
324
+
325
+ ### Client kan niet verbinden
326
+
327
+ 1. Controleer of de server draait en bereikbaar is
328
+ 2. Controleer firewall instellingen
329
+ 3. Controleer host en port configuratie
330
+ 4. Bekijk de status van de node voor foutmeldingen
331
+
332
+ ### Server kan niet starten
333
+
334
+ 1. Controleer of de poort niet al in gebruik is
335
+ 2. Controleer of je rechten hebt om op de poort te luisteren (voor poorten < 1024 op Linux/Mac)
336
+ 3. Controleer firewall instellingen
337
+ 4. Bekijk de status van de node voor foutmeldingen
338
+
339
+ ### Data wordt niet correct ontvangen
340
+
341
+ 1. Controleer de Output Format configuratie
342
+ 2. Controleer de Encoding instelling
343
+ 3. Voor message framing, gebruik de Message Delimiter optie
344
+ 4. Voor binary data, gebruik Buffer format
345
+
346
+ ## Bekende Beperkingen
347
+
348
+ - TLS/SSL ondersteuning is nog niet geïmplementeerd (toekomstige versie)
349
+ - UDP protocol wordt niet ondersteund (alleen TCP)
350
+ - Rate limiting is nog niet beschikbaar
351
+
352
+ ## Licentie
353
+
354
+ MIT
355
+
356
+ ## Versie Geschiedenis
357
+
358
+ ### Versie 1.0.0
359
+ - Initiele release
360
+ - TCP Client functionaliteit
361
+ - TCP Server functionaliteit
362
+ - Gecombineerde mode
363
+ - String, Buffer, JSON, en Hex data formaten
364
+ - Automatische herconnectie
365
+ - Message delimiter ondersteuning
366
+ - IPv4 en IPv6 ondersteuning
367
+ - Keep-alive optie
368
+ - Meerdere client verbindingen (server mode)
369
+ - Package structuur geoptimaliseerd:
370
+ - Bestandsnamen: `tcp-client-server-avd.js/html`
371
+ - package.json bijgewerkt met `main` en `files` velden
372
+ - Node configuratie vereenvoudigd (automatische HTML detectie)
373
+ - Distributie via `npm pack` voor correcte package structuur
374
+ - Installatie via Node-RED Manage Palette ondersteund
375
+
376
+ ## Package Details
377
+
378
+ ### Package Structuur
379
+ ```
380
+ node-red-contrib-tcp-client-server-avd/
381
+ ├── package.json
382
+ ├── README.md
383
+ ├── SPECIFICATIE.md
384
+ └── nodes/
385
+ ├── tcp-client-server-avd.js
386
+ └── tcp-client-server-avd.html
387
+ ```
388
+
389
+ ### Node Type
390
+ - **Node type naam**: `tcp-client-server-avd`
391
+ - **Package naam**: `node-red-contrib-tcp-client-server-avd`
392
+ - **Versie**: 1.0.0
393
+
394
+ ### Distributie
395
+ Het package wordt gedistribueerd als `.tgz` bestand dat kan worden geïnstalleerd via:
396
+ - Node-RED Manage Palette (upload of pad)
397
+ - npm (na publicatie)
398
+ - Handmatige installatie
399
+
400
+ Om een nieuw distributie-bestand te maken:
401
+ ```bash
402
+ cd NodeRedTCP
403
+ npm pack
404
+ ```
405
+
406
+ ## Ondersteuning
407
+
408
+ Voor vragen, problemen of suggesties, open een issue op de GitHub repository.