iobroker.openknx 1.1.8 → 1.1.9

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 CHANGED
@@ -52,6 +52,9 @@ ioBroker adapter for KNX IP communication, powered by [KNXUltimate](https://gith
52
52
  Placeholder for the next version (at the beginning of the line):
53
53
  ### **WORK IN PROGRESS**
54
54
  -->
55
+ ### 1.1.9 (2026-05-04)
56
+ - fix handling of unkown DPT
57
+
55
58
  ### 1.1.8 (2026-04-30)
56
59
  - add compatiblity mode für raw DPT5.*
57
60
  - reduce default delay to 25ms
@@ -78,11 +81,6 @@ ioBroker adapter for KNX IP communication, powered by [KNXUltimate](https://gith
78
81
  - (copilot) Adapter requires js-controller >= 6.0.11 now
79
82
  - (@klein0r) Adapter requires node.js >= 20 and js-controller >= 6 now
80
83
 
81
- ### 0.9.0 (2024-04-21)
82
-
83
- - (mcm1957) Adapter requires node.js >= 18 and js-controller >= 5 now
84
- - (mcm1957) Dependencies have been updated
85
-
86
84
  ### initial version
87
85
 
88
86
  - initial version from https://www.npmjs.com/package/iobroker.knx/v/0.8.3
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "Vorhandene IOB-Objekte entfernen, die nicht in der ETS-Importdatei enthalten sind",
100
100
  "set acknowledgement flag when application writes to object": "Bestätigungsflag setzen, wenn Anwendung auf Objekt schreibt",
101
101
  "this is not a number": "dies ist keine Zahl",
102
- "use common.type boolean for 1 bit enum instead of number": "common.type boolean für 1-Bit-Enum anstelle von Zahl verwenden",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "Basis-DPTs als Rohwerte behandeln, z.B. DPT5 = 0-255 (openknx 0.9.1 Kompatibilität)"
102
+ "use common.type boolean for 1 bit enum instead of number": "common.type boolean für 1-Bit-Enum anstelle von Zahl verwenden"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "Unsupported file format": "Unsupported file format",
100
100
  "use common.type boolean for 1 bit enum instead of number": "use common.type boolean for 1 bit enum instead of number",
101
101
  "Value": "Value",
102
- "Write": "Write",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)"
102
+ "Write": "Write"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "eliminar objetos IOB existentes que no están en el archivo de importación ETS",
100
100
  "set acknowledgement flag when application writes to object": "establecer el indicador de reconocimiento cuando la aplicación escribe en el objeto",
101
101
  "this is not a number": "esto no es un numero",
102
- "use common.type boolean for 1 bit enum instead of number": "use common.type booleano para enumeración de 1 bit en lugar de número",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "tratar DPTs base como valores sin procesar, ej. DPT5 = 0-255 (compatibilidad openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "use common.type booleano para enumeración de 1 bit en lugar de número"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "supprimer les objets IOB existants qui ne figurent pas dans le fichier d'importation ETS",
100
100
  "set acknowledgement flag when application writes to object": "définir l'indicateur d'accusé de réception lorsque l'application écrit dans l'objet",
101
101
  "this is not a number": "ce n'est pas un nombre",
102
- "use common.type boolean for 1 bit enum instead of number": "utilisez common.type boolean pour une énumération de 1 bit au lieu d'un nombre",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "traiter les DPTs de base comme valeurs brutes, ex. DPT5 = 0-255 (compatibilité openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "utilisez common.type boolean pour une énumération de 1 bit au lieu d'un nombre"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "rimuovere gli oggetti IOB esistenti che non si trovano nel file di importazione ETS",
100
100
  "set acknowledgement flag when application writes to object": "imposta il flag di riconoscimento quando l'applicazione scrive nell'oggetto",
101
101
  "this is not a number": "questo non è un numero",
102
- "use common.type boolean for 1 bit enum instead of number": "utilizzare common.type booleano per l'enumerazione a 1 bit anziché il numero",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "trattare i DPT base come valori grezzi, es. DPT5 = 0-255 (compatibilità openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "utilizzare common.type booleano per l'enumerazione a 1 bit anziché il numero"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "verwijder bestaande IOB-objecten die niet in het ETS-importbestand staan",
100
100
  "set acknowledgement flag when application writes to object": "bevestigingsvlag instellen wanneer toepassing naar object schrijft",
101
101
  "this is not a number": "dit is geen nummer",
102
- "use common.type boolean for 1 bit enum instead of number": "gebruik common.type boolean voor 1 bit enum in plaats van getal",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "basis-DPTs als onbewerkte waarden behandelen, bijv. DPT5 = 0-255 (openknx 0.9.1 compatibiliteit)"
102
+ "use common.type boolean for 1 bit enum instead of number": "gebruik common.type boolean voor 1 bit enum in plaats van getal"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "usuń istniejące obiekty IOB, których nie ma w pliku importu ETS",
100
100
  "set acknowledgement flag when application writes to object": "ustaw flagę potwierdzenia, gdy aplikacja zapisuje do obiektu",
101
101
  "this is not a number": "to nie jest liczba",
102
- "use common.type boolean for 1 bit enum instead of number": "użyj wartości logicznej common.type dla 1-bitowego wyliczenia zamiast liczby",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "traktuj bazowe DPT jako wartości surowe, np. DPT5 = 0-255 (kompatybilność openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "użyj wartości logicznej common.type dla 1-bitowego wyliczenia zamiast liczby"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "remova objetos IOB existentes que não estão no arquivo de importação ETS",
100
100
  "set acknowledgement flag when application writes to object": "definir sinalizador de reconhecimento quando o aplicativo grava no objeto",
101
101
  "this is not a number": "este não é um número",
102
- "use common.type boolean for 1 bit enum instead of number": "use common.type booleano para enum de 1 bit em vez de número",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "tratar DPTs base como valores brutos, ex. DPT5 = 0-255 (compatibilidade openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "use common.type booleano para enum de 1 bit em vez de número"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "удалить существующие объекты IOB, которых нет в файле импорта ETS",
100
100
  "set acknowledgement flag when application writes to object": "установить флаг подтверждения, когда приложение записывает в объект",
101
101
  "this is not a number": "это не число",
102
- "use common.type boolean for 1 bit enum instead of number": "используйте логическое значение common.type для 1-битного перечисления вместо числа",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "обрабатывать базовые DPT как необработанные значения, напр. DPT5 = 0-255 (совместимость с openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "используйте логическое значение common.type для 1-битного перечисления вместо числа"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "видалити існуючі об’єкти IOB, яких немає у файлі імпорту ETS",
100
100
  "set acknowledgement flag when application writes to object": "встановити позначку підтвердження, коли програма записує об’єкт",
101
101
  "this is not a number": "це не число",
102
- "use common.type boolean for 1 bit enum instead of number": "використовуйте common.type boolean для 1-бітового enum замість числа",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "обробляти базові DPT як необроблені значення, напр. DPT5 = 0-255 (сумісність openknx 0.9.1)"
102
+ "use common.type boolean for 1 bit enum instead of number": "використовуйте common.type boolean для 1-бітового enum замість числа"
104
103
  }
