From a33d690189f66bb10735f22f594bd2c9ac7fd24e Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Sun, 22 Sep 2024 17:07:43 +0200 Subject: [PATCH 01/18] Update admin.js --- admin/admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/admin.js b/admin/admin.js index a3e30449..d1355f7b 100644 --- a/admin/admin.js +++ b/admin/admin.js @@ -1105,7 +1105,7 @@ function showNetworkMap(devices, map) { } const createNode = function (dev, mapEntry) { - if (dev.common && dev.common.type == 'group') return undefined; + if (dev.common && (dev.common.type == 'group' || dev.common.deactivated)) return undefined; const extInfo = (mapEntry && mapEntry.networkAddress) ? `\n (nwkAddr: 0x${mapEntry.networkAddress.toString(16)} | ${mapEntry.networkAddress})` : ''; const node = { id: dev._id, From bfc1037c99af027815acea6757854490aafd15c3 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 24 Sep 2024 22:17:21 +0200 Subject: [PATCH 02/18] Option: Physics Offer the option to disable physics on the network map --- admin/admin.js | 35 +++++++++++++++++++++-------------- admin/index_m.html | 6 ++++++ admin/tab_m.html | 8 +++++++- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/admin/admin.js b/admin/admin.js index d1355f7b..4f4dedd4 100644 --- a/admin/admin.js +++ b/admin/admin.js @@ -29,6 +29,22 @@ let devices = [], shuffleInstance; const updateCardInterval = setInterval(updateCardTimer, 6000); +const networkOptions = { + autoResize: true, + height: '100%', + width: '100%', + nodes: { + shape: 'box' + }, + layout: { + improvedLayout: true, + }, + physics: { + nabled: true, + } +}; + + const savedSettings = [ 'port', 'panID', 'channel', 'disableLed', 'countDown', 'groups', 'extPanID', 'precfgkey', 'transmitPower', 'adapterType', 'debugHerdsman', 'disableBackup', 'disablePing', 'external', 'startWithInconsistent', 'warnOnDeviceAnnouncement', 'baudRate', 'flowCTRL' @@ -1099,7 +1115,7 @@ function showNetworkMap(devices, map) { const edges = []; if (map.lqis == undefined || map.lqis.length === 0) { // first init - $('#filterParent, #filterSibl, #filterPrvChild, #filterMesh').change(function () { + $('#filterParent, #filterSibl, #filterPrvChild, #filterMesh, #physicsOn').change(function () { updateMapFilter(); }); } @@ -1296,19 +1312,8 @@ function showNetworkMap(devices, map) { nodes: nodesArray, edges: mapEdges }; - const options = { - autoResize: true, - height: '100%', - width: '100%', - nodes: { - shape: 'box' - }, - layout: { - improvedLayout: true, - } - }; - - network = new vis.Network(container, data, options); + + network = new vis.Network(container, data, networkOptions); const onMapSelect = function (event) { // workaround for https://github.com/almende/vis/issues/4112 @@ -1406,6 +1411,8 @@ function updateMapFilter() { const showSibl = $('#filterSibl').is(':checked'); const showPrvChild = $('#filterPrvChild').is(':checked'); const invisColor = $('#filterMesh').is(':checked') ? 0.2 : 0; + networkOptions.physics.enabled = $('#physicsOn').is(':checked'); + network.setOptions(networkOptions); mapEdges.forEach((edge) => { if (((edge.relationship === 0 || edge.relationship === 1) && showParent) || (edge.relationship === 2 && showSibl) diff --git a/admin/index_m.html b/admin/index_m.html index 5bbfffe2..8962f9aa 100644 --- a/admin/index_m.html +++ b/admin/index_m.html @@ -1270,6 +1270,12 @@

Map view config

Mesh +
+ +

Device map info

diff --git a/admin/tab_m.html b/admin/tab_m.html index f717e88f..3467f2cf 100644 --- a/admin/tab_m.html +++ b/admin/tab_m.html @@ -963,7 +963,13 @@

Map view config

Mesh
- +
+ +
+

Device map info

From 3ac278daceb5f0b296488450d48c799ed7662353 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 24 Sep 2024 22:40:49 +0200 Subject: [PATCH 03/18] Update main.js Additonal logging - toZigbee empty or undefined --- main.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/main.js b/main.js index 254ffced..4c3fcbed 100644 --- a/main.js +++ b/main.js @@ -691,13 +691,20 @@ class Zigbee extends utils.Adapter { } return; } - const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); - if (!converter) { - this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `); - this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `); - return; - } - + if (mappedModel.toZigbee) { + const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); + if (!converter) { + this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `); + this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `); + return; + } + } + else { + this.log.error(`toZigbee is not defined for '${model}' ('${JSON.stringify(mappedModel.toZigbee)}') `); + this.sendError(`toZigbee is not defined for '${model}' ('${JSON.stringify(mappedModel.toZigbee)}') `); + + } + const preparedValue = (stateDesc.setter) ? stateDesc.setter(value, options) : value; const preparedOptions = (stateDesc.setterOpt) ? stateDesc.setterOpt(value, options) : {}; From 7fa823392602b84b0c3d570d8a502d540e242528 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 24 Sep 2024 23:06:22 +0200 Subject: [PATCH 04/18] Update main.js fix bug --- main.js | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/main.js b/main.js index 4c3fcbed..939cec62 100644 --- a/main.js +++ b/main.js @@ -625,12 +625,18 @@ class Zigbee extends utils.Adapter { this.log.debug(`entity: ${deviceId} ${model} ${safeJsonStringify(entity)}`); const mappedModel = entity.mapped; - + if (!mappedModel) { this.log.debug(`No mapped model for ${model}`); return; } + if (!mappedModel.toZigbee) + { + this.log.error(`No toZigbee in mapped model for ${model}`); + return; + } + stateList.forEach(async changedState => { const stateDesc = changedState.stateDesc; const value = changedState.value; @@ -691,18 +697,11 @@ class Zigbee extends utils.Adapter { } return; } - if (mappedModel.toZigbee) { - const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); - if (!converter) { - this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `); - this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `); - return; - } - } - else { - this.log.error(`toZigbee is not defined for '${model}' ('${JSON.stringify(mappedModel.toZigbee)}') `); - this.sendError(`toZigbee is not defined for '${model}' ('${JSON.stringify(mappedModel.toZigbee)}') `); - + const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); + if (!converter) { + this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `); + this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `); + return; } const preparedValue = (stateDesc.setter) ? stateDesc.setter(value, options) : value; From 646d83d2e390795bc7bf2ee4318bbeea948ac57d Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 24 Sep 2024 23:18:43 +0200 Subject: [PATCH 05/18] Update admin.js Bugfix --- admin/admin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/admin/admin.js b/admin/admin.js index 4f4dedd4..8d772e27 100644 --- a/admin/admin.js +++ b/admin/admin.js @@ -40,7 +40,7 @@ const networkOptions = { improvedLayout: true, }, physics: { - nabled: true, + enabled: true, } }; From ebba6e3f2aa3d704d4e8996cb8bdcf9066d27c9e Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Wed, 25 Sep 2024 14:27:07 +0200 Subject: [PATCH 06/18] Update main.js keycheck --- main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.js b/main.js index 939cec62..1ac2cd85 100644 --- a/main.js +++ b/main.js @@ -697,7 +697,7 @@ class Zigbee extends utils.Adapter { } return; } - const converter = mappedModel.toZigbee.find(c => c && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); + const converter = mappedModel.toZigbee.find(c => c && c.key && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); if (!converter) { this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `); this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `); From 005f82c268b9b1cee72cbe0ead1c92da0c1e9a8a Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:54:42 +0200 Subject: [PATCH 07/18] Update main.js special logging --- main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/main.js b/main.js index 1ac2cd85..a695f173 100644 --- a/main.js +++ b/main.js @@ -636,6 +636,8 @@ class Zigbee extends utils.Adapter { this.log.error(`No toZigbee in mapped model for ${model}`); return; } + + this.log.warn('Mapped Model.toZigbee is ' + JSON.stringify(mappedModel.toZigbee)); stateList.forEach(async changedState => { const stateDesc = changedState.stateDesc; From bb8c5d24fa05e7b4fd8e5c39f9482515366a5b3c Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Thu, 26 Sep 2024 17:26:01 +0200 Subject: [PATCH 08/18] Update main.js Extra logging new method of selecting converter --- main.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/main.js b/main.js index a695f173..a60d7756 100644 --- a/main.js +++ b/main.js @@ -637,7 +637,7 @@ class Zigbee extends utils.Adapter { return; } - this.log.warn('Mapped Model.toZigbee is ' + JSON.stringify(mappedModel.toZigbee)); +// this.log.error('Mapped Model.toZigbee is ' + JSON.stringify(mappedModel.toZigbee)); stateList.forEach(async changedState => { const stateDesc = changedState.stateDesc; @@ -699,8 +699,30 @@ class Zigbee extends utils.Adapter { } return; } - const converter = mappedModel.toZigbee.find(c => c && c.key && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); - if (!converter) { + + let converter = undefined; + for (const c of mappedModel.toZigbee) { + + if (!c.hasOwnProperty('convertSet')) continue; + this.log.error(`Type of toZigbee is '${typeof c}', Contains key ${c.hasOwnProperty('key')}, Contains ConvertSet ${c.hasOwnProperty('convertSet')}`) + if (!c.hasOwnProperty('key') && c.hasOwnProperty('convertSet') && converter === undefined) + { + converter = c; + this.log.error('setting converter to keyless converter') + continue; + } + if (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)) + { + this.log.error(`${(converter===undefined?'Setting':'Overriding')}' converter to converter with key(s)'${JSON.stringify(c.key)}}`) + converter = c; + } + + } +/* + if (!mappedModel.toZigbee[0].hasOwnProperty('key') && mappedModel.toZigbee[0].hasOwnProperty('convertSet')) converter = mappedModel.toZigbee[0]; + converter = mappedModel.toZigbee.find(c => c && c.hasOwnProperty('key') && (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id))); +*/ + if (converter === undefined) { this.log.error(`No converter available for '${model}' with key '${stateDesc.id}' `); this.sendError(`No converter available for '${model}' with key '${stateDesc.id}' `); return; From 0b00872ebee7bceaa432d3cacc47aacf8948739f Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Thu, 26 Sep 2024 17:31:43 +0200 Subject: [PATCH 09/18] Update main.js bugfix --- main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.js b/main.js index a60d7756..7fbb4301 100644 --- a/main.js +++ b/main.js @@ -704,7 +704,7 @@ class Zigbee extends utils.Adapter { for (const c of mappedModel.toZigbee) { if (!c.hasOwnProperty('convertSet')) continue; - this.log.error(`Type of toZigbee is '${typeof c}', Contains key ${c.hasOwnProperty('key')}, Contains ConvertSet ${c.hasOwnProperty('convertSet')}`) + this.log.error(`Type of toZigbee is '${typeof c}', Contains key ${(c.hasOwnProperty('key')?JSON.stringify(c.key):'false ')}`) if (!c.hasOwnProperty('key') && c.hasOwnProperty('convertSet') && converter === undefined) { converter = c; From 31f143b96149c5bfc31b5e28c506b6dcde7447e1 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Fri, 27 Sep 2024 10:18:30 +0200 Subject: [PATCH 10/18] 1.10.10 - new herdsman - new herdsman-converters - new version number --- README.md | 9 ++++++++- io-package.json | 13 +++++++++++++ main.js | 6 ++---- package-lock.json | 4 ++-- package.json | 6 +++--- 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6133f79e..475df14b 100644 --- a/README.md +++ b/README.md @@ -133,8 +133,15 @@ You can thank the authors by these links: ----------------------------------------------------------------------------------------------------- ## Changelog -### UNRELEASED +### ### 1.10.10 (2024-09-27) * (lebrinkma) fix linter errors +* (asgothian) disable map display for deactivated devices +* (asgothian) new option on map: disable physics interaction +* (asgothian) new zigbee-herdsman-converters 20.18.0 +* (asgothian) new zigbee-herdsman 2.1.1 +* (asgothian) Allow use of keyless converters (used for TuYa and compatible devices in zigbee-herdsman-converters +* (asgothian) add button to read network config from nvbackup.json (if present) +* (arteck) swap from request to axios ### 1.10.9 (2024-09-05) * (arteck) typo admin settings diff --git a/io-package.json b/io-package.json index 0bf8e1bd..eff9a372 100644 --- a/io-package.json +++ b/io-package.json @@ -3,6 +3,19 @@ "name": "zigbee", "version": "1.10.9", "news": { + "1.10.9": { + "en": "core update\ndependency update", + "de": "kern-update\naktualisierung der abhängigkeit", + "ru": "обновление\nобновление", + "pt": "atualização do núcleo\natualização de dependência", + "nl": "kernupdate\nafhankelijkheidsupdate", + "fr": "mise à jour de base\nmise à jour de la dépendance", + "it": "aggiornamento del core\naggiornamento della dipendenza", + "es": "actualización básica\nactualización de la dependencia", + "pl": "podstawowa aktualizacja\naktualizacja zależności", + "uk": "оновлення ядра\nоновлення залежності", + "zh-cn": "核心更新\n依赖性更新" + }, "1.10.9": { "en": "typo admin settings\neslint config", "de": "typo admin einstellungen\neslint config", diff --git a/main.js b/main.js index 7fbb4301..b00aeb00 100644 --- a/main.js +++ b/main.js @@ -637,8 +637,6 @@ class Zigbee extends utils.Adapter { return; } -// this.log.error('Mapped Model.toZigbee is ' + JSON.stringify(mappedModel.toZigbee)); - stateList.forEach(async changedState => { const stateDesc = changedState.stateDesc; const value = changedState.value; @@ -708,12 +706,12 @@ class Zigbee extends utils.Adapter { if (!c.hasOwnProperty('key') && c.hasOwnProperty('convertSet') && converter === undefined) { converter = c; - this.log.error('setting converter to keyless converter') + this.log.debug('setting converter to keyless converter') continue; } if (c.key.includes(stateDesc.prop) || c.key.includes(stateDesc.setattr) || c.key.includes(stateDesc.id)) { - this.log.error(`${(converter===undefined?'Setting':'Overriding')}' converter to converter with key(s)'${JSON.stringify(c.key)}}`) + this.log.debug(`${(converter===undefined?'Setting':'Overriding')}' converter to converter with key(s)'${JSON.stringify(c.key)}}`) converter = c; } diff --git a/package-lock.json b/package-lock.json index 059386ad..601dd29a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,8 +16,8 @@ "tar": "^7.4.3", "typescript": "^5.5.3", "uri-js": "^4.4.1", - "zigbee-herdsman": "0.56.2", - "zigbee-herdsman-converters": "20.2.0" + "zigbee-herdsman": "2.1.1", + "zigbee-herdsman-converters": "20.18.0" }, "devDependencies": { "@alcalzone/release-script": "^3.7.0", diff --git a/package.json b/package.json index 7bad874a..edb486ab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iobroker.zigbee", - "version": "1.10.9", + "version": "1.10.10", "author": { "name": "Kirov Ilya", "email": "kirovilya@gmail.com" @@ -28,8 +28,8 @@ "ajv": "^8.16.0", "uri-js": "^4.4.1", "typescript": "^5.5.3", - "zigbee-herdsman": "0.56.2", - "zigbee-herdsman-converters": "20.2.0" + "zigbee-herdsman": "2.1.1", + "zigbee-herdsman-converters": "20.18.0" }, "description": "Zigbee devices", "devDependencies": { From 5069fb527b9599d658aa606eff293a8c117f351f Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Fri, 27 Sep 2024 10:23:18 +0200 Subject: [PATCH 11/18] Update main.js bugfix --- main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.js b/main.js index b00aeb00..63212030 100644 --- a/main.js +++ b/main.js @@ -702,7 +702,7 @@ class Zigbee extends utils.Adapter { for (const c of mappedModel.toZigbee) { if (!c.hasOwnProperty('convertSet')) continue; - this.log.error(`Type of toZigbee is '${typeof c}', Contains key ${(c.hasOwnProperty('key')?JSON.stringify(c.key):'false ')}`) + this.log.debug(`Type of toZigbee is '${typeof c}', Contains key ${(c.hasOwnProperty('key')?JSON.stringify(c.key):'false ')}`) if (!c.hasOwnProperty('key') && c.hasOwnProperty('convertSet') && converter === undefined) { converter = c; From fac0f61207e08efbcd3054c72ea05df045539a20 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 15 Oct 2024 10:23:24 +0200 Subject: [PATCH 12/18] Update package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 601dd29a..ca9f0643 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "iobroker.zigbee", - "version": "1.10.9", + "version": "1.10.10", "lockfileVersion": 3, "requires": true, "packages": { From 58316dede0939ae4a8cb63ad357c65b8800eaf0c Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 15 Oct 2024 10:24:15 +0200 Subject: [PATCH 13/18] Update package-lock.json bump converters --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index ca9f0643..4b546fc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "typescript": "^5.5.3", "uri-js": "^4.4.1", "zigbee-herdsman": "2.1.1", - "zigbee-herdsman-converters": "20.18.0" + "zigbee-herdsman-converters": "20.28.0" }, "devDependencies": { "@alcalzone/release-script": "^3.7.0", From 93874eed6af43f58390d703d1c00668bd24a6742 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 15 Oct 2024 10:24:42 +0200 Subject: [PATCH 14/18] Update package.json bump converters --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index edb486ab..be9b40db 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "uri-js": "^4.4.1", "typescript": "^5.5.3", "zigbee-herdsman": "2.1.1", - "zigbee-herdsman-converters": "20.18.0" + "zigbee-herdsman-converters": "20.28.0" }, "description": "Zigbee devices", "devDependencies": { From aedc422c480cb06d884af5108f3fe6c4660e1cec Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 15 Oct 2024 10:25:34 +0200 Subject: [PATCH 15/18] Update io-package.json --- io-package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io-package.json b/io-package.json index eff9a372..6e4348ec 100644 --- a/io-package.json +++ b/io-package.json @@ -1,7 +1,7 @@ { "common": { "name": "zigbee", - "version": "1.10.9", + "version": "1.10.10", "news": { "1.10.9": { "en": "core update\ndependency update", From 494f552d1013ecf2853cdb755edec5af54a4070e Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Tue, 15 Oct 2024 10:25:57 +0200 Subject: [PATCH 16/18] Update io-package.json --- io-package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/io-package.json b/io-package.json index 6e4348ec..ed921871 100644 --- a/io-package.json +++ b/io-package.json @@ -3,7 +3,7 @@ "name": "zigbee", "version": "1.10.10", "news": { - "1.10.9": { + "1.10.10": { "en": "core update\ndependency update", "de": "kern-update\naktualisierung der abhängigkeit", "ru": "обновление\nобновление", From 72e2cd8cd1003b99dfd6c65d0a64e48e2af42288 Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:27:52 +0200 Subject: [PATCH 17/18] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 475df14b..a4098de5 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,6 @@ You can thank the authors by these links: * (asgothian) new zigbee-herdsman-converters 20.18.0 * (asgothian) new zigbee-herdsman 2.1.1 * (asgothian) Allow use of keyless converters (used for TuYa and compatible devices in zigbee-herdsman-converters -* (asgothian) add button to read network config from nvbackup.json (if present) * (arteck) swap from request to axios ### 1.10.9 (2024-09-05) From 9b2c8fad676998f7fd199f1fc7ef450995d9c42e Mon Sep 17 00:00:00 2001 From: asgothian <45667167+asgothian@users.noreply.github.com> Date: Thu, 17 Oct 2024 16:29:54 +0200 Subject: [PATCH 18/18] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a4098de5..ee2da6cb 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ You can thank the authors by these links: * (lebrinkma) fix linter errors * (asgothian) disable map display for deactivated devices * (asgothian) new option on map: disable physics interaction -* (asgothian) new zigbee-herdsman-converters 20.18.0 +* (asgothian) new zigbee-herdsman-converters 20.28.0 * (asgothian) new zigbee-herdsman 2.1.1 * (asgothian) Allow use of keyless converters (used for TuYa and compatible devices in zigbee-herdsman-converters * (arteck) swap from request to axios