iobroker.panasonic-comfort-cloud 2.3.0 → 3.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.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 marc <marc@lammers.dev>
3
+ Copyright (c) 2024 marc <marc@lammers.dev>
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
@@ -24,6 +24,12 @@ With the method used, only one client can be logged on with the account at a tim
24
24
  It is recommended that a second account, for which the devices have been shared, is used.
25
25
 
26
26
  ## Changelog
27
+ ### 3.0.0 (2024-06-29)
28
+
29
+ * Added option to deactivate the automatic refresh.
30
+ * Added state to manual refresh device infos.
31
+ * Updated client version for OAuth support.
32
+
27
33
  ### 2.3.0 (2023-12-21)
28
34
 
29
35
  * Updated packages
@@ -131,7 +137,7 @@ It is recommended that a second account, for which the devices have been shared,
131
137
 
132
138
  MIT License
133
139
 
134
- Copyright (c) 2023 marc <marc@lammers.dev>
140
+ Copyright (c) 2024 marc <marc@lammers.dev>
135
141
 
136
142
  Permission is hereby granted, free of charge, to any person obtaining a copy
137
143
  of this software and associated documentation files (the "Software"), to deal
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Adaptereinstellungen für Panasonic-Comfort-Cloud",
6
6
  "password": "Passwort",
7
7
  "refreshInterval": "Aktualisierungsintervall (Minuten)",
8
- "username": "Nutzername"
8
+ "username": "Nutzername",
9
+ "automaticRefreshEnabled": "Automatische Aktualisierung aktiv",
10
+ "adapterCommands": "Befehle zur Steuerung des Adapters",
11
+ "manualRefresh": "Gerätehandbuch aktualisieren"
9
12
  }
@@ -5,5 +5,6 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Adapter settings for panasonic-comfort-cloud",
6
6
  "password": "Password",
7
7
  "refreshInterval": "Refresh interval (minutes)",
8
- "username": "Username"
8
+ "username": "Username",
9
+ "automaticRefreshEnabled": "Automatic refresh enabled"
9
10
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Configuración del adaptador para panasonic-comfort-cloud",
6
6
  "password": "Contraseña",
7
7
  "refreshInterval": "Intervalo de actualización (minutos)",
8
- "username": "Nombre de usuario"
8
+ "username": "Nombre de usuario",
9
+ "automaticRefreshEnabled": "Actualización automática habilitada",
10
+ "adapterCommands": "Comandos para controlar el adaptador.",
11
+ "manualRefresh": "Actualizar manual de dispositivos"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Paramètres de l'adaptateur pour Panasonic-Comfort-Cloud",
6
6
  "password": "Mot de passe",
7
7
  "refreshInterval": "Intervalle d'actualisation (minutes)",
8
- "username": "Nom d'utilisateur"
8
+ "username": "Nom d'utilisateur",
9
+ "automaticRefreshEnabled": "Actualisation automatique activée",
10
+ "adapterCommands": "Commandes pour contrôler l'adaptateur",
11
+ "manualRefresh": "Actualiser le manuel des appareils"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Impostazioni dell'adattatore per panasonic-comfort-cloud",
6
6
  "password": "Parola d'ordine",
7
7
  "refreshInterval": "Intervallo di aggiornamento (minuti)",
8
- "username": "Nome utente"
8
+ "username": "Nome utente",
9
+ "automaticRefreshEnabled": "Aggiornamento automatico abilitato",
10
+ "adapterCommands": "Comandi per controllare l'adattatore",
11
+ "manualRefresh": "Aggiorna il manuale dei dispositivi"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Adapterinstellingen voor panasonic-comfort-cloud",
6
6
  "password": "Wachtwoord",
7
7
  "refreshInterval": "Vernieuwingsinterval (minuten)",
8
- "username": "Gebruikersnaam"
8
+ "username": "Gebruikersnaam",
9
+ "automaticRefreshEnabled": "Automatisch vernieuwen ingeschakeld",
10
+ "adapterCommands": "Commando's om de adapter te besturen",
11
+ "manualRefresh": "Handleiding apparaten vernieuwen"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Ustawienia adaptera dla panasonic-comfort-cloud",
6
6
  "password": "Hasło",
7
7
  "refreshInterval": "Interwał odświeżania (minuty)",
8
- "username": "Nazwa użytkownika"
8
+ "username": "Nazwa użytkownika",
9
+ "automaticRefreshEnabled": "Włączono automatyczne odświeżanie",
10
+ "adapterCommands": "Polecenia sterujące adapterem",
11
+ "manualRefresh": "Odśwież instrukcję obsługi urządzeń"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Configurações do adaptador para panasonic-comfort-cloud",
6
6
  "password": "Senha",
7
7
  "refreshInterval": "Intervalo de atualização (minutos)",
8
- "username": "Nome de usuário"
8
+ "username": "Nome de usuário",
9
+ "automaticRefreshEnabled": "Atualização automática ativada",
10
+ "adapterCommands": "Comandos para controlar o adaptador",
11
+ "manualRefresh": "Atualizar manual de dispositivos"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Настройки адаптера для panasonic-comfort-cloud",
6
6
  "password": "Пароль",
7
7
  "refreshInterval": "Интервал обновления (минуты)",
8
- "username": "Имя пользователя"
8
+ "username": "Имя пользователя",
9
+ "automaticRefreshEnabled": "Автоматическое обновление включено",
10
+ "adapterCommands": "Команды для управления адаптером",
11
+ "manualRefresh": "Обновить руководство по устройствам"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "Налаштування адаптера для panasonic-comfort-cloud",
6
6
  "password": "Пароль",
7
7
  "refreshInterval": "Інтервал оновлення (хв.)",
8
- "username": "Ім'я користувача"
8
+ "username": "Ім'я користувача",
9
+ "automaticRefreshEnabled": "Автоматичне оновлення ввімкнено",
10
+ "adapterCommands": "Команди для керування адаптером",
11
+ "manualRefresh": "Оновити посібник з пристроїв"
9
12
  }
@@ -5,5 +5,8 @@
5
5
  "panasonic-comfort-cloud adapter settings": "panasonic-comfort-cloud 的适配器设置",