@@ -99,6 +99,5 @@
99
99
  "remove existing IOB objects that are not in ETS import file": "删除 ETS 导入文件中不存在的现有 IOB 对象",
100
100
  "set acknowledgement flag when application writes to object": "当应用程序写入对象时设置确认标志",
101
101
  "this is not a number": "这不是一个数字",
102
- "use common.type boolean for 1 bit enum instead of number": "使用 common.type boolean 作为 1 位枚举而不是数字",
103
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": "将基本DPT视为原始值,如DPT5 = 0-255(openknx 0.9.1兼容)"
102
+ "use common.type boolean for 1 bit enum instead of number": "使用 common.type boolean 作为 1 位枚举而不是数字"
104
103
  }
@@ -99,7 +99,6 @@
99
99
  });
100
100
  }, 1000);
101
101
  if (settings.autoreadEnabled === undefined) settings.autoreadEnabled = false;
102
- if (settings.rawBaseDpt === undefined) settings.rawBaseDpt = true;
103
102
  if (settings.deviceName === undefined) settings.deviceName = "";
104
103
  if (settings.eibadr === undefined) settings.eibadr = "0.0.0";
105
104
  if (settings.gwip === undefined) settings.gwip = "127.0.0.1";
@@ -1175,12 +1174,7 @@
1175
1174
  <label class="translate" for="noWarnUnknownGa"
