iobroker.ebus 3.6.10 → 3.8.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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2017-2025 René G. <info@rg-engineering.eu>
3
+ Copyright (c) 2017-2026 René G. <info@rg-engineering.eu>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -76,6 +76,14 @@ in /opt/iobroker/node_modules/iobroker.ebus/lib/scripts you can find a scripts t
76
76
  Placeholder for the next version (at the beginning of the line):
77
77
  ### **WORK IN PROGRESS**
78
78
  -->
79
+ ### 3.8.0 (2026-03-17)
80
+ * (René): avoid exception, reported by sentry
81
+ * (René) update dependencies + changes based on adapter checker
82
+ * (René) see issue #497: support of ebusd 26.1
83
+
84
+ ### 3.7.0 (2025-11-02)
85
+ * (René) issue #469: telnet connection overworked, promise-socket removed
86
+
79
87
  ### 3.6.10 (2025-10-26)
80
88
  * (René) sentry bug fix
81
89
 
@@ -283,7 +291,7 @@ in /opt/iobroker/node_modules/iobroker.ebus/lib/scripts you can find a scripts t
283
291
  ## License
284
292
  MIT License
285
293
 
286
- Copyright (c) 2017-2025 René G. <info@rg-engineering.eu>
294
+ Copyright (c) 2017-2026 René G. <info@rg-engineering.eu>
287
295
 
288
296
  Permission is hereby granted, free of charge, to any person obtaining a copy
