From ae214c742042380beec96b60fff631178d4a79f1 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Thu, 20 Jun 2024 16:44:43 +0200 Subject: [PATCH 1/7] fixed test cases --- dyson-utils.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dyson-utils.test.js b/dyson-utils.test.js index ed69c44..edd7cc4 100644 --- a/dyson-utils.test.js +++ b/dyson-utils.test.js @@ -51,7 +51,7 @@ describe('dyson-utils', () => { }; context('given an invalid adapter configuration', () => { - it('should throw', () => { + it('should not throw - but wait for configuration', () => { fakeAdapter.config = { temperatureUnit: '', pollInterval: '', @@ -59,7 +59,7 @@ describe('dyson-utils', () => { email: '', Password: '' }; - expect(() => dysonUtils.checkAdapterConfig(fakeAdapter)).to.throw(); + expect(() => dysonUtils.checkAdapterConfig(fakeAdapter)).to.not.throw(); }); }); From ab08f8526e4718204c4ad12517fb4122375e7cd7 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 21 Jun 2024 11:54:18 +0200 Subject: [PATCH 2/7] updated export clause --- main.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/main.js b/main.js index cf9c159..9e94050 100644 --- a/main.js +++ b/main.js @@ -1597,8 +1597,7 @@ class dysonAirPurifier extends utils.Adapter { } } -// @ts-ignore parent is a valid property on module -if (module.parent) { +if (require.main !== module) { // Export the constructor in compact mode /** * @param {Partial & {temperatureUnit: 'K' | 'C' | 'F'}} options From 9deb69e24dcc9e1964f132bf836be560f5860faf Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 21 Jun 2024 11:54:56 +0200 Subject: [PATCH 3/7] deleteUnusedFields: await getObject --- dyson-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dyson-utils.js b/dyson-utils.js index d731262..3973d3e 100644 --- a/dyson-utils.js +++ b/dyson-utils.js @@ -406,7 +406,7 @@ module.exports.deleteUnusedFields = async function (self, device) { for (const field of dysonConstants.FIELDSTODELETE) { const id = device + field; self.log.debug(`Looking for deprecated field: ${id}`); - self.getObject(id, (err, oldObj) => { + await self.getObjectAsync(id, null, (err, oldObj) => { if (!err && oldObj) { self.log.info(`Deleting deprecated field: ${id}`); self.delObject(id); From 9ce90f89dc12382d549f7574b217860fe08a6c0a Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 21 Jun 2024 11:55:14 +0200 Subject: [PATCH 4/7] dependencies got updated --- io-package.json | 2 +- package-lock.json | 18 +++++++++--------- package.json | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/io-package.json b/io-package.json index caf450d..71a7fa7 100644 --- a/io-package.json +++ b/io-package.json @@ -1,7 +1,7 @@ { "common": { "name": "dysonairpurifier", - "version": "3.2.2-beta-3", + "version": "3.2.2", "news": { "3.2.2": { "en": "Fix: Fixed polling which got broken in v3.1.10\nChg: Dependencies got updated", diff --git a/package-lock.json b/package-lock.json index 0fb16e7..fc6e98f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "flatted": "^3.3.1", "https": "^1.0.0", "lodash": "^4.17.21", - "mqtt": "^5.7.1", + "mqtt": "^5.7.2", "path": "^0.12.7" }, "devDependencies": { @@ -27,7 +27,7 @@ "@types/chai": "^4.3.16", "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^10.0.6", - "@types/node": "^20.14.5", + "@types/node": "^20.14.7", "@types/proxyquire": "^1.3.31", "@types/sinon": "^17.0.3", "@types/sinon-chai": "^3.2.12", @@ -1350,9 +1350,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.5.tgz", - "integrity": "sha512-aoRR+fJkZT2l0aGOJhuA8frnCSoNX6W7U2mpNq63+BxBIj5BQFt8rHy627kijCmm63ijdSdwvGgpUsU6MBsZZA==", + "version": "20.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.7.tgz", + "integrity": "sha512-uTr2m2IbJJucF3KUxgnGOZvYbN0QgkGyWxG6973HCpMYFy2KfcgYuIwkJQMQkt1VbBMlvWRbpshFTLxnxCZjKQ==", "dependencies": { "undici-types": "~5.26.4" } @@ -4158,9 +4158,9 @@ "dev": true }, "node_modules/mqtt": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.7.1.tgz", - "integrity": "sha512-6Gf5NH9/WxwGKkkXTyTI1lsM7S3s3zqSJe61Qp5w3B45BAOkOjM8p1GwNvgLE28+WO4d9OwrJzV8DWOMtWfy6w==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.7.2.tgz", + "integrity": "sha512-b5xIA9J/K1LTubSWKaNYYLxYIusQdip6o9/8bRWad2TelRr8xLifjQt+SnamDAwMp3O6NdvR9E8ae7VMuN02kg==", "dependencies": { "@types/readable-stream": "^4.0.5", "@types/ws": "^8.5.9", @@ -4178,7 +4178,7 @@ "rfdc": "^1.3.0", "split2": "^4.2.0", "worker-timers": "^7.1.4", - "ws": "^8.14.2" + "ws": "^8.17.1" }, "bin": { "mqtt": "build/bin/mqtt.js", diff --git a/package.json b/package.json index d17e87e..de947f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iobroker.dysonairpurifier", - "version": "3.2.2-beta-3", + "version": "3.2.2", "description": "dyson air purifiers and fans", "author": { "name": "grizzelbee", @@ -54,7 +54,7 @@ "flatted": "^3.3.1", "https": "^1.0.0", "lodash": "^4.17.21", - "mqtt": "^5.7.1", + "mqtt": "^5.7.2", "path": "^0.12.7" }, "devDependencies": { @@ -65,7 +65,7 @@ "@types/chai": "^4.3.16", "@types/chai-as-promised": "^7.1.8", "@types/mocha": "^10.0.6", - "@types/node": "^20.14.5", + "@types/node": "^20.14.7", "@types/proxyquire": "^1.3.31", "@types/sinon": "^17.0.3", "@types/sinon-chai": "^3.2.12", From 34d013ca575ee2f0aa68f9bf6ba07f90a9c840da Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 21 Jun 2024 13:45:58 +0200 Subject: [PATCH 5/7] fixed deleteUnusedFields --- dyson-utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dyson-utils.js b/dyson-utils.js index 3973d3e..a9e72f2 100644 --- a/dyson-utils.js +++ b/dyson-utils.js @@ -406,7 +406,7 @@ module.exports.deleteUnusedFields = async function (self, device) { for (const field of dysonConstants.FIELDSTODELETE) { const id = device + field; self.log.debug(`Looking for deprecated field: ${id}`); - await self.getObjectAsync(id, null, (err, oldObj) => { + self.getObject(id, null, (err, oldObj) => { if (!err && oldObj) { self.log.info(`Deleting deprecated field: ${id}`); self.delObject(id); From df79191aa6203464d79db303492035e56e27f5db Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 21 Jun 2024 13:46:54 +0200 Subject: [PATCH 6/7] devices go offline on unload --- main.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/main.js b/main.js index 9e94050..b2cefe1 100644 --- a/main.js +++ b/main.js @@ -1516,7 +1516,7 @@ class dysonAirPurifier extends utils.Adapter { * @param {string} device path to the device incl. Serial * @param {string} state state to set (online, offline, reconnecting, ...) */ - setDeviceOnlineState(device, state) { + async setDeviceOnlineState(device, state) { this.createOrExtendObject( `${device}.Online`, { @@ -1580,12 +1580,14 @@ class dysonAirPurifier extends utils.Adapter { * Exit adapter * @param {() => unknown} callback */ - onUnload(callback) { + async onUnload(callback) { try { for (const DEVICE in devices) { const thisDevice = devices[DEVICE]; clearTimeout(thisDevice.updateIntervalHandle); this.log.info(`Cleaned up timeout for ${thisDevice.Serial}.`); + await this.setDeviceOnlineState(thisDevice.Serial, 'offline'); + this.log.debug(`Set device ${thisDevice.Serial} to offline.`); // todo unsubscribe to any subscribes } this.setState('info.connection', false, true); From 963635d9bd5e21e3c122b8f6b463a276ee032f09 Mon Sep 17 00:00:00 2001 From: grizzelbee Date: Fri, 21 Jun 2024 13:47:45 +0200 Subject: [PATCH 7/7] removed old version --- io-package.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/io-package.json b/io-package.json index 71a7fa7..ce63757 100644 --- a/io-package.json +++ b/io-package.json @@ -171,19 +171,6 @@ "pl": "zależności zostały zaktualizowane\nNaprawiono wartości PM2.5, PM10, VOC, NO2\nNaprawiono indeksy PM2.5, PM10, VOC\nZaktualizowano interfejs administratora do jsonConfig", "uk": "залежності оновлено\nВиправлено значення PM2.5, PM10, VOC, NO2\nВиправлено індекси PM2.5, PM10, VOC\nОновлено інтерфейс адміністратора до jsonConfig", "zh-cn": "更新了依赖项\n修复了 PM2.5、PM10、VOC、NO2 值\n修复了 PM2.5、PM10、VOC 索引\n将管理 UI 更新为 jsonConfig" - }, - "3.0.0": { - "en": "\nUpd: dependencies got updated \nNew: Added HCHO-Index \nBREAKING CHANGES: \nReplaced values in field pm25 with values from pm25r and calculating them accordingly to the dyson App \nReplaced values in field pm10 with values from pm10r and calculating them accordingly to the dyson App \nReplaced values in field hcho with values from hchr and calculating them accordingly to the dyson App \nFields pm25r and pm10r are now deprecated and will be removed", - "de": "\nAktualisiert: Abhängigkeiten wurden aktualisiert. \nNeu: HCHO-Index hinzugefügt Die Dyson-App \nWerte im Feld hcho durch Werte aus hchr ersetzt und entsprechend in der Dyson-App berechnet \nDie Felder pm25r und pm10r sind jetzt veraltet und werden entfernt", - "ru": "\nОбновление: обновлены зависимости \nНовое: добавлен индекс HCHO \nСЕРЬЕЗНЫЕ ИЗМЕНЕНИЯ: \nЗаменены значения в поле pm25 на значения из pm25r и расчет их в соответствии с приложением Dyson \nЗаменены значения в поле pm10 значениями из pm10r и расчет их в соответствии с приложение Dyson \nЗаменены значения в поле hcho значениями из hchr и расчет их в соответствии с приложением Dyson \nПоля pm25r и pm10r устарели и будут удалены.", - "pt": "\nAtualização: dependências foram atualizadas \nNovo: Índice HCHO adicionado \nALTERAÇÕES ÚLTIMAS: \nValores substituídos no campo pm25 por valores de pm25r e cálculo deles de acordo com o aplicativo dyson \nValores substituídos no campo pm10 por valores de pm10r e cálculo deles de acordo com o aplicativo dyson \nValores substituídos no campo hcho por valores de hchr e cálculo deles de acordo com o aplicativo dyson \nOs campos pm25r e pm10r agora estão obsoletos e serão removidos", - "nl": "\nUpd: afhankelijkheden zijn bijgewerkt \nNieuw: HCHO-index toegevoegd \nBREAKING CHANGES: \nWaarden in veld pm25 vervangen door waarden uit pm25r en deze overeenkomstig berekend met de dyson-app \nWaarden in veld pm10 vervangen door waarden uit pm10r en deze overeenkomstig berekend de dyson-app \nWaarden in veld hcho vervangen door waarden uit hchr en deze overeenkomstig berekend met de dyson-app \nVelden pm25r en pm10r zijn nu verouderd en worden verwijderd", - "fr": "\nMise à jour : les dépendances ont été mises à jour \nNouveau : ajout de l'index HCHO \nCHANGEMENTS RUPTURE : \nRemplacement des valeurs dans le champ pm25 par les valeurs de pm25r et calcul de celles-ci en fonction de l'application Dyson \nRemplacement des valeurs dans le champ pm10 par les valeurs de pm10r et calcul de celles-ci en conséquence l'application dyson \nRemplacement des valeurs dans le champ hcho par les valeurs de hchr et calcul de celles-ci en conséquence selon l'application dyson \nLes champs pm25r et pm10r sont désormais obsolètes et seront supprimés", - "it": "\nAggiornamento: le dipendenze sono state aggiornate \nNovità: aggiunto indice HCHO \nMODIFICHE ROTANTI: \nSostituiti i valori nel campo pm25 con valori da pm25r e calcolandoli in base all'app Dyson \nSostituiti i valori nel campo pm10 con valori da pm10r e calcolandoli in base a l'app Dyson \nSostituiti i valori nel campo hcho con i valori di hchr e calcolandoli di conseguenza all'app Dyson \nI campi pm25r e pm10r sono ora deprecati e verranno rimossi", - "es": "\nActualización: se actualizaron las dependencias \nNuevo: Índice HCHO agregado \nCAMBIOS IMPORTANTES: \nSe reemplazaron los valores en el campo pm25 con valores de pm25r y se calcularon de acuerdo con la aplicación Dyson \nSe reemplazaron los valores en el campo pm10 con valores de pm10r y se calcularon de acuerdo con la aplicación Dyson \nSe reemplazaron los valores en el campo hcho con valores de hchr y se calcularon de acuerdo con la aplicación Dyson \nLos campos pm25r y pm10r ahora están obsoletos y se eliminarán", - "pl": "\nAktualizacja: zaktualizowano zależności \nNowość: Dodano HCHO-Index \nPIERWSZE ZMIANY: \nZastąpiono wartości w polu pm25 wartościami z pm25r i przeliczono je zgodnie z aplikacją dyson \nZastąpiono wartości w polu pm10 wartościami z pm10r i przeliczono je odpowiednio do aplikacja dyson \nZastąpiono wartości w polu hcho wartościami z hchr i przeliczono je zgodnie z aplikacją dyson \nPola pm25r i pm10r są obecnie przestarzałe i zostaną usunięte", - "uk": "\nОновлено: оновлено залежності \nНове: додано HCHO-індекс \nОСНОВНІ ЗМІНИ: \nЗамінено значення в полі pm25 на значення з pm25r і обчислення їх відповідно до програми dyson \nЗамінено значення в полі pm10 на значення з pm10r і обчислення їх відповідно до програма dyson \nЗамінено значення в полі hcho на значення з hchr і обчислення їх відповідно до програми dyson \nПоля pm25r і pm10r тепер не підтримуються та будуть видалені", - "zh-cn": "\n更新:依赖项已更新 \n新功能:添加了 HCHO 索引 \n重大更改: \n将字段 pm25 中的值替换为 pm25r 中的值,并根据 Dyson 应用程序相应地计算它们 \n将字段 pm10 中的值替换为 pm10r 中的值,并相应地计算它们Dyson 应用程序 \n将字段 hcho 中的值替换为 hchr 中的值,并根据 Dyson 应用程序相应地计算它们 \n字段 pm25r 和 pm10r 现已弃用并将被删除" } }, "titleLang": { @@ -251,11 +238,6 @@ "js-controller": ">=5.0.16" } ], - "plugins": { - "sentry": { - "dsn": "https://1016f555431c4acfb16b2481019aa1aa@o505019.ingest.sentry.io/5735771" - } - }, "messages": [ { "condition": {