1176
1175
  >do not warn on unknown KNX group adresses</label>
1177
1176
  </div>
1178
- <div class="col s12 input-field">
1179
- <input class="value" id="rawBaseDpt" type="checkbox" checked />
1180
- <label class="translate" for="rawBaseDpt"
1181
- >treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)</label>
1182
- </div>
1183
-
1177
+
1184
1178
  </div>
1185
1179
  </div>
1186
1180
  </div>
package/admin/words.js CHANGED
@@ -107,7 +107,6 @@ systemDictionary = {
107
107
  "physical KNX address in format a/b/c not valid": {"en": "physical KNX address in format a/b/c not valid", "de": "Physikalische KNX-Adresse im Format a/b/c ungültig", "ru": "физический адрес KNX в формате a/b/c недействителен", "pt": "endereço KNX físico no formato a/b/c inválido", "nl": "fysiek KNX-adres in formaat a/b/c niet geldig", "fr": "adresse physique KNX au format a/b/c non valide", "it": "indirizzo fisico KNX in formato a/b/c non valido", "es": "Dirección física KNX en formato a/b/c no válida", "pl": "adres fizyczny KNX w formacie a/b/c jest nieprawidłowy", "uk": "фізична адреса KNX у форматі a/b/c недійсна", "zh-cn": "a/b/c 格式的物理 KNX 地址无效"},
108
108
  "please provide a valid minimum send delay value between 0 and 1000 [ms]": {"en": "please provide a valid minimum send delay value between 0 and 1000 [ms]", "de": "Bitte geben Sie einen gültigen Wert für die Sendeverzögerung zwischen 0 und 1000 [ms] an", "ru": "укажите допустимое минимальное значение задержки отправки от 0 до 1000 [мс]", "pt": "forneça um valor mínimo de atraso de envio válido entre 0 e 1000 [ms]", "nl": "geef een geldige minimale verzendvertragingswaarde op tussen 0 en 1000 [ms]", "fr": "veuillez fournir une valeur de délai d'envoi minimum valide comprise entre 0 et 1 000 [ms]", "it": "fornire un valore di ritardo di invio minimo valido compreso tra 0 e 1000 [ms]", "es": "proporcione un valor de retardo de envío mínimo válido entre 0 y 1000 [ms]", "pl": "proszę podać poprawną minimalną wartość opóźnienia wysyłania pomiędzy 0 a 1000 [ms]", "uk": "надайте дійсне мінімальне значення затримки надсилання від 0 до 1000 [мс]", "zh-cn": "请提供 0 到 1000 [ms] 之间的有效最小发送延迟值"},
109
109
  "readout values of autoread iob objects on startup": {"en": "readout values of autoread iob objects on startup", "de": "Werte von Autoread-IOB-Objekten beim Start des Adapters auslesen", "ru": "считывание значений объектов autoread iob при запуске", "pt": "valores de leitura de objetos iob de leitura automática na inicialização", "nl": "uitleeswaarden van autoread iob-objecten bij het opstarten", "fr": "lire les valeurs des objets iob à lecture automatique au démarrage", "it": "valori di lettura degli oggetti iob con lettura automatica all’avvio", "es": "valores de lectura de objetos iob de lectura automática al inicio", "pl": "odczyt wartości obiektów iob z automatycznym odczytem przy uruchomieniu", "uk": "зчитування значень автозчитування об’єктів iob під час запуску", "zh-cn": "启动时自动读取 iob 对象的读数值"},
110
- "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)": {"en": "treat base DPTs as raw values, e.g. DPT5 = 0-255 (openknx 0.9.1 compatibility)", "de": "Basis-DPTs als Rohwerte behandeln, z.B. DPT5 = 0-255 (openknx 0.9.1 Kompatibilität)", "ru": "обрабатывать базовые DPT как необработанные значения, напр. DPT5 = 0-255 (совместимость с openknx 0.9.1)", "pt": "tratar DPTs base como valores brutos, ex. DPT5 = 0-255 (compatibilidade openknx 0.9.1)", "nl": "basis-DPTs als onbewerkte waarden behandelen, bijv. DPT5 = 0-255 (openknx 0.9.1 compatibiliteit)", "fr": "traiter les DPTs de base comme valeurs brutes, ex. DPT5 = 0-255 (compatibilité openknx 0.9.1)", "it": "trattare i DPT base come valori grezzi, es. DPT5 = 0-255 (compatibilità openknx 0.9.1)", "es": "tratar DPTs base como valores sin procesar, ej. DPT5 = 0-255 (compatibilidad openknx 0.9.1)", "pl": "traktuj bazowe DPT jako wartości surowe, np. DPT5 = 0-255 (kompatybilność openknx 0.9.1)", "uk": "обробляти базові DPT як необроблені значення, напр. DPT5 = 0-255 (сумісність openknx 0.9.1)", "zh-cn": "将基本DPT视为原始值,如DPT5 = 0-255(openknx 0.9.1兼容)"},
111
110
  "remove existing IOB objects that are not in ETS import file": {"en": "remove existing IOB objects that are not in ETS import file", "de": "Vorhandene IOB-Objekte entfernen, die nicht in der ETS-Importdatei enthalten sind", "ru": "удалить существующие объекты IOB, которых нет в файле импорта ETS", "pt": "remova objetos IOB existentes que não estão no arquivo de importação ETS", "nl": "verwijder bestaande IOB-objecten die niet in het ETS-importbestand staan", "fr": "supprimer les objets IOB existants qui ne figurent pas dans le fichier d'importation ETS", "it": "rimuovere gli oggetti IOB esistenti che non si trovano nel file di importazione ETS", "es": "eliminar objetos IOB existentes que no están en el archivo de importación ETS", "pl": "usuń istniejące obiekty IOB, których nie ma w pliku importu ETS", "uk": "видалити існуючі об’єкти IOB, яких немає у файлі імпорту ETS", "zh-cn": "删除 ETS 导入文件中不存在的现有 IOB 对象"},
112
111
  "set acknowledgement flag when application writes to object": {"en": "set acknowledgement flag when application writes to object", "de": "Bestätigungsflag setzen, wenn Anwendung auf Objekt schreibt", "ru": "установить флаг подтверждения, когда приложение записывает в объект", "pt": "definir sinalizador de reconhecimento quando o aplicativo grava no objeto", "nl": "bevestigingsvlag instellen wanneer toepassing naar object schrijft", "fr": "définir l'indicateur d'accusé de réception lorsque l'application écrit dans l'objet", "it": "imposta il flag di riconoscimento quando l'applicazione scrive nell'oggetto", "es": "establecer el indicador de reconocimiento cuando la aplicación escribe en el objeto", "pl": "ustaw flagę potwierdzenia, gdy aplikacja zapisuje do obiektu", "uk": "встановити позначку підтвердження, коли програма записує об’єкт", "zh-cn": "当应用程序写入对象时设置确认标志"},
113
112
  "this is not a number": { "en": "this is not a number", "de": "dies ist keine Zahl", "ru": "это не число", "pt": "este não é um número", "nl": "dit is geen nummer", "fr": "ce n'est pas un nombre", "it": "questo non è un numero", "es": "esto no es un numero", "pl": "to nie jest liczba", "uk": "це не число", "zh-cn": "这不是一个数字"},
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "openknx",
4
- "version": "1.1.8",
4
+ "version": "1.1.9",
5
5
  "news": {
6
+ "1.1.9": {
7
+ "en": "fix handling of unkown DPT",
8
+ "de": "Die Behandlung von unbekannten DPTs gefixt",
9
+ "ru": "обработка Unkown DPT",
10
+ "pt": "corrigir o manuseamento de DPT deskown",
11
+ "nl": "fix handling van unkown DPT",
12
+ "fr": "fixer la manipulation du DPT décoloré",
13
+ "it": "gestione corretta di DPT non proprio",
14
+ "es": "arreglar el manejo de DPT unkown",
15
+ "pl": "fix handling of unkown DPT",
16
+ "uk": "фіксувати обробку unkown DPT",
17
+ "zh-cn": "固定处理未隐藏的 DPT"
18
+ },
6
19
  "1.1.8": {
7
20
  "en": "add compatiblity mode für raw DPT5.*\nreduce default delay to 25ms",
8
21
  "de": "Kombatiblitäts-Modus für raw DPT5.*\nDefault-Delay auf 25m reduziert",
@@ -80,19 +93,6 @@
80
93
  "pl": "funkcja: umieścić nazwę interfejsu KNX w logu\nbugfix: # 419 czekać na połączenie zakończone przed przetwarzaniem danych w przypadku otrzymania danych przed\nbugfix: # 457 Brak Ack po zmianie wartości obiektu IOB",
81
94
  "uk": "функція: покласти ім'я інтерфейсу KNX в журнал\nвиправлення помилок: #419 почекайте підключення до обробки даних у разі отримання даних до\nenglish, Українська, Français... Відсутня після зміни значення об'єкта IOB",
82
95
  "zh-cn": "特性: 将 KNX 接口名称放入日志\nbugfix: # 419 在数据处理之前等待连接完成, 以防在接收数据之前\n错误修正 : # 457 更改 IOB 对象值后丢失"
83
- },
84
- "0.7.3": {
85
- "en": "feature: one of the warnings is configurable in the dialog",
86
- "de": "feature: eine der warnungen ist im dialog konfigurierbar",
87
- "ru": "функция: одно из предупреждений настраивается в диалоге",
88
- "pt": "recurso: um dos avisos é configurável na caixa de diálogo",
89
- "nl": "functie: een van de waarschuwingen is in het dialoogvenster instelbaar",
90
- "fr": "fonctionnalité : un des avertissements est configurable dans la boîte de dialogue",
91
- "it": "caratteristica: uno degli avvisi è configurabile nella finestra di dialogo",
92
- "es": "función: una de las advertencias es configurable en el diálogo",
93
- "pl": "funkcja: jeden z ostrzeżeń jest konfigurowalny w oknie dialogowym",
94
- "uk": "функція: один з попереджень налаштований у діалоговому вікні",
95
- "zh-cn": "特性: 在对话框中可配置警告之一"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -179,7 +179,6 @@
179
179
  "aliasRegexp": "stat(e|us)(\\.|$)|rm(\\.|$)|r(ü|ue)ckmeldung(\\.|$)",
180
180
  "aliasSimilarity": 0.9,
181
181
  "autoreadEnabled": true,
182
- "rawBaseDpt": true,
183
182
  "deviceName": "",
184
183
  "eibadr": "0.0.0",
185
184
  "gwip": "",
package/main.js CHANGED
@@ -50,13 +50,6 @@ class openknx extends utils.Adapter {
50
50
  this.stopping = false;
51
51
  this.linkedStateMap = {}; // foreignStateId → knxObjectId (reverse lookup for Direct Link)
52
52
 
53
- // Base DPTs without subtype that get unwanted scaling in KNXUltimate
54
- // Map to their raw/unscaled subtype equivalent (like knx.js 0.9.x did)
55
- this.baseDptRawMap = {
56
- DPT5: "DPT5.005",
57
- DPT6: "DPT6.010",
58
- };
59
-
60
53
  // redirect log from KNXUltimate (winston-based logStream) to adapter log
61
54
  // Collapse multiline messages (stack traces) into a single line
62
55
  this.logHandler = entry => {
@@ -592,20 +585,6 @@ class openknx extends utils.Adapter {
592
585
  return duplicates.length ? message : "";
593
586
  }
594
587
 
595
- /**
596
- * Returns the effective DPT string. When rawBaseDpt is enabled and a base DPT
597
- * without subtype is given (e.g. "DPT5"), maps it to an unscaled subtype
598
- * to match knx.js 0.9.x behavior (no percentage scaling).
599
- */
600
- effectiveDpt(dpt) {
601
- if (this.config.rawBaseDpt !== false && dpt && dpt.indexOf(".") === -1) {
602
- const mapped = this.baseDptRawMap[dpt.toUpperCase()];
603
- if (mapped) {
604
- return mapped;
605
- }
606
- }
607
- return dpt;
608
- }
609
588
 
610
589
  // obj to string and date to number for iobroker from knx stack
611
590
  convertType(val) {
@@ -706,7 +685,7 @@ class openknx extends utils.Adapter {
706
685
  `Direct Link [${mode}]: ${id} changed to ${JSON.stringify(state.val)}, writing ${JSON.stringify(writeVal)} to GA ${gaData.native.address}`,
707
686
  );
708
687
  try {
709
- this.knxConnection.write(gaData.native.address, writeVal, this.effectiveDpt(gaData.native.dpt));
688
+ this.knxConnection.write(gaData.native.address, writeVal, gaData.native.dpt);
710
689
  } catch (e) {
711
690
  this.log.warn(`Direct Link write failed for ${gaData.native.address}: ${e.message}`);
712
691
  }
@@ -740,7 +719,7 @@ class openknx extends utils.Adapter {
740
719
  return "not connected to KNX bus";
741
720
  }
742
721
 
743
- const dpt = this.effectiveDpt(gaData.native.dpt);
722
+ const dpt = gaData.native.dpt;
744
723
  const ga = gaData.native.address;
745
724
  let knxVal = state.val;
746
725
  let rawVal;
@@ -926,7 +905,7 @@ class openknx extends utils.Adapter {
926
905
  if (foreignState?.val != null) {
927
906
  const gaData = this.gaList.getDataById(knxId);
928
907
  if (gaData?.native?.address && gaData?.native?.dpt) {
929
- this.knxConnection.write(gaData.native.address, foreignState.val, this.effectiveDpt(gaData.native.dpt));
908
+ this.knxConnection.write(gaData.native.address, foreignState.val, gaData.native.dpt);
930
909
  this.log.debug(`Direct Link sync: ${foreignId}=${foreignState.val} → ${gaData.native.address}`);
931
910
  }
932
911
  }
@@ -1056,7 +1035,7 @@ class openknx extends utils.Adapter {
1056
1035
  const data = this.gaList.getDataById(key);
1057
1036
  let dptConfig = null;
1058
1037
  try {
1059
- dptConfig = dptlib.resolve(this.effectiveDpt(data.native.dpt));
1038
+ dptConfig = dptlib.resolve(data.native.dpt);
1060
1039
  } catch {
1061
1040
  // Unknown DPT - will use raw mode
1062
1041
  }
@@ -1246,7 +1225,7 @@ class openknx extends utils.Adapter {
1246
1225
  this.getForeignState(data.native.linkedState, (fErr, fState) => {
1247
1226
  if (!fErr && fState && fState.val != null) {
1248
1227
  try {
1249
- this.knxConnection.respond(dest, fState.val, this.effectiveDpt(data.native.dpt));
1228
+ this.knxConnection.respond(dest, fState.val, data.native.dpt);
1250
1229
  this.log.debug(`Direct Link: Read ${dest} → ${fState.val}`);
1251
1230
  } catch (e) {
1252
1231
  this.log.error(`Direct Link: respond ${dest}: ${e.message || e}`);
@@ -1270,7 +1249,7 @@ class openknx extends utils.Adapter {
1270
1249
  this.knxConnection.respond(
1271
1250
  dest,
1272
1251
  stateval,
1273
- this.effectiveDpt(this.gaList.getDataById(id).native.dpt),
1252
+ this.gaList.getDataById(id).native.dpt,
1274
1253
  );
1275
1254
  this.log.debug(`responding to ${dest} with value ${state.val} (queue: ${this.knxConnection.commandQueue?.length || 0})`);
1276
1255
  } catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.openknx",
3
- "version": "1.1.8",
3
+ "version": "1.1.9",
4
4
  "description": "ioBroker knx Adapter",
5
5
  "author": "boellner",
6
6
  "contributors": [
@@ -37,8 +37,8 @@
37
37
  "@iobroker/adapter-core": "^3.3.2",
38
38
  "@xmldom/xmldom": "^0.9.10",
39
39
  "@zip.js/zip.js": "^2.8.26",
40
- "ipaddr.js": "^2.3.0",
41
- "knxultimate": "^5.5.3",
40
+ "ipaddr.js": "^2.4.0",
41
+ "knxultimate": "^5.5.4",
42
42
  "sax": "^1.6.0",
43
43
  "xpath": "^0.0.34"
44
44
  },