289
297
  of this software and associated documentation files (the "Software"), to deal
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "ebus",
4
- "version": "3.6.10",
4
+ "version": "3.8.0",
5
5
  "news": {
6
+ "3.8.0": {
7
+ "en": ": avoid exception, reported by sentry\nupdate dependencies + changes based on adapter checker\nsee issue #497: support of ebusd 26.1",
8
+ "de": ": vermeidung von ausnahmen, von der sendung gemeldet\naktualisierung abhängigkeiten + änderungen basierend auf adapter-checker\nsiehe ausgabe #497: unterstützung von ebusd 26.1",
9
+ "ru": "избегайте исключений, о которых сообщает часовой\nзависимости обновления + изменения на основе проверки адаптера\nсм. выпуск #497: поддержка ebusd 26.1",
10
+ "pt": ": evitar exceção, reportada por sentinela\natualizar dependências + alterações com base no verificador de adaptadores\nver número 497: apoio do ebusd 26.1",
11
+ "nl": ": uitzondering vermijden, gemeld door de wachtdienst\nupdate afhankelijkheden + wijzigingen op basis van adaptercontrole\nzie nummer #497: ondersteuning van ebusd 26.1",
12
+ "fr": ": éviter l'exception, rapportée par sentinelle\nmettre à jour les dépendances + les changements basés sur le vérificateur d'adaptateur\nvoir numéro 497: soutien de l'ebusd 26.1",
13
+ "it": ": evitare eccezioni, riportate dalla sentinella\naggiornamento dipendenze + modifiche in base all'adattatore checker\nvedi numero #497: supporto di ebusd 26.1",
14
+ "es": ": evitar la excepción, reportada por centinela\ndependencias de actualización + cambios basados en el control de adaptador\nver número #497: soporte de ebusd 26.1",
15
+ "pl": ": uniknąć wyjątku, zgłaszane przez wartownika\naktualizacja zależności + zmiany w oparciu o sprawdzacz adaptera\nzob. numer # 497: wsparcie ebusd 26.1",
16
+ "uk": ": уникнути винятків, повідомляється відправником\nоновлення залежності + зміни на основі перевірки адаптера\nпереглянути номер #497: підтримка ebusd 26.1",
17
+ "zh-cn": ":避免例外,由哨兵报告\n根据适配器检查器更新依赖性+变化\n见问题497:支持ebusd 26.1"
18
+ },
19
+ "3.7.0": {
20
+ "en": "issue #469: telnet connection overworked, promise-socket removed",
21
+ "de": "ausgabe #469: telnet-verbindung überbearbeitet, versprechen-socket entfernt",
22
+ "ru": "проблема no 469: перегруженное соединение с сетью telnet, удаленное сокет-обещание",
23
+ "pt": "problema #469: conexão telnet overworked, promessa-socket removido",
24
+ "nl": "nummer #469: telnetverbinding overwerkt, belofte-socket verwijderd",
25
+ "fr": "numéro 469: connexion telnet surchargée, promesse-socket supprimée",
26
+ "it": "numero #469: connessione telnet overworked, promessa-socket rimosso",
27
+ "es": "cuestión #469: conexión de telnet superada, promesa-socket eliminado",
28
+ "pl": "numer # 469: przepracowane połączenie telnet, usunięte gniazdo",
29
+ "uk": "problem #469: перероблено зв'язку телнет, вилучено обіцянку",
30
+ "zh-cn": "第469期: 电话网连接超负荷工作, 承诺口袋被移除"
31
+ },
6
32
  "3.6.10": {
7
33
  "en": "sentry bug fix",
8
34
  "de": "fehler beheben",
@@ -67,32 +93,6 @@
67
93
  "pl": "zobacz numer # 430: błąd naprawić",
68
94
  "uk": "переглянути проблему #430: виправлення помилок",
69
95
  "zh-cn": "参见第430期: 错误修正"
70
- },
71
- "3.6.3": {
72
- "en": "get version info for ebusd from github if locally not available\nupdate dependencies\nnew testing",
73
- "de": "versionsinformationen für ebusd von github erhalten, wenn lokal nicht verfügbar\naktualisierung der abhängigkeiten\nneue tests",
74
- "ru": "получить информацию о версии для вытеснения из github, если локально недоступно\nобновление зависимостей\nновые испытания",
75
- "pt": "obter informações de versão para o ebusd do github se não estiver disponível localmente\natualizar dependências\nnovos testes",
76
- "nl": "krijgen versie-informatie voor ebusd van github als lokaal niet beschikbaar\nafhankelijkheden bijwerken\nnieuwe tests",
77
- "fr": "obtenir des informations de version pour ebusd de github si localement pas disponible\nmettre à jour les dépendances\nnouveaux essais",
78
- "it": "ottenere informazioni sulla versione per ebusd da github se localmente non disponibile\naggiornamento dipendenze\nnuovi test",
79
- "es": "obtener información de la versión para ebusd de github si localmente no disponible\ndependencias de actualización\nnuevas pruebas",
80
- "pl": "uzyskać informacje o wersji dla ebusd z github, jeśli lokalnie nie jest dostępny\naktualizacji zależności\nnowe badania",
81
- "uk": "отримати інформацію про версію для ebusd від github, якщо локально не доступний\nоновлення залежності\nновий тест",
82
- "zh-cn": "如果本地不可用, 从 github 获取 ebusd 的版本信息\n更新依赖关系\n新测试"
83
- },
84
- "3.6.2": {
85
- "en": "(Galileo53) #419 avoid Warning and error when history list is empty",
86
- "de": "(Galileo53) #419 vermeiden Warnung und Fehler bei leerer Geschichtsliste",
87
- "ru": "(Galileo53) #419 Избегайте Предупреждение и ошибка, когда список истории пуст",
88
- "pt": "#419 evitam Aviso e erro quando a lista de histórico estiver vazia",
89
- "nl": "(Galileo53) #419 vermijden Waarschuwing en fout wanneer geschiedenislijst leeg is",
90
- "fr": "(Galileo53) #419 éviter Avertissement et erreur lorsque la liste d'historique est vide",
91
- "it": "#419 evita Avvertenza ed errore quando l'elenco di storia è vuoto",
92
- "es": "(Galileo53) #419 evitar Advertencia y error cuando la lista de historia está vacía",
93
- "pl": "(Galileo53) # 419 unikać Ostrzeżenie i błąd, gdy lista historii jest pusta",
94
- "uk": "(Galileo53) #419 уникнути Попередження та похибка, коли список історії порожній",
95
- "zh-cn": "(加利略53) #419避免 历史列表为空时的警告和错误"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -146,7 +146,7 @@
146
146
  ],
147
147
  "globalDependencies": [
148
148
  {
149
- "admin": ">=7.6.17"
149
+ "admin": ">=7.6.20"
150
150
  }
151
151
  ],
152
152
  "plugins": {
@@ -0,0 +1,88 @@
1
+ /* eslint-disable prefer-template */
2
+ const net = require("net");
3
+
4
+ class TelnetClient {
5
+
6
+ constructor() {
7
+ this.socket = new net.Socket();
8
+ this.connected = false;
9
+
10
+ // Fehlerbehandlung
11
+ this.socket.on("error", (err) => {
12
+ console.error("Socket Error:", err);
13
+ });
14
+ }
15
+
16
+ async connect(host, port) {
17
+ if (this.connected) {
18
+ return;
19
+ }
20
+ await new Promise((resolve, reject) => {
21
+ this.socket.connect(port, host, () => {
22
+ this.connected = true;
23
+ resolve();
24
+ });
25
+ this.socket.once("error", reject);
26
+ });
27
+ }
28
+
29
+ async write(data) {
30
+ if (!this.connected) {
31
+ throw new Error("Socket not connected");
32
+ }
33
+
34
+ await new Promise((resolve, reject) => {
35
+ this.socket.write(data, (err) => {
36
+ if (err) {
37
+ reject(err);
38
+ } else {
39
+ resolve();
40
+ }
41
+ });
42
+ });
43
+ }
44
+
45
+ async read(timeoutMs = 4000) {
46
+ if (!this.connected) {
47
+ throw new Error("Socket not connected");
48
+ }
49
+
50
+ return new Promise((resolve, reject) => {
51
+ const onData = (data) => {
52
+ clearTimeout(timer);
53
+ this.socket.removeListener("error", onError);
54
+ resolve(data.toString());
55
+ };
56
+
57
+ const onError = (err) => {
58
+ clearTimeout(timer);
59
+ this.socket.removeListener("data", onData);
60
+ reject(err);
61
+ };
62
+
63
+ const timer = setTimeout(() => {
64
+ this.socket.removeListener("data", onData);
65
+ this.socket.removeListener("error", onError);
66
+ reject(new Error("Read timeout"));
67
+ }, timeoutMs);
68
+
69
+ this.socket.once("data", onData);
70
+ this.socket.once("error", onError);
71
+ });
72
+ }
73
+
74
+
75
+ async disconnect() {
76
+ if (!this.connected) {
77
+ return;
78
+ }
79
+ await new Promise((resolve) => {
80
+ this.socket.end(() => {
81
+ this.connected = false;
82
+ resolve();
83
+ });
84
+ });
85
+ }
86
+ }
87
+
88
+ module.exports = TelnetClient;
package/main.js CHANGED
@@ -1,4 +1,4 @@
1
- /* eslint-disable prefer-template */
1
+ /* eslint-disable prefer-template */
2
2
  /*
3
3
  * ebus adapter für iobroker
4
4
  *
@@ -19,10 +19,12 @@ const { spawn } = require("child_process");
19
19
  const fs = require("fs");
20
20
  const path = require("path");
21
21
  const axios = require("axios");
22
- const net = require("net");
23
- const { PromiseSocket } = require("promise-socket");
22
+ //const net = require("net");
23
+ //const { PromiseSocket } = require("promise-socket");
24
24
 
25
- const ebusdMinVersion = [25, 1];
25
+ const telnetClient = require("./lib/TelnetClient");
26
+
27
+ const ebusdMinVersion = [26, 1];
26
28
  const ebusdVersion = [0, 0];
27
29
  const ebusdUpdateVersion = [0, 0];
28
30
 
@@ -211,7 +213,10 @@ function FillPolledVars() {
211
213
  //make it compatible to old versions
212
214
  adapter.log.debug(`check old comma separeted list for polled vars ${ adapter.config.PolledValues}`);
213
215
 
214
- if (adapter.config.PolledValues !== undefined && typeof adapter.config.PolledValues == "string") {
216
+ if (adapter.config.PolledValues !== undefined
217
+ && adapter.config.PolledValues != null
218
+ && typeof adapter.config.PolledValues == "string") {
219
+
215
220
  const oPolled = adapter.config.PolledValues.split(",");
216
221
 
217
222
  if (oPolled.length > 0) {
@@ -324,12 +329,15 @@ async function ebusd_Command() {
324
329
  adapter.log.debug(`connect telnet to IP ${ adapter.config.targetIP } port ${ parseInt(adapter.config.targetTelnetPort)}`);
325
330
 
326
331
  try {
327
- const socket = new net.Socket();
328
- const promiseSocket = new PromiseSocket(socket);
332
+ //const socket = new net.Socket();
333
+ //const promiseSocket = new PromiseSocket(socket);
329
334
 
330
- await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
331
- adapter.log.debug("telnet connected for cmd");
332
- promiseSocket.setTimeout(5000);
335
+ //await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
336
+ //adapter.log.debug("telnet connected for cmd");
337
+ //promiseSocket.setTimeout(5000);
338
+
339
+ const telnet = new telnetClient();
340
+ await telnet.connect(adapter.config.targetIP, parseInt(adapter.config.targetTelnetPort));
333
341
 
334
342
  const oCmds = cmds.split(",");
335
343
 
@@ -337,9 +345,11 @@ async function ebusd_Command() {
337
345
  let received = "";
338
346
  for (let n = 0; n < oCmds.length; n++) {
339
347
  adapter.log.debug(`send ${ oCmds[n]}`);
340
- await promiseSocket.write(`${oCmds[n] }\n`);
348
+ //await promiseSocket.write(`${oCmds[n] }\n`);
349
+ await telnet.write(`${oCmds[n]}\n`);
341
350
 
342
- const data = await promiseSocket.read();
351
+ //const data = await promiseSocket.read();
352
+ const data = await telnet.read();
343
353
 
344
354
  if (data.includes("ERR")) {
345
355
  adapter.log.warn(`sent ${ oCmds[n] }, received ${ data } please check ebusd logs for details!`);
@@ -362,7 +372,8 @@ async function ebusd_Command() {
362
372
  }
363
373
  await adapter.setStateAsync("cmd", { ack: true, val: "" });
364
374
 
365
- promiseSocket.destroy();
375
+ //promiseSocket.destroy();
376
+ await telnet.disconnect();
366
377
  } catch (e) {
367
378
  adapter.log.error(`exception from tcp socket` + `[${ e }]`);
368
379
  }
@@ -374,16 +385,21 @@ async function ebusd_Command() {
374
385
 
375
386
  async function ebusd_find() {
376
387
  try {
377
- const socket = new net.Socket();
378
- const promiseSocket = new PromiseSocket(socket);
388
+ //const socket = new net.Socket();
389
+ //const promiseSocket = new PromiseSocket(socket);
390
+
391
+ //await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
392
+ //adapter.log.debug("telnet connected for cmd");
393
+ //promiseSocket.setTimeout(5000);
394
+ const telnet = new telnetClient();
395
+ await telnet.connect(adapter.config.targetIP, parseInt(adapter.config.targetTelnetPort));
379
396
 
380
- await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
381
- adapter.log.debug("telnet connected for cmd");
382
- promiseSocket.setTimeout(5000);
383
397
 
384
- await promiseSocket.write("find -F circuit,name,comment\n");
398
+ //await promiseSocket.write("find -F circuit,name,comment\n");
399
+ await telnet.write("find -F circuit,name,comment\n");
385
400
 
386
- const data = await promiseSocket.read();
401
+ //const data = await promiseSocket.read();
402
+ const data = await telnet.read();
387
403
 
388
404
  if (data.includes("ERR")) {
389
405
  adapter.log.warn(`received error! sent find, received ${ data } please check ebusd logs for details!`);
@@ -407,14 +423,18 @@ async function ebusd_find() {
407
423
  adapter.log.debug(`send cmd ${ cmd}`);
408
424
 
409
425
  cmd += "\n";
410
- await promiseSocket.write(cmd);
426
+ //await promiseSocket.write(cmd);
427
+ await telnet.write(cmd);
411
428
 
412
- const result = await promiseSocket.read();
429
+ //const result = await promiseSocket.read();
430
+ const result = await telnet.read();
413
431
 
414
432
  adapter.log.debug(`received ${ typeof result } ${ result}`);
415
433
  }
416
434
 
417
- promiseSocket.destroy();
435
+ //promiseSocket.destroy();
436
+ await telnet.disconnect();
437
+
418
438
  } catch (e) {
419
439
  adapter.log.error(`exception from tcp socket in ebusd_find` + `[${ e }]`);
420
440
  }
@@ -1445,12 +1465,15 @@ async function ebusd_ReadValues() {
1445
1465
  adapter.log.debug(`to poll ctr ${ oPolledVars.length } vals: ${ JSON.stringify(oPolledVars)}`);
1446
1466
 
1447
1467
  try {
1448
- const socket = new net.Socket();
1449
- const promiseSocket = new PromiseSocket(socket);
1468
+ //const socket = new net.Socket();
1469
+ //const promiseSocket = new PromiseSocket(socket);
1470
+
1471
+ //await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
1472
+ //adapter.log.debug(`telnet connected to poll variables ${ adapter.config.targetIP } port ${ adapter.config.targetTelnetPort}`);
1473
+ //promiseSocket.setTimeout(5000);
1450
1474
 
1451
- await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
1452
- adapter.log.debug(`telnet connected to poll variables ${ adapter.config.targetIP } port ${ adapter.config.targetTelnetPort}`);
1453
- promiseSocket.setTimeout(5000);
1475
+ const telnet = new telnetClient();
1476
+ await telnet.connect(adapter.config.targetIP, parseInt(adapter.config.targetTelnetPort));
1454
1477
 
1455
1478
  let retries = 0;
1456
1479
  for (let nCtr = 0; nCtr < oPolledVars.length; nCtr++) {
@@ -1467,32 +1490,58 @@ async function ebusd_ReadValues() {
1467
1490
  adapter.log.debug(`send cmd ${ cmd}`);
1468
1491
 
1469
1492
  cmd += "\n";
1470
- await promiseSocket.write(cmd);
1493
+ let data = null;
1494
+
1495
+ try {
1496
+ //await promiseSocket.write(cmd);
1497
+ await telnet.write(cmd);
1498
+
1499
+ //const data = await promiseSocket.read();
1500
+ data = await telnet.read();
1501
+ } catch (e) {
1502
+ adapter.log.warn(`exception from tcp socket write/read in ebusd_ReadValues for cmd ${cmd}` + `[${e}]` + ` -> retry` );
1503
+
1504
+ //todo: retry nur für timeout und arbitration lost? 2025-11-01
1505
+ retries++;
1506
+ if (retries > adapter.config.maxretries) {
1507
+ adapter.log.error(`max retries, skip cmd ${cmd}`);
1508
+
1509
+ } else {
1510
+ nCtr--; //counter wieder zurücksetzen
1511
+ adapter.log.debug("retry to send data ");
1512
+ }
1471
1513
 
1472
- const data = await promiseSocket.read();
1514
+ }
1515
+ if (data !== null) {
1516
+ adapter.log.debug(`received ${data} for ${JSON.stringify(oPolledVars[nCtr])}`);
1473
1517
 
1474
- //received ERR: arbitration lost for YieldThisYear
1475
- if (data.includes("ERR")) {
1476
- adapter.log.warn(`sent ${ cmd }, received ${ data } for ${ JSON.stringify(oPolledVars[nCtr]) } please check ebusd logs for details!`);
1477
-
1478
- /*
1479
- * sent read -f YieldLastYear, received ERR: arbitration lost for {"circuit":"","name":"YieldLastYear","parameter":""}
1480
- * */
1481
- if (data.includes("arbitration lost")) {
1482
- retries++;
1483
- if (retries > adapter.config.maxretries) {
1484
- adapter.log.error(`max retries, skip cmd ${ cmd}`);
1485
- retries = 0;
1486
- } else {
1487
- nCtr--;
1488
- adapter.log.debug("retry to send data ");
1489
- }
1490
- }
1491
- } else {
1492
- adapter.log.debug(`received ${ data } for ${ JSON.stringify(oPolledVars[nCtr])}`);
1518
+ //todo: parse data and set DP's 2025-11-01
1493
1519
  }
1520
+ //received ERR: arbitration lost for YieldThisYear
1521
+ //if (data !== null && data.includes("ERR")) {
1522
+ // adapter.log.warn(`sent ${ cmd }, received ${ data } for ${ JSON.stringify(oPolledVars[nCtr]) } please check ebusd logs for details!`);
1523
+ //
1524
+ // /*
1525
+ // * sent read -f YieldLastYear, received ERR: arbitration lost for {"circuit":"","name":"YieldLastYear","parameter":""}
1526
+ // * */
1527
+ // if (data.includes("arbitration lost")) {
1528
+ // retries++;
1529
+ // if (retries > adapter.config.maxretries) {
1530
+ // adapter.log.error(`max retries, skip cmd ${ cmd}`);
1531
+ // retries = 0;
1532
+ // } else {
1533
+ // nCtr--;
1534
+ // adapter.log.debug("retry to send data ");
1535
+ // }
1536
+ // }
1537
+ //} else {
1538
+ //
1539
+ // //muss wieder debug werden 2025-11-01 todo
1540
+ // adapter.log.info(`received ${ data } for ${ JSON.stringify(oPolledVars[nCtr])}`);
1541
+ //}
1494
1542
  }