6
6
  "password": "密码",
7
7
  "refreshInterval": "刷新间隔(分钟)",
8
- "username": "用户名"
8
+ "username": "用户名",
9
+ "automaticRefreshEnabled": "自动刷新启用",
10
+ "adapterCommands": "控制适配器的命令",
11
+ "manualRefresh": "刷新设备手册"
9
12
  }
@@ -6,19 +6,25 @@
6
6
  "type": "text",
7
7
  "label": "username",
8
8
  "sm": 12,
9
- "md": 4
9
+ "md": 3
10
10
  },
11
11
  "password": {
12
12
  "type": "password",
13
13
  "label": "password",
14
14
  "sm": 12,
15
- "md": 4
15
+ "md": 3
16
16
  },
17
17
  "pollinterval": {
18
18
  "type": "number",
19
19
  "label": "refreshInterval",
20
20
  "sm": 12,
21
- "md": 4
21
+ "md": 3
22
+ },
23
+ "automaticRefreshEnabled": {
24
+ "type": "checkbox",
25
+ "label": "automaticRefreshEnabled",
26
+ "sm": 12,
27
+ "md": 3
22
28
  },
23
29
  "appVersion": {
24
30
  "type": "text",
package/build/main.js CHANGED
@@ -37,7 +37,7 @@ class PanasonicComfortCloud extends utils.Adapter {
37
37
  this.on("unload", this.onUnload.bind(this));
38
38
  }
39
39
  async onReady() {
40
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
40
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
41
41
  this.refreshIntervalInMinutes = (_b = (_a = this.config) == null ? void 0 : _a.refreshInterval) != null ? _b : REFRESH_INTERVAL_IN_MINUTES_DEFAULT;
42
42
  this.subscribeStates("*");
43
43
  this.setState("info.connection", false, true);
@@ -71,7 +71,10 @@ class PanasonicComfortCloud extends utils.Adapter {
71
71
  this.log.debug("Create devices.");
72
72
  const groups = await this.comfortCloudClient.getGroups();
73
73
  await this.createDevices(groups);
74
- this.setupRefreshTimeout();
74
+ this.log.debug(`Automativ refresh is set to ${(_n = this.config) == null ? void 0 : _n.automaticRefreshEnabled}.`);
75
+ if ((_o = this.config) == null ? void 0 : _o.automaticRefreshEnabled) {
76
+ this.setupRefreshTimeout();
77
+ }
75
78
  } catch (error) {
76
79
  await this.handleClientError(error);
77
80
  }
@@ -456,7 +459,22 @@ class PanasonicComfortCloud extends utils.Adapter {
456
459
  }
457
460
  }
458
461
  async onStateChange(id, state) {
459
- if (state) {
462
+ if (!state || state.ack) {
463
+ return;
464
+ }
465
+ if (id.includes(".commands.")) {
466
+ const elements = id.split(".");
467
+ const stateName = elements[elements.length - 1];
468
+ if (stateName == "manualRefresh" && state.val) {
469
+ try {
470
+ await this.refreshDevices();
471
+ await this.setStateAsync(id, state, true);
472
+ } catch (error) {
473
+ await this.handleClientError(error);
474
+ }
475
+ await this.setStateAsync(id, false, true);
476
+ }
477
+ } else if (!id.includes(".info.")) {
460
478
  const elements = id.split(".");
461
479
  const deviceName = elements[elements.length - 2];
462
480
  const stateName = elements[elements.length - 1];
@@ -468,8 +486,6 @@ class PanasonicComfortCloud extends utils.Adapter {
468
486
  this.log.info(
469
487
  `state ${id} changed: ${state.val} (ack = ${state.ack})`
470
488
  );
471
- } else {
472
- this.log.info(`state ${id} deleted`);
473
489
  }
474
490
  }
475
491
  async getCurrentAppVersion() {
package/build/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["/*\n * Created with @iobroker/create-adapter v1.16.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\n// you need to create an adapter\nimport * as utils from '@iobroker/adapter-core'\n\nimport {\n Device,\n Group,\n ComfortCloudClient,\n Parameters,\n Power,\n AirSwingLR,\n AirSwingUD,\n FanAutoMode,\n EcoMode,\n OperationMode,\n FanSpeed,\n TokenExpiredError,\n ServiceError,\n NanoeMode\n} from 'panasonic-comfort-cloud-client'\n\nimport * as _ from 'lodash'\nimport axios from 'axios'\n\nconst REFRESH_INTERVAL_IN_MINUTES_DEFAULT = 5\n\nclass PanasonicComfortCloud extends utils.Adapter {\n\n private comfortCloudClient: ComfortCloudClient = new ComfortCloudClient()\n\n private refreshTimeout: NodeJS.Timeout | undefined\n private refreshIntervalInMinutes = REFRESH_INTERVAL_IN_MINUTES_DEFAULT\n\n private readonlyStateNames: string[] = [] \n\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'panasonic-comfort-cloud',\n })\n\n this.on('ready', this.onReady.bind(this))\n this.on('objectChange', this.onObjectChange.bind(this))\n this.on('stateChange', this.onStateChange.bind(this))\n // this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this))\n }\n\n /**\n * Is called when databases are connected and adapter received configuration.\n */\n private async onReady(): Promise<void> {\n this.refreshIntervalInMinutes = this.config?.refreshInterval ?? REFRESH_INTERVAL_IN_MINUTES_DEFAULT\n this.subscribeStates('*')\n\n this.setState('info.connection', false, true);\n\n const loadedAppVersion = await this.getCurrentAppVersion()\n this.log.info(`Loaded app version from GitHub: ${loadedAppVersion}`)\n if(loadedAppVersion && this.trimAll(this.config?.appVersionFromGithub) != this.trimAll(loadedAppVersion)) {\n this.updateConfig({ appVersionFromGithub: this.trimAll(loadedAppVersion), password: this.encrypt(this.config?.password) }) \n return\n }\n\n if(!this.config?.username || !this.config?.password) {\n this.log.error('Can not start without username or password. Please open config.')\n } else {\n if(this.config?.appVersionFromGithub != '' && this.config?.useAppVersionFromGithub)\n {\n this.log.debug(`Use AppVersion from Github ${this.config?.appVersionFromGithub}.`)\n this.comfortCloudClient = new ComfortCloudClient(this.config?.appVersionFromGithub)\n }\n else if(this.config?.appVersion != '')\n {\n this.log.debug(`Use configured AppVersion ${this.config?.appVersion}.`)\n this.comfortCloudClient = new ComfortCloudClient(this.config?.appVersion)\n }\n else\n {\n this.log.debug(`Use default AppVersion.`)\n this.comfortCloudClient = new ComfortCloudClient()\n }\n\n try {\n this.log.debug(`Try to login with username ${this.config.username}.`)\n await this.comfortCloudClient.login(\n this.config.username,\n this.config.password\n )\n this.log.info('Login successful.')\n this.setState('info.connection', true, true)\n this.log.debug('Create devices.')\n const groups = await this.comfortCloudClient.getGroups()\n await this.createDevices(groups)\n\n this.setupRefreshTimeout()\n } catch (error) {\n await this.handleClientError(error)\n }\n }\n }\n\n private async refreshDeviceStates(device: Device): Promise<void> {\n this.log.debug(`Refresh device ${device.name} (${device.guid}).`)\n this.log.debug(`${device.name}: guid => ${device.guid}.`)\n \n this.log.debug(`${device.name}: operate => ${device.operate}.`)\n await this.setStateChangedAsync(\n `${device.name}.operate`,\n device.operate,\n true\n )\n this.log.debug(`${device.name}: temperatureSet => ${device.temperatureSet}.`)\n await this.setStateChangedAsync(\n `${device.name}.temperatureSet`,\n device.temperatureSet,\n true\n )\n this.log.debug(`${device.name}: insideTemperature => ${device.insideTemperature}.`)\n await this.setStateChangedAsync(\n `${device.name}.insideTemperature`,\n device.insideTemperature,\n true\n )\n this.log.debug(`${device.name}: outTemperature => ${device.outTemperature}.`)\n await this.setStateChangedAsync(\n `${device.name}.outTemperature`,\n device.outTemperature,\n true\n )\n this.log.debug(`${device.name}: airSwingLR => ${device.airSwingLR}.`)\n await this.setStateChangedAsync(\n `${device.name}.airSwingLR`,\n device.airSwingLR,\n true\n )\n this.log.debug(`${device.name}: airSwingUD => ${device.airSwingUD}.`)\n await this.setStateChangedAsync(\n `${device.name}.airSwingUD`,\n device.airSwingUD,\n true\n )\n this.log.debug(`${device.name}: fanAutoMode => ${device.fanAutoMode}.`)\n await this.setStateChangedAsync(\n `${device.name}.fanAutoMode`,\n device.fanAutoMode,\n true\n )\n this.log.debug(`${device.name}: ecoMode => ${device.ecoMode}.`)\n await this.setStateChangedAsync(\n `${device.name}.ecoMode`,\n device.ecoMode,\n true\n )\n this.log.debug(`${device.name}: operationMode => ${device.operationMode}.`)\n await this.setStateChangedAsync(\n `${device.name}.operationMode`,\n device.operationMode,\n true\n )\n this.log.debug(`${device.name}: fanSpeed => ${device.fanSpeed}.`)\n await this.setStateChangedAsync(\n `${device.name}.fanSpeed`,\n device.fanSpeed,\n true\n )\n this.log.debug(`${device.name}: actualNanoe => ${device.actualNanoe}.`)\n await this.setStateChangedAsync(\n `${device.name}.actualNanoe`,\n device.actualNanoe,\n true\n )\n await this.setStateChangedAsync(\n `${device.name}.connected`,\n true,\n true\n )\n this.log.debug(`Refresh device ${device.name} finished.`)\n }\n\n private async refreshDevice(guid: string, deviceName: string): Promise<void> {\n try {\n const device = await this.comfortCloudClient.getDevice(guid, deviceName)\n if (!device) {\n return\n }\n if (!device.name) {\n device.name = deviceName\n }\n await this.refreshDeviceStates(device)\n } catch (error) {\n await this.handleDeviceError(deviceName, error)\n }\n }\n\n private async refreshDevices(): Promise<void> {\n try {\n this.log.debug('Refresh all devices.')\n const groups = await this.comfortCloudClient.getGroups()\n this.setState('info.connection', true, true);\n const devices = _.flatMap(groups, g => g.devices)\n const deviceInfos = _.map(devices, d => { return{guid: d.guid, name: d.name}})\n await Promise.all(deviceInfos.map(async (deviceInfo) => {\n try {\n const device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name)\n if(device != null) {\n device.name = deviceInfo.name\n device.guid = deviceInfo.guid\n await this.refreshDeviceStates(device)\n }\n } catch (error) {\n await this.handleDeviceError(deviceInfo.name, error)\n }\n }))\n } catch (error) {\n await this.handleClientError(error)\n }\n }\n\n private async createDevices(groups: Array<Group>): Promise<void> {\n const devicesFromService = _.flatMap(groups, g => g.devices)\n const deviceInfos = _.map(devicesFromService, d => { return {guid: d.guid, name: d.name}})\n await Promise.all(deviceInfos.map(async (deviceInfo) => {\n this.log.debug(`Device info from group ${deviceInfo.guid}, ${deviceInfo.name}.`)\n let device: Device | null = null\n try {\n device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name)\n } catch(error) {\n await this.handleDeviceError(deviceInfo.name, error)\n return\n }\n \n if(device != null) {\n this.createDevice(deviceInfo.name)\n this.createState(\n deviceInfo.name,\n '',\n 'guid',\n { role: 'info.address', write: false, def: deviceInfo.guid, type: 'string' },\n undefined\n )\n this.readonlyStateNames.push('guid')\n\n this.createState(\n deviceInfo.name,\n '',\n 'operate',\n {\n role: 'switch.power',\n states: { 0: Power[0], 1: Power[1] },\n write: true,\n def: device.operate,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'temperatureSet',\n {\n role: 'level.temperature',\n write: true,\n def: device.temperatureSet,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'insideTemperature',\n {\n role: 'level.temperature',\n write: false,\n def: device.insideTemperature,\n type: 'number',\n },\n undefined\n )\n this.readonlyStateNames.push('insideTemperature')\n\n this.createState(\n deviceInfo.name,\n '',\n 'outTemperature',\n {\n role: 'level.temperature',\n write: false,\n def: device.outTemperature,\n type: 'number',\n },\n undefined\n )\n this.readonlyStateNames.push('outTemperature')\n\n this.createState(\n deviceInfo.name,\n '',\n 'airSwingLR',\n {\n role: 'state',\n states: {\n 0: AirSwingLR[0],\n 1: AirSwingLR[1],\n 2: AirSwingLR[2],\n 3: AirSwingLR[3],\n 4: AirSwingLR[4],\n },\n write: true,\n def: device.airSwingLR,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'airSwingUD',\n {\n role: 'state',\n states: {\n 0: AirSwingUD[0],\n 1: AirSwingUD[1],\n 2: AirSwingUD[2],\n 3: AirSwingUD[3],\n 4: AirSwingUD[4],\n },\n write: true,\n def: device.airSwingUD,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'fanAutoMode',\n {\n role: 'state',\n states: {\n 0: FanAutoMode[0],\n 1: FanAutoMode[1],\n 2: FanAutoMode[2],\n 3: FanAutoMode[3],\n },\n write: true,\n def: device.fanAutoMode,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'ecoMode',\n {\n role: 'state',\n states: { 0: EcoMode[0], 1: EcoMode[1], 2: EcoMode[2] },\n write: true,\n def: device.ecoMode,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'operationMode',\n {\n role: 'state',\n states: {\n 0: OperationMode[0],\n 1: OperationMode[1],\n 2: OperationMode[2],\n 3: OperationMode[3],\n 4: OperationMode[4],\n },\n write: true,\n def: device.operationMode,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'fanSpeed',\n {\n role: 'state',\n states: {\n 0: FanSpeed[0],\n 1: FanSpeed[1],\n 2: FanSpeed[2],\n 3: FanSpeed[3],\n 4: FanSpeed[4],\n 5: FanSpeed[5],\n },\n write: true,\n def: device.fanSpeed,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'actualNanoe',\n {\n role: 'state',\n states: {\n 0: NanoeMode[0],\n 1: NanoeMode[1],\n 2: NanoeMode[2],\n 3: NanoeMode[3],\n 4: NanoeMode[4],\n },\n write: true,\n def: device.actualNanoe,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'connected',\n { role: 'state', read: true, write: false, def: false, type: 'boolean' },\n undefined,\n )\n\n this.log.info(`Device ${deviceInfo.name} created.`)\n }\n }));\n this.log.debug('Device creation completed.')\n }\n\n private async updateDevice(\n deviceName: string,\n stateName: string,\n state: ioBroker.State\n ): Promise<void> {\n if(this.readonlyStateNames.includes(stateName)) {\n return\n }\n if (!state.ack) {\n const stateObj = await this.getObjectAsync(`${deviceName}.${stateName}`)\n const stateCommon = stateObj?.common as ioBroker.StateCommon\n if(stateCommon?.write == false) {\n return\n }\n\n const guidState = await this.getStateAsync(`${deviceName}.guid`)\n \n this.log.debug(\n `Update device guid=${guidState?.val} state=${stateName}`\n )\n const parameters: Parameters = {}\n parameters[stateName] = state.val\n if (!guidState?.val) {\n return\n }\n try {\n this.log.debug(`Set device parameter ${JSON.stringify(parameters)} for device ${guidState?.val}`)\n await this.comfortCloudClient.setParameters(\n guidState?.val as string,\n parameters\n )\n this.log.debug(`Refresh device ${deviceName}`)\n await this.refreshDevice(guidState?.val as string, deviceName)\n } catch (error) {\n await this.handleClientError(error)\n }\n }\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n */\n private onUnload(callback: () => void): void {\n try {\n if(this.refreshTimeout)\n clearTimeout(this.refreshTimeout)\n\n this.log.info('cleaned everything up...')\n callback()\n } catch (e) {\n callback()\n }\n }\n\n /**\n * Is called if a subscribed object changes\n */\n private onObjectChange(\n id: string,\n obj: ioBroker.Object | null | undefined\n ): void {\n if (obj) {\n // The object was changed\n this.log.info(`object ${id} changed: ${JSON.stringify(obj)}`)\n } else {\n // The object was deleted\n this.log.info(`object ${id} deleted`)\n }\n }\n\n /**\n * Is called if a subscribed state changes\n */\n private async onStateChange(\n id: string,\n state: ioBroker.State | null | undefined\n ): Promise<void> {\n if (state) {\n const elements = id.split('.')\n const deviceName = elements[elements.length - 2]\n const stateName = elements[elements.length - 1]\n try {\n await this.updateDevice(deviceName, stateName, state) \n } catch (error) {\n await this.handleClientError(error)\n }\n \n // The state was changed\n this.log.info(\n `state ${id} changed: ${state.val} (ack = ${state.ack})`\n )\n } else {\n // The state was deleted\n this.log.info(`state ${id} deleted`)\n }\n }\n\n private async getCurrentAppVersion() : Promise<string> {\n const response = await axios.get('https://raw.githubusercontent.com/marc2016/ioBroker.panasonic-comfort-cloud/master/.currentAppVersion')\n if(response.status !== 200)\n return ''\n const text = await response.data\n return text\n }\n\n private async handleDeviceError(deviceName: string, error: unknown): Promise<void> {\n this.log.debug(`Try to handle device error for ${deviceName}.`)\n\n await this.setStateChangedAsync(\n `${deviceName}.connected`,\n false,\n true\n )\n \n if (error instanceof ServiceError) {\n this.log.error(\n `Service error when connecting to device ${deviceName}: ${error.message}. Code=${error.code}. Stack: ${error.stack}`\n )\n } else if (error instanceof Error){\n this.log.error(`Unknown error when connecting to device ${deviceName}: ${error}. Stack: ${error.stack}`)\n }\n }\n\n private async handleClientError(error: unknown): Promise<void> {\n this.log.debug('Try to handle error.')\n \n if (error instanceof TokenExpiredError) {\n this.log.info(\n `Token of comfort cloud client expired. Trying to login again. Code=${error.code}. Stack: ${error.stack}`\n )\n this.setState('info.connection', false, true);\n await this.comfortCloudClient.login(\n this.config.username,\n this.config.password\n )\n this.setState('info.connection', true, true);\n this.log.info('Login successful.')\n } else if (error instanceof ServiceError) {\n this.setState('info.connection', false, true);\n this.log.error(\n `Service error: ${error.message}. Code=${error.code}. Stack: ${error.stack}`\n )\n } else if (error instanceof Error){\n this.log.error(`Unknown error: ${error}. Stack: ${error.stack}`)\n }\n }\n\n private setupRefreshTimeout(): void {\n this.log.debug('setupRefreshTimeout')\n const refreshIntervalInMilliseconds = this.refreshIntervalInMinutes * 60 * 1000\n this.log.debug(`refreshIntervalInMilliseconds=${refreshIntervalInMilliseconds}`)\n this.refreshTimeout = setTimeout(this.refreshTimeoutFunc.bind(this), refreshIntervalInMilliseconds);\n }\n\n private async refreshTimeoutFunc(): Promise<void> {\n this.log.debug(`refreshTimeoutFunc started.`)\n try {\n await this.refreshDevices()\n this.setupRefreshTimeout()\n } catch (error) {\n await this.handleClientError(error)\n }\n \n }\n\n private trimAll(text: string): string {\n const newText = text.trim().replace(/(\\r\\n|\\n|\\r)/gm, '');\n return newText\n }\n}\n\nif (module.parent) {\n // Export the constructor in compact mode\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) =>\n new PanasonicComfortCloud(options)\n} else {\n // otherwise start the instance directly\n (() => new PanasonicComfortCloud())()\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/*\n * Created with @iobroker/create-adapter v1.16.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\n// you need to create an adapter\nimport * as utils from '@iobroker/adapter-core'\n\nimport {\n Device,\n Group,\n ComfortCloudClient,\n Parameters,\n Power,\n AirSwingLR,\n AirSwingUD,\n FanAutoMode,\n EcoMode,\n OperationMode,\n FanSpeed,\n TokenExpiredError,\n ServiceError,\n NanoeMode\n} from 'panasonic-comfort-cloud-client'\n\nimport * as _ from 'lodash'\nimport axios from 'axios'\nimport { stat } from 'fs'\n\nconst REFRESH_INTERVAL_IN_MINUTES_DEFAULT = 5\n\nclass PanasonicComfortCloud extends utils.Adapter {\n\n private comfortCloudClient: ComfortCloudClient = new ComfortCloudClient()\n\n private refreshTimeout: NodeJS.Timeout | undefined\n private refreshIntervalInMinutes = REFRESH_INTERVAL_IN_MINUTES_DEFAULT\n\n private readonlyStateNames: string[] = [] \n\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'panasonic-comfort-cloud',\n })\n\n this.on('ready', this.onReady.bind(this))\n this.on('objectChange', this.onObjectChange.bind(this))\n this.on('stateChange', this.onStateChange.bind(this))\n // this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this))\n }\n\n /**\n * Is called when databases are connected and adapter received configuration.\n */\n private async onReady(): Promise<void> {\n this.refreshIntervalInMinutes = this.config?.refreshInterval ?? REFRESH_INTERVAL_IN_MINUTES_DEFAULT\n this.subscribeStates('*')\n\n this.setState('info.connection', false, true);\n\n const loadedAppVersion = await this.getCurrentAppVersion()\n this.log.info(`Loaded app version from GitHub: ${loadedAppVersion}`)\n if(loadedAppVersion && this.trimAll(this.config?.appVersionFromGithub) != this.trimAll(loadedAppVersion)) {\n this.updateConfig({ appVersionFromGithub: this.trimAll(loadedAppVersion), password: this.encrypt(this.config?.password) }) \n return\n }\n\n if(!this.config?.username || !this.config?.password) {\n this.log.error('Can not start without username or password. Please open config.')\n } else {\n if(this.config?.appVersionFromGithub != '' && this.config?.useAppVersionFromGithub)\n {\n this.log.debug(`Use AppVersion from Github ${this.config?.appVersionFromGithub}.`)\n this.comfortCloudClient = new ComfortCloudClient(this.config?.appVersionFromGithub)\n }\n else if(this.config?.appVersion != '')\n {\n this.log.debug(`Use configured AppVersion ${this.config?.appVersion}.`)\n this.comfortCloudClient = new ComfortCloudClient(this.config?.appVersion)\n }\n else\n {\n this.log.debug(`Use default AppVersion.`)\n this.comfortCloudClient = new ComfortCloudClient()\n }\n\n try {\n this.log.debug(`Try to login with username ${this.config.username}.`)\n await this.comfortCloudClient.login(\n this.config.username,\n this.config.password\n )\n this.log.info('Login successful.')\n this.setState('info.connection', true, true)\n this.log.debug('Create devices.')\n const groups = await this.comfortCloudClient.getGroups()\n await this.createDevices(groups)\n\n this.log.debug(`Automativ refresh is set to ${this.config?.automaticRefreshEnabled}.`)\n if(this.config?.automaticRefreshEnabled) {\n this.setupRefreshTimeout()\n }\n \n } catch (error) {\n await this.handleClientError(error)\n }\n }\n }\n\n private async refreshDeviceStates(device: Device): Promise<void> {\n this.log.debug(`Refresh device ${device.name} (${device.guid}).`)\n this.log.debug(`${device.name}: guid => ${device.guid}.`)\n \n this.log.debug(`${device.name}: operate => ${device.operate}.`)\n await this.setStateChangedAsync(\n `${device.name}.operate`,\n device.operate,\n true\n )\n this.log.debug(`${device.name}: temperatureSet => ${device.temperatureSet}.`)\n await this.setStateChangedAsync(\n `${device.name}.temperatureSet`,\n device.temperatureSet,\n true\n )\n this.log.debug(`${device.name}: insideTemperature => ${device.insideTemperature}.`)\n await this.setStateChangedAsync(\n `${device.name}.insideTemperature`,\n device.insideTemperature,\n true\n )\n this.log.debug(`${device.name}: outTemperature => ${device.outTemperature}.`)\n await this.setStateChangedAsync(\n `${device.name}.outTemperature`,\n device.outTemperature,\n true\n )\n this.log.debug(`${device.name}: airSwingLR => ${device.airSwingLR}.`)\n await this.setStateChangedAsync(\n `${device.name}.airSwingLR`,\n device.airSwingLR,\n true\n )\n this.log.debug(`${device.name}: airSwingUD => ${device.airSwingUD}.`)\n await this.setStateChangedAsync(\n `${device.name}.airSwingUD`,\n device.airSwingUD,\n true\n )\n this.log.debug(`${device.name}: fanAutoMode => ${device.fanAutoMode}.`)\n await this.setStateChangedAsync(\n `${device.name}.fanAutoMode`,\n device.fanAutoMode,\n true\n )\n this.log.debug(`${device.name}: ecoMode => ${device.ecoMode}.`)\n await this.setStateChangedAsync(\n `${device.name}.ecoMode`,\n device.ecoMode,\n true\n )\n this.log.debug(`${device.name}: operationMode => ${device.operationMode}.`)\n await this.setStateChangedAsync(\n `${device.name}.operationMode`,\n device.operationMode,\n true\n )\n this.log.debug(`${device.name}: fanSpeed => ${device.fanSpeed}.`)\n await this.setStateChangedAsync(\n `${device.name}.fanSpeed`,\n device.fanSpeed,\n true\n )\n this.log.debug(`${device.name}: actualNanoe => ${device.actualNanoe}.`)\n await this.setStateChangedAsync(\n `${device.name}.actualNanoe`,\n device.actualNanoe,\n true\n )\n await this.setStateChangedAsync(\n `${device.name}.connected`,\n true,\n true\n )\n this.log.debug(`Refresh device ${device.name} finished.`)\n }\n\n private async refreshDevice(guid: string, deviceName: string): Promise<void> {\n try {\n const device = await this.comfortCloudClient.getDevice(guid, deviceName)\n if (!device) {\n return\n }\n if (!device.name) {\n device.name = deviceName\n }\n await this.refreshDeviceStates(device)\n } catch (error) {\n await this.handleDeviceError(deviceName, error)\n }\n }\n\n private async refreshDevices(): Promise<void> {\n try {\n this.log.debug('Refresh all devices.')\n const groups = await this.comfortCloudClient.getGroups()\n this.setState('info.connection', true, true);\n const devices = _.flatMap(groups, g => g.devices)\n const deviceInfos = _.map(devices, d => { return{guid: d.guid, name: d.name}})\n await Promise.all(deviceInfos.map(async (deviceInfo) => {\n try {\n const device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name)\n if(device != null) {\n device.name = deviceInfo.name\n device.guid = deviceInfo.guid\n await this.refreshDeviceStates(device)\n }\n } catch (error) {\n await this.handleDeviceError(deviceInfo.name, error)\n }\n }))\n } catch (error) {\n await this.handleClientError(error)\n }\n }\n\n private async createDevices(groups: Array<Group>): Promise<void> {\n const devicesFromService = _.flatMap(groups, g => g.devices)\n const deviceInfos = _.map(devicesFromService, d => { return {guid: d.guid, name: d.name}})\n await Promise.all(deviceInfos.map(async (deviceInfo) => {\n this.log.debug(`Device info from group ${deviceInfo.guid}, ${deviceInfo.name}.`)\n let device: Device | null = null\n try {\n device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name)\n } catch(error) {\n await this.handleDeviceError(deviceInfo.name, error)\n return\n }\n \n if(device != null) {\n this.createDevice(deviceInfo.name)\n this.createState(\n deviceInfo.name,\n '',\n 'guid',\n { role: 'info.address', write: false, def: deviceInfo.guid, type: 'string' },\n undefined\n )\n this.readonlyStateNames.push('guid')\n\n this.createState(\n deviceInfo.name,\n '',\n 'operate',\n {\n role: 'switch.power',\n states: { 0: Power[0], 1: Power[1] },\n write: true,\n def: device.operate,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'temperatureSet',\n {\n role: 'level.temperature',\n write: true,\n def: device.temperatureSet,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'insideTemperature',\n {\n role: 'level.temperature',\n write: false,\n def: device.insideTemperature,\n type: 'number',\n },\n undefined\n )\n this.readonlyStateNames.push('insideTemperature')\n\n this.createState(\n deviceInfo.name,\n '',\n 'outTemperature',\n {\n role: 'level.temperature',\n write: false,\n def: device.outTemperature,\n type: 'number',\n },\n undefined\n )\n this.readonlyStateNames.push('outTemperature')\n\n this.createState(\n deviceInfo.name,\n '',\n 'airSwingLR',\n {\n role: 'state',\n states: {\n 0: AirSwingLR[0],\n 1: AirSwingLR[1],\n 2: AirSwingLR[2],\n 3: AirSwingLR[3],\n 4: AirSwingLR[4],\n },\n write: true,\n def: device.airSwingLR,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'airSwingUD',\n {\n role: 'state',\n states: {\n 0: AirSwingUD[0],\n 1: AirSwingUD[1],\n 2: AirSwingUD[2],\n 3: AirSwingUD[3],\n 4: AirSwingUD[4],\n },\n write: true,\n def: device.airSwingUD,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'fanAutoMode',\n {\n role: 'state',\n states: {\n 0: FanAutoMode[0],\n 1: FanAutoMode[1],\n 2: FanAutoMode[2],\n 3: FanAutoMode[3],\n },\n write: true,\n def: device.fanAutoMode,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'ecoMode',\n {\n role: 'state',\n states: { 0: EcoMode[0], 1: EcoMode[1], 2: EcoMode[2] },\n write: true,\n def: device.ecoMode,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'operationMode',\n {\n role: 'state',\n states: {\n 0: OperationMode[0],\n 1: OperationMode[1],\n 2: OperationMode[2],\n 3: OperationMode[3],\n 4: OperationMode[4],\n },\n write: true,\n def: device.operationMode,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'fanSpeed',\n {\n role: 'state',\n states: {\n 0: FanSpeed[0],\n 1: FanSpeed[1],\n 2: FanSpeed[2],\n 3: FanSpeed[3],\n 4: FanSpeed[4],\n 5: FanSpeed[5],\n },\n write: true,\n def: device.fanSpeed,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'actualNanoe',\n {\n role: 'state',\n states: {\n 0: NanoeMode[0],\n 1: NanoeMode[1],\n 2: NanoeMode[2],\n 3: NanoeMode[3],\n 4: NanoeMode[4],\n },\n write: true,\n def: device.actualNanoe,\n type: 'number',\n },\n undefined\n )\n this.createState(\n deviceInfo.name,\n '',\n 'connected',\n { role: 'state', read: true, write: false, def: false, type: 'boolean' },\n undefined,\n )\n\n this.log.info(`Device ${deviceInfo.name} created.`)\n }\n }));\n this.log.debug('Device creation completed.')\n }\n\n private async updateDevice(\n deviceName: string,\n stateName: string,\n state: ioBroker.State\n ): Promise<void> {\n if(this.readonlyStateNames.includes(stateName)) {\n return\n }\n if (!state.ack) {\n const stateObj = await this.getObjectAsync(`${deviceName}.${stateName}`)\n const stateCommon = stateObj?.common as ioBroker.StateCommon\n if(stateCommon?.write == false) {\n return\n }\n\n const guidState = await this.getStateAsync(`${deviceName}.guid`)\n \n this.log.debug(\n `Update device guid=${guidState?.val} state=${stateName}`\n )\n const parameters: Parameters = {}\n parameters[stateName] = state.val\n if (!guidState?.val) {\n return\n }\n try {\n this.log.debug(`Set device parameter ${JSON.stringify(parameters)} for device ${guidState?.val}`)\n await this.comfortCloudClient.setParameters(\n guidState?.val as string,\n parameters\n )\n this.log.debug(`Refresh device ${deviceName}`)\n await this.refreshDevice(guidState?.val as string, deviceName)\n } catch (error) {\n await this.handleClientError(error)\n }\n }\n }\n\n /**\n * Is called when adapter shuts down - callback has to be called under any circumstances!\n */\n private onUnload(callback: () => void): void {\n try {\n if(this.refreshTimeout)\n clearTimeout(this.refreshTimeout)\n\n this.log.info('cleaned everything up...')\n callback()\n } catch (e) {\n callback()\n }\n }\n\n /**\n * Is called if a subscribed object changes\n */\n private onObjectChange(\n id: string,\n obj: ioBroker.Object | null | undefined\n ): void {\n if (obj) {\n // The object was changed\n this.log.info(`object ${id} changed: ${JSON.stringify(obj)}`)\n } else {\n // The object was deleted\n this.log.info(`object ${id} deleted`)\n }\n }\n\n /**\n * Is called if a subscribed state changes\n */\n private async onStateChange(\n id: string,\n state: ioBroker.State | null | undefined\n ): Promise<void> {\n if(!state || state.ack) {\n return\n }\n\n if(id.includes('.commands.')) {\n const elements = id.split('.')\n const stateName = elements[elements.length - 1]\n if(stateName == 'manualRefresh' && state.val) {\n try {\n await this.refreshDevices()\n await this.setStateAsync(id, state, true)\n } catch (error) {\n await this.handleClientError(error)\n }\n await this.setStateAsync(id, false, true)\n }\n }\n else if (!id.includes('.info.')) {\n const elements = id.split('.')\n const deviceName = elements[elements.length - 2]\n const stateName = elements[elements.length - 1]\n try {\n await this.updateDevice(deviceName, stateName, state) \n } catch (error) {\n await this.handleClientError(error)\n }\n \n // The state was changed\n this.log.info(\n `state ${id} changed: ${state.val} (ack = ${state.ack})`\n )\n }\n }\n\n private async getCurrentAppVersion() : Promise<string> {\n const response = await axios.get('https://raw.githubusercontent.com/marc2016/ioBroker.panasonic-comfort-cloud/master/.currentAppVersion')\n if(response.status !== 200)\n return ''\n const text = await response.data\n return text\n }\n\n private async handleDeviceError(deviceName: string, error: unknown): Promise<void> {\n this.log.debug(`Try to handle device error for ${deviceName}.`)\n\n await this.setStateChangedAsync(\n `${deviceName}.connected`,\n false,\n true\n )\n \n if (error instanceof ServiceError) {\n this.log.error(\n `Service error when connecting to device ${deviceName}: ${error.message}. Code=${error.code}. Stack: ${error.stack}`\n )\n } else if (error instanceof Error){\n this.log.error(`Unknown error when connecting to device ${deviceName}: ${error}. Stack: ${error.stack}`)\n }\n }\n\n private async handleClientError(error: unknown): Promise<void> {\n this.log.debug('Try to handle error.')\n \n if (error instanceof TokenExpiredError) {\n this.log.info(\n `Token of comfort cloud client expired. Trying to login again. Code=${error.code}. Stack: ${error.stack}`\n )\n this.setState('info.connection', false, true);\n await this.comfortCloudClient.login(\n this.config.username,\n this.config.password\n )\n this.setState('info.connection', true, true);\n this.log.info('Login successful.')\n } else if (error instanceof ServiceError) {\n this.setState('info.connection', false, true);\n this.log.error(\n `Service error: ${error.message}. Code=${error.code}. Stack: ${error.stack}`\n )\n } else if (error instanceof Error){\n this.log.error(`Unknown error: ${error}. Stack: ${error.stack}`)\n }\n }\n\n private setupRefreshTimeout(): void {\n this.log.debug('setupRefreshTimeout')\n const refreshIntervalInMilliseconds = this.refreshIntervalInMinutes * 60 * 1000\n this.log.debug(`refreshIntervalInMilliseconds=${refreshIntervalInMilliseconds}`)\n this.refreshTimeout = setTimeout(this.refreshTimeoutFunc.bind(this), refreshIntervalInMilliseconds);\n }\n\n private async refreshTimeoutFunc(): Promise<void> {\n this.log.debug(`refreshTimeoutFunc started.`)\n try {\n await this.refreshDevices()\n this.setupRefreshTimeout()\n } catch (error) {\n await this.handleClientError(error)\n }\n \n }\n\n private trimAll(text: string): string {\n const newText = text.trim().replace(/(\\r\\n|\\n|\\r)/gm, '');\n return newText\n }\n}\n\nif (module.parent) {\n // Export the constructor in compact mode\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) =>\n new PanasonicComfortCloud(options)\n} else {\n // otherwise start the instance directly\n (() => new PanasonicComfortCloud())()\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["axios"]
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "panasonic-comfort-cloud",
4
- "version": "2.3.0",
4
+ "version": "3.0.0",
5
5
  "news": {
6
+ "3.0.0": {
7
+ "en": "Added option to deactivate the automatic refresh.\nAdded state to manual refresh device infos.\nUpdated client version for OAuth support.",
8
+ "de": "Option hinzugefügt, um die automatische Erfrischung zu deaktivieren.\nZustand zu manuellen Refresh-Gerät Informationen hinzugefügt.\nAktualisierte Clientversion für OAuth-Unterstützung.",
9
+ "ru": "Добавлена опция для деактивации автоматического обновления.\nДобавлено состояние в ручную информацию об устройстве обновления.\nОбновленная клиентская версия для поддержки OAuth.",
10
+ "pt": "Adicionada opção para desativar a atualização automática.\nEstado adicionado para atualizar manualmente informações do dispositivo.\nVersão de cliente atualizada para suporte OAuth.",
11
+ "nl": "Toegevoegd optie om de automatische vernieuwing uit te schakelen.\nStatus toegevoegd aan handmatige verversen apparaatinformaties.\nBijgewerkte client versie voor OAuth ondersteuning.",
12
+ "fr": "Ajout d'une option pour désactiver la mise à jour automatique.\nAjout de l'état aux infos de rafraîchissement manuel de l'appareil.\nVersion client mise à jour pour le support OAuth.",
13
+ "it": "Aggiunta opzione per disattivare il aggiornamento automatico.\nAggiunta di stato alle informazioni del dispositivo di aggiornamento manuale.\nVersione client aggiornata per il supporto OAuth.",
14
+ "es": "Añadido opción para desactivar el refresco automático.\nAñadido estado a manual información del dispositivo de actualización.\nVersión actualizada del cliente para soporte OAuth.",
15
+ "pl": "Dodano opcję wyłączenia automatycznego odświeżania.\nDodano stan do instrukcji odświeżania urządzenia.\nAktualizacja wersji klienta dla wsparcia OAuth.",
16
+ "uk": "Додана можливість деактивувати автоматичне оновлення.\nДодано стан для ручного оновлення пристрою інформації.\nОновлена версія клієнта для підтримки OAuth.",
17
+ "zh-cn": "添加选项以关闭自动刷新 .\n添加到手动刷新设备信息中的状态 .\n更新了OAuth支持的客户端版本."
18
+ },
6
19
  "2.3.0": {
7
20
  "en": "Updated packages\nAdded connected state to devices",
8
21
  "de": "Aktualisierte Pakete\nVerbindung mit Geräten hinzugefügt",
@@ -80,19 +93,6 @@
80
93
  "pl": "Dodano funkcję automatycznego ładowania wersji aplikacji z GitHub.",
81
94
  "uk": "Додано функцію автоматичного завантаження версії програми з GitHub.",
82
95
  "zh-cn": "添加了自动从 GitHub 加载应用程序版本的功能。"
83
- },
84
- "2.1.0": {
85
- "en": "Added app version to settings.",
86
- "de": "App-Version zu den Einstellungen hinzugefügt.",
87
- "ru": "В настройки добавлена ​​версия приложения.",
88
- "pt": "Versão do aplicativo adicionada às configurações.",
89
- "nl": "App-versie toegevoegd aan instellingen.",
90
- "fr": "Ajout de la version de l'application aux paramètres.",
91
- "it": "Aggiunta la versione dell'app alle impostazioni.",
92
- "es": "Se agregó la versión de la aplicación a la configuración.",
93
- "pl": "Dodano wersję aplikacji do ustawień.",
94
- "uk": "Версію програми додано в налаштування.",
95
- "zh-cn": "在设置中添加了应用程序版本。"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -159,6 +159,7 @@
159
159
  "username": "",
160
160
  "password": "",
161
161
  "refreshInterval": 5,
162
+ "automaticRefreshEnabled": true,
162
163
  "appVersion": "",
163
164
  "appVersionFromGithub": "",
164
165
  "useAppVersionFromGithub": false
@@ -192,6 +193,27 @@
192
193
  "def": false
193
194
  },
194
195
  "native": {}
196
+ },
197
+ {
198
+ "_id": "commands",
199
+ "type": "channel",
200
+ "common": {
201
+ "name": "Adapter commands"
202
+ },
203
+ "native": {}
204
+ },
205
+ {
206
+ "_id": "commands.manualRefresh",
207
+ "type": "state",
208
+ "common": {
209
+ "role": "button",
210
+ "name": "Refresh devices manual",
211
+ "type": "boolean",
212
+ "read": true,
213
+ "write": true,
214
+ "def": false
215
+ },
216
+ "native": {}
195
217
  }
196
218
  ]
197
219
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.panasonic-comfort-cloud",
3
- "version": "2.3.0",
3
+ "version": "3.0.0",
4
4
  "description": "Adapter for Panasonic Comfort Cloud",
5
5
  "author": {
6
6
  "name": "marc",
@@ -22,7 +22,7 @@
22
22
  "@iobroker/adapter-core": "^3.0.4",
23
23
  "@types/lodash": "^4.14.202",
24
24
  "lodash": "^4.17.21",
25
- "panasonic-comfort-cloud-client": "1.2.6",
25
+ "panasonic-comfort-cloud-client": "2.0.0",
26
26
  "ts-enum-util": "^4.0.2"
27
27
  },
28
28
  "devDependencies": {