1495
- promiseSocket.destroy();
1543
+ //promiseSocket.destroy();
1544
+ await telnet.disconnect();
1496
1545
  adapter.log.debug("telnet disonnected");
1497
1546
  } catch (e) {
1498
1547
  adapter.log.error(`exception from tcp socket in ebusd_ReadValues ` + `[${ e }]`);
@@ -1503,42 +1552,55 @@ async function ebusd_ReadValues() {
1503
1552
  }
1504
1553
 
1505
1554
  async function FindParams(obj) {
1506
- adapter.log.debug(`FindParams ${ JSON.stringify(obj) } ${ JSON.stringify(obj.message) } ${ JSON.stringify(obj.message.circuit)}`);
1555
+
1556
+ //todo muss wieder debug werden 2025-11-01
1557
+ adapter.log.info(`FindParams ${ JSON.stringify(obj) } ${ JSON.stringify(obj.message) } ${ JSON.stringify(obj.message.circuit)}`);
1507
1558
 
1508
1559
  const list = [];
1509
1560
 
1510
1561
  try {
1511
1562
  //FindParams {"command":"findParams","message":{"circuit":"cc"},"from":"system.adapter.admin.0","callback":{"message":{"circuit":"cc"},"id":90,"ack":false,"time":1733690088670},"_id":39690903}
1512
1563
 
1513
- if (obj.message != null) {
1564
+ if (obj.message !== null && obj.message.circuit!== null) {
1514
1565
  const circuit = obj.message.circuit;
1515
1566
 
1516
- const socket = new net.Socket();
1517
- const promiseSocket = new PromiseSocket(socket);
1567
+ //const socket = new net.Socket();
1568
+ //const promiseSocket = new PromiseSocket(socket);
1518
1569
 
1519
- await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
1520
- adapter.log.debug("telnet connected for cmd");
1521
- promiseSocket.setTimeout(5000);
1570
+ //await promiseSocket.connect(parseInt(adapter.config.targetTelnetPort), adapter.config.targetIP);
1571
+ //adapter.log.debug("telnet connected for cmd");
1572
+ //promiseSocket.setTimeout(5000);
1573
+
1574
+ const telnet = new telnetClient();
1575
+ await telnet.connect(adapter.config.targetIP, parseInt(adapter.config.targetTelnetPort));
1522
1576
 
1523
1577
  const cmd = `find -c ${ circuit } -F circuit,name\n`;
1524
- await promiseSocket.write(cmd);
1578
+ //await promiseSocket.write(cmd);
1579
+
1580
+ adapter.log.debug(`send cmd ${cmd}`);
1581
+ await telnet.write(cmd);
1525
1582
 
1526
- const data = await promiseSocket.read();
1583
+ adapter.log.debug(`sent, wait for data...`);
1584
+ //const data = await promiseSocket.read();
1585
+ const data = await telnet.read();
1586
+ adapter.log.info(`data received: ` + data);
1527
1587
 
1528
- if (data.includes("ERR")) {
1588
+ if ( data.includes("ERR")) {
1529
1589
  adapter.log.warn(`received error! sent find, received ${ data } please check ebusd logs for details! ${ cmd}`);
1530
1590
 
1531
1591
  } else {
1532
- adapter.log.debug(`received ${ typeof data } ${ data } ${ + cmd}`);
1592
+ adapter.log.info(`received ${ typeof data } ${ data } ${ + cmd}`);
1533
1593
  }
1534
1594
  /*
1535
1595
  received object ehp,AccelerationTestModeehp,AccelerationTestModeehp,ActualEnvironmentPowerehp,ActualEnvironmentPowerehp,ActualEnvironmentPowerPercentageehp,ActualEnvironmentPowerPercentageehp,ApplianceCodeehp,ApplianceCodeehp,Backupehp,Backupehp,BackupHoursehp,BackupHoursHcehp,BackupHoursHwcehp,BackupHysteresisehp,BackupIntegralehp,BackupModeHcehp,BackupModeHwcehp,BackupPowerCutehp,BackupStartsehp,BackupStartsHcehp,BackupStartsHwcehp,BackupTypeehp,BivalentTempehp,Bleedingehp,Bleedingehp,CirPumpehp,CirPumpehp,Code1ehp,Code1Code2Validehp,Code2ehp,Compehp,Compehp,CompControlStateehp,CompCutPressHighCountehp,CompCutPressLowCountehp,CompCutTempCountehp,CompDemandehp,CompHoursehp,CompHoursHcehp,CompHoursHwcehp,CompHysteresisehp,CompIntegralehp,CompPressHighehp,CompPressHighehp,CompPressLowehp,CompPressLowehp,CompStartsehp,CompStartsHcehp,CompStartsHwcehp,CompStateehp,CondensorTempehp,CondensorTempehp,currenterrorehp,Dateehp,DateTimeehp,DeltaTempT6T7ehp,ElectricWiringDiagramehp,ElectricWiringDiagramehp,EnergyBalancingReleaseehp,errorhistoryehp,FlowTempehp,FlowTempehp,FlowtempCoolingMinehp,FlowTempOffsetehp,Hc1Pumpehp,Hc1Pumpehp,Hc1PumpHoursehp,Hc1PumpPortehp,Hc1PumpStartsehp,Hc2Pumpehp,Hc2PumpHoursehp,HcFlowTempehp,HcFlowTempOffsetehp,HcModeDemandHoursehp,HcModeFulfilledHoursehp,HcParallelStorageFillingEnabledehp,HcPressehp,HcReturnTempehp,HcReturnTempehp,HcReturnTempOffsetehp,HeatPumpStatusehp,HeatPumpStatusehp,HeatpumpTypeehp,HwcHcValveehp,HwcHcValveehp,HwcHcValveStartsehp,HwcLaggingTimeehp,HwcLoadingDelayehp,HwcModeDemandHoursehp,HwcModeFulfilledHoursehp,HwcPumpStartsehp,HwcSwitchehp,HwcTempehp,HwcTempehp,HwcTempOffsetehp,HydraulicSchemeehp,ICLOutehp,ICLOutehp,Injectionehp,Integralehp,Mixer1DutyCycleehp,NumberCompStartsehp,OutsideTempehp,OutsideTempOffsetehp,OverpressureThresholdehp,PhaseOrderehp,PhaseOrderehp,PhaseStatusehp,PhaseStatusehp,PowerCutehp,PowerCutPreloadingehp,PressSwitchehp,PressSwitchehp,RebootCounterehp,ReturnTempMaxehp,SetModeehp,SoftwareCodeehp,Source2PumpHoursehp,Sourceehp,Sourceehp,SourceHoursehp,SourcePortehp,SourcePressehp,SourcePumpPrerunTimeehp,SourceStartsehp,SourceSwitchehp,SourceSwitchehp,SourceTempInputehp,SourceTempInputehp,SourceTempInputOffsetehp,SourceTempOutputehp,SourceTempOutputehp,SourceTempOutputOffsetehp,SourceTempOutputT8Minehp,StateSoftwareCodeehp,StateSoftwareCodeehp,Status01ehp,Status02ehp,Status16ehp,Statusehp,StatusCirPumpehp,StorageTempBottomehp,StorageTempBottomehp,StorageTempBottomOffsetehp,StorageTempTopehp,StorageTempTopehp,StorageTempTopOffsetehp,Subcoolingehp,Superheatehp,T19MaxToCompOffehp,TempInputehp,TempInputehp,TempInputOffsetehp,TempOutputehp,TempOutputehp,TempOutputOffsetehp,Timeehp,TimeBetweenTwoCompStartsMinehp,TimeCompOffMinehp,TimeCompOnMinehp,TimeOfNextPredictedPowerCutehp,TimeOfNextPredictedPowerCutehp,Weekdayehp,YieldTotalehp,YieldTotal
1536
1596
  */
1537
- const str = new TextDecoder().decode(data);
1538
- const datas = str.split(/\r?\n/);
1597
+ //const str = new TextDecoder().decode(data);
1598
+ const datas = data.split(/[\r?\n,]+/);
1599
+
1600
+ adapter.log.info("found entries: " + datas.length);
1539
1601
 
1540
1602
  for (let i = 0; i < datas.length; i++) {
1541
- //adapter.log.debug(JSON.stringify(datas[i]));
1603
+ //adapter.log.info(JSON.stringify(datas[i]));
1542
1604
 
1543
1605
  const names = datas[i].split(",");
1544
1606
 
@@ -1567,6 +1629,8 @@ async function FindParams(obj) {
1567
1629
  list.push(entry);
1568
1630
  }
1569
1631
  }
1632
+
1633
+ await telnet.disconnect();
1570
1634
  } else {
1571
1635
  adapter.log.error("no circuit defined where to look for parameter, check values!");
1572
1636
  }
@@ -1727,6 +1791,13 @@ async function GetLatestVersionGithub() {
1727
1791
  return latestVersion;
1728
1792
  }
1729
1793
 
1794
+
1795
+
1796
+
1797
+
1798
+
1799
+
1800
+
1730
1801
  // If started as allInOne/compact mode => return function to create instance
1731
1802
  if (module && module.parent) {
1732
1803
  module.exports = startAdapter;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.ebus",
3
- "version": "3.6.10",
3
+ "version": "3.8.0",
4
4
  "description": "ioBroker ebus Adapter",
5
5
  "author": {
6
6
  "name": "René G.",
@@ -17,25 +17,24 @@
17
17
  ],
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "https://github.com/rg-engineering/ioBroker.ebus"
20
+ "url": "git+https://github.com/rg-engineering/ioBroker.ebus.git"
21
21
  },
22
22
  "engines": {
23
23
  "node": ">= 20"
24
24
  },
25
25
  "dependencies": {
26
26
  "@iobroker/adapter-core": "^3.3.2",
27
- "axios": "^1.12.2",
28
- "net": "^1.0.2",
29
- "promise-socket": "^8.0.0"
27
+ "axios": "^1.13.6",
28
+ "net": "^1.0.2"
30
29
  },
31
30
  "devDependencies": {
32
- "@alcalzone/release-script": "^5.0.0",
33
- "@alcalzone/release-script-plugin-iobroker": "^4.0.0",
34
- "@alcalzone/release-script-plugin-license": "^4.0.0",
35
- "@alcalzone/release-script-plugin-manual-review": "^4.0.0",
31
+ "@alcalzone/release-script": "^5.1.1",
32
+ "@alcalzone/release-script-plugin-iobroker": "^5.1.2",
33
+ "@alcalzone/release-script-plugin-license": "^5.1.1",
34
+ "@alcalzone/release-script-plugin-manual-review": "^5.1.1",
36
35
  "@iobroker/adapter-dev": "^1.5.0",
37
36
  "@iobroker/eslint-config": "^2.2.0",
38
- "@iobroker/testing": "^5.1.1"
37
+ "@iobroker/testing": "^5.2.2"
39
38
  },
40
39
  "main": "main.js",
41
40
  "bugs": {
@@ -70,6 +69,7 @@
70
69
  "lint": "eslint -c eslint.config.mjs .",
71
70
  "translate": "translate-adapter",
72
71
  "translate1": "translate-adapter adminLanguages2words",
73
- "release": "release-script"
72
+ "release": "release-script",
73
+ "npm": "npm i"
74
74
  }
75
75
  }