iobroker.panasonic-comfort-cloud 2.2.3 → 2.2.4

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  | :warning: WARNING |
4
4
  |:---------------------------|
5
- | New app version in adapter settings is 1.18.0 |
5
+ | New app version in adapter settings is 1.19.1 |
6
6
 
7
7
  ![Logo](admin/panasonic-comfort-cloud.png)
8
8
 
@@ -24,6 +24,10 @@ 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
+ ### 2.2.4 (2023-10-18)
28
+
29
+ * Fixed load AppVersion from Github.
30
+
27
31
  ### 2.2.3 (2023-10-14)
28
32
 
29
33
  * Added support for admin 5 UI (jsonConfig).
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Neue Version der App für API",
2
+ "appVersion": "Neue Version der App für API",
3
3
  "appVersionFromGithub": "App-Version für API, geladen aus dem GitHub-Repository",
4
4
  "useAppVersionFromGithub": "Verwenden Sie die von GitHub geladene App-Version",
5
5
  "panasonic-comfort-cloud adapter settings": "Adaptereinstellungen für Panasonic-Comfort-Cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "New version of the app for API",
2
+ "appVersion": "New version of the app for API",
3
3
  "appVersionFromGithub": "App version for API loaded from GitHub repository",
4
4
  "useAppVersionFromGithub": "Use the app version loaded from GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Adapter settings for panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Nueva versión de la aplicación para API",
2
+ "appVersion": "Nueva versión de la aplicación para API",
3
3
  "appVersionFromGithub": "Versión de la aplicación para API cargada desde el repositorio de GitHub",
4
4
  "useAppVersionFromGithub": "Utilice la versión de la aplicación cargada desde GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Configuración del adaptador para panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Nouvelle version de l'application pour API",
2
+ "appVersion": "Nouvelle version de l'application pour API",
3
3
  "appVersionFromGithub": "Version de l'application pour l'API chargée à partir du référentiel GitHub",
4
4
  "useAppVersionFromGithub": "Utilisez la version de l'application chargée depuis GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Paramètres de l'adaptateur pour Panasonic-Comfort-Cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Nuova versione dell'app per API",
2
+ "appVersion": "Nuova versione dell'app per API",
3
3
  "appVersionFromGithub": "Versione dell'app per API caricata dal repository GitHub",
4
4
  "useAppVersionFromGithub": "Utilizza la versione dell'app caricata da GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Impostazioni dell'adattatore per panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Nieuwe versie van de app voor API",
2
+ "appVersion": "Nieuwe versie van de app voor API",
3
3
  "appVersionFromGithub": "App-versie voor API geladen vanuit GitHub-repository",
4
4
  "useAppVersionFromGithub": "Gebruik de app-versie die is geladen vanuit GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Adapterinstellingen voor panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Nowa wersja aplikacji dla API",
2
+ "appVersion": "Nowa wersja aplikacji dla API",
3
3
  "appVersionFromGithub": "Wersja aplikacji dla API załadowana z repozytorium GitHub",
4
4
  "useAppVersionFromGithub": "Użyj wersji aplikacji pobranej z GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Ustawienia adaptera dla panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Nova versão do aplicativo para API",
2
+ "appVersion": "Nova versão do aplicativo para API",
3
3
  "appVersionFromGithub": "Versão do aplicativo para API carregada do repositório GitHub",
4
4
  "useAppVersionFromGithub": "Use a versão do aplicativo carregada do GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Configurações do adaptador para panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Новая версия приложения для API",
2
+ "appVersion": "Новая версия приложения для API",
3
3
  "appVersionFromGithub": "Версия приложения для API загружена из репозитория GitHub.",
4
4
  "useAppVersionFromGithub": "Используйте версию приложения, загруженную с GitHub.",
5
5
  "panasonic-comfort-cloud adapter settings": "Настройки адаптера для panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "Нова версія програми для API",
2
+ "appVersion": "Нова версія програми для API",
3
3
  "appVersionFromGithub": "Версія програми для API, завантажена зі сховища GitHub",
4
4
  "useAppVersionFromGithub": "Використовуйте версію програми, завантажену з GitHub",
5
5
  "panasonic-comfort-cloud adapter settings": "Налаштування адаптера для panasonic-comfort-cloud",
@@ -1,5 +1,5 @@
1
1
  {
2
- "appversion": "API 应用程序的新版本",
2
+ "appVersion": "API 应用程序的新版本",
3
3
  "appVersionFromGithub": "从 GitHub 存储库加载的 API 的应用程序版本",
4
4
  "useAppVersionFromGithub": "使用从 GitHub 加载的应用程序版本",
5
5
  "panasonic-comfort-cloud adapter settings": "panasonic-comfort-cloud 的适配器设置",
package/admin/words.js CHANGED
@@ -8,7 +8,7 @@
8
8
  'use strict';
9
9
 
10
10
  systemDictionary = {
11
- "appversion": { "en": "New version of the app for API", "de": "Neue Version der App für API", "ru": "Новая версия приложения для API", "pt": "Nova versão do app para API", "nl": "Nieuwe versie van de app voor API", "fr": "Nouvelle version de l'application pour l'API", "it": "Nuova versione dell'app per API", "es": "Nueva versión de la app para API", "pl": "Nowa wersja aplikacji dla API", "uk": "Нова версія програми для API", "zh-cn": "API 应用程序的新版本"},
11
+ "appVersion": { "en": "New version of the app for API", "de": "Neue Version der App für API", "ru": "Новая версия приложения для API", "pt": "Nova versão do app para API", "nl": "Nieuwe versie van de app voor API", "fr": "Nouvelle version de l'application pour l'API", "it": "Nuova versione dell'app per API", "es": "Nueva versión de la app para API", "pl": "Nowa wersja aplikacji dla API", "uk": "Нова версія програми для API", "zh-cn": "API 应用程序的新版本"},
12
12
  "appVersionFromGithub": { "en": "App version for API loaded from GitHub repository", "de": "App-Version für API aus dem GitHub-Repository geladen", "ru": "Версия приложения для API, загруженного из репозитория GitHub", "pt": "Versão do aplicativo para API carregada do repositório GitHub", "nl": "App-versie voor API geladen vanuit GitHub-repository", "fr": "Version de l'application pour l'API chargée à partir du référentiel GitHub", "it": "Versione dell'app per l'API caricata dal repository GitHub", "es": "Versión de la aplicación para la API cargada desde el repositorio de GitHub", "pl": "Wersja aplikacji dla API ładowana z repozytorium GitHub", "uk": "Версія програми для API, завантажена зі сховища GitHub", "zh-cn": "从 GitHub 存储库加载的 API 的应用程序版本"},
13
13
  "useAppVersionFromGithub": { "en": "Use the app version loaded from GitHub", "de": "Verwenden Sie die von GitHub geladene App-Version", "ru": "Используйте версию приложения, загруженную с GitHub", "pt": "Use a versão do aplicativo carregada do GitHub", "nl": "Gebruik de app-versie die is geladen vanuit GitHub", "fr": "Utiliser la version de l'application chargée depuis GitHub", "it": "Usa la versione dell'app caricata da GitHub", "es": "Use la versión de la aplicación cargada desde GitHub", "pl": "Użyj wersji aplikacji załadowanej z GitHub", "uk": "Використовуйте версію програми, завантажену з GitHub", "zh-cn": "使用从 GitHub 加载的应用程序版本"},
14
14
  "panasonic-comfort-cloud adapter settings": { "en": "Adapter settings for panasonic-comfort-cloud", "de": "Adaptereinstellungen für panasonic-comfort-cloud", "ru": "Настройки адаптера для panasonic-comfort-cloud", "pt": "Configurações do adaptador para panasonic-comfort-cloud", "nl": "Adapterinstellingen voor panasonic-comfort-cloud", "fr": "Paramètres de l'adaptateur pour panasonic-comfort-cloud", "it": "Impostazioni dell'adattatore per panasonic-comfort-cloud", "es": "Configuración del adaptador para panasonic-comfort-cloud", "pl": "Ustawienia adaptera dla panasonic-comfort-cloud", "uk": "Налаштування адаптера для panasonic-comfort-cloud", "zh-cn": "panasonic-comfort-cloud 适配器设置"},
package/build/main.js CHANGED
@@ -1,430 +1,519 @@
1
1
  "use strict";
2
- /*
3
- * Created with @iobroker/create-adapter v1.16.0
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from))
11
+ if (!__hasOwnProp.call(to, key) && key !== except)
12
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ }
14
+ return to;
30
15
  };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- // The adapter-core module gives you access to the core ioBroker functions
33
- // you need to create an adapter
34
- const utils = __importStar(require("@iobroker/adapter-core"));
35
- const panasonic_comfort_cloud_client_1 = require("panasonic-comfort-cloud-client");
36
- const _ = __importStar(require("lodash"));
37
- const axios_1 = __importDefault(require("axios"));
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
18
+ mod
19
+ ));
20
+ var utils = __toESM(require("@iobroker/adapter-core"));
21
+ var import_panasonic_comfort_cloud_client = require("panasonic-comfort-cloud-client");
22
+ var _ = __toESM(require("lodash"));
23
+ var import_axios = __toESM(require("axios"));
38
24
  const REFRESH_INTERVAL_IN_MINUTES_DEFAULT = 5;
39
25
  class PanasonicComfortCloud extends utils.Adapter {
40
- constructor(options = {}) {
41
- super({
42
- ...options,
43
- name: 'panasonic-comfort-cloud',
44
- });
45
- this.comfortCloudClient = new panasonic_comfort_cloud_client_1.ComfortCloudClient();
46
- this.refreshIntervalInMinutes = REFRESH_INTERVAL_IN_MINUTES_DEFAULT;
47
- this.readonlyStateNames = [];
48
- this.on('ready', this.onReady.bind(this));
49
- this.on('objectChange', this.onObjectChange.bind(this));
50
- this.on('stateChange', this.onStateChange.bind(this));
51
- // this.on('message', this.onMessage.bind(this));
52
- this.on('unload', this.onUnload.bind(this));
26
+ constructor(options = {}) {
27
+ super({
28
+ ...options,
29
+ name: "panasonic-comfort-cloud"
30
+ });
31
+ this.comfortCloudClient = new import_panasonic_comfort_cloud_client.ComfortCloudClient();
32
+ this.refreshIntervalInMinutes = REFRESH_INTERVAL_IN_MINUTES_DEFAULT;
33
+ this.readonlyStateNames = [];
34
+ this.on("ready", this.onReady.bind(this));
35
+ this.on("objectChange", this.onObjectChange.bind(this));
36
+ this.on("stateChange", this.onStateChange.bind(this));
37
+ this.on("unload", this.onUnload.bind(this));
38
+ }
39
+ async onReady() {
40
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
41
+ this.refreshIntervalInMinutes = (_b = (_a = this.config) == null ? void 0 : _a.refreshInterval) != null ? _b : REFRESH_INTERVAL_IN_MINUTES_DEFAULT;
42
+ this.subscribeStates("*");
43
+ this.setState("info.connection", false, true);
44
+ const loadedAppVersion = await this.getCurrentAppVersion();
45
+ this.log.info(`Loaded app version from GitHub: ${loadedAppVersion}`);
46
+ if (loadedAppVersion && this.trimAll((_c = this.config) == null ? void 0 : _c.appVersionFromGithub) != this.trimAll(loadedAppVersion)) {
47
+ this.updateConfig({ appVersionFromGithub: this.trimAll(loadedAppVersion), password: this.encrypt((_d = this.config) == null ? void 0 : _d.password) });
48
+ return;
53
49
  }
54
- /**
55
- * Is called when databases are connected and adapter received configuration.
56
- */
57
- async onReady() {
58
- this.refreshIntervalInMinutes = this.config?.refreshInterval ?? REFRESH_INTERVAL_IN_MINUTES_DEFAULT;
59
- this.subscribeStates('*');
60
- this.setState('info.connection', false, true);
61
- const loadedAppVersion = await this.getCurrentAppVersion();
62
- this.log.info(`Loaded app version from GitHub: ${loadedAppVersion}`);
63
- if (loadedAppVersion && this.trimAll(this.config?.appVersionFromGithub) != this.trimAll(loadedAppVersion)) {
64
- this.updateConfig({ appVersionFromGithub: this.trimAll(loadedAppVersion), password: this.encrypt(this.config?.password) });
65
- return;
66
- }
67
- if (!this.config?.username || !this.config?.password) {
68
- this.log.error('Can not start without username or password. Please open config.');
69
- }
70
- else {
71
- if (this.config?.appVersionFromGithub != '' && this.config?.useAppVersionFromGithub) {
72
- this.log.debug(`Use AppVersion from Github ${this.config?.appVersionFromGithub}.`);
73
- this.comfortCloudClient = new panasonic_comfort_cloud_client_1.ComfortCloudClient(this.config?.appVersionFromGithub);
74
- }
75
- if (this.config?.appVersion != '') {
76
- this.log.debug(`Use configured AppVersion from Github ${this.config?.appVersionFromGithub}.`);
77
- this.comfortCloudClient = new panasonic_comfort_cloud_client_1.ComfortCloudClient(this.config?.appVersion);
78
- }
79
- else {
80
- this.log.debug(`Use default AppVersion.`);
81
- this.comfortCloudClient = new panasonic_comfort_cloud_client_1.ComfortCloudClient();
82
- }
83
- try {
84
- this.log.debug(`Try to login with username ${this.config.username}.`);
85
- await this.comfortCloudClient.login(this.config.username, this.config.password);
86
- this.log.info('Login successful.');
87
- this.setState('info.connection', true, true);
88
- this.log.debug('Create devices.');
89
- const groups = await this.comfortCloudClient.getGroups();
90
- await this.createDevices(groups);
91
- this.setupRefreshTimeout();
92
- }
93
- catch (error) {
94
- await this.handleClientError(error);
95
- }
96
- }
50
+ if (!((_e = this.config) == null ? void 0 : _e.username) || !((_f = this.config) == null ? void 0 : _f.password)) {
51
+ this.log.error("Can not start without username or password. Please open config.");
52
+ } else {
53
+ if (((_g = this.config) == null ? void 0 : _g.appVersionFromGithub) != "" && ((_h = this.config) == null ? void 0 : _h.useAppVersionFromGithub)) {
54
+ this.log.debug(`Use AppVersion from Github ${(_i = this.config) == null ? void 0 : _i.appVersionFromGithub}.`);
55
+ this.comfortCloudClient = new import_panasonic_comfort_cloud_client.ComfortCloudClient((_j = this.config) == null ? void 0 : _j.appVersionFromGithub);
56
+ } else if (((_k = this.config) == null ? void 0 : _k.appVersion) != "") {
57
+ this.log.debug(`Use configured AppVersion ${(_l = this.config) == null ? void 0 : _l.appVersion}.`);
58
+ this.comfortCloudClient = new import_panasonic_comfort_cloud_client.ComfortCloudClient((_m = this.config) == null ? void 0 : _m.appVersion);
59
+ } else {
60
+ this.log.debug(`Use default AppVersion.`);
61
+ this.comfortCloudClient = new import_panasonic_comfort_cloud_client.ComfortCloudClient();
62
+ }
63
+ try {
64
+ this.log.debug(`Try to login with username ${this.config.username}.`);
65
+ await this.comfortCloudClient.login(
66
+ this.config.username,
67
+ this.config.password
68
+ );
69
+ this.log.info("Login successful.");
70
+ this.setState("info.connection", true, true);
71
+ this.log.debug("Create devices.");
72
+ const groups = await this.comfortCloudClient.getGroups();
73
+ await this.createDevices(groups);
74
+ this.setupRefreshTimeout();
75
+ } catch (error) {
76
+ await this.handleClientError(error);
77
+ }
97
78
  }
98
- async refreshDeviceStates(device) {
99
- this.log.debug(`Refresh device ${device.name} (${device.guid}).`);
100
- this.log.debug(`${device.name}: guid => ${device.guid}.`);
101
- this.log.debug(`${device.name}: operate => ${device.operate}.`);
102
- await this.setStateChangedAsync(`${device.name}.operate`, device.operate, true);
103
- this.log.debug(`${device.name}: temperatureSet => ${device.temperatureSet}.`);
104
- await this.setStateChangedAsync(`${device.name}.temperatureSet`, device.temperatureSet, true);
105
- this.log.debug(`${device.name}: insideTemperature => ${device.insideTemperature}.`);
106
- await this.setStateChangedAsync(`${device.name}.insideTemperature`, device.insideTemperature, true);
107
- this.log.debug(`${device.name}: outTemperature => ${device.outTemperature}.`);
108
- await this.setStateChangedAsync(`${device.name}.outTemperature`, device.outTemperature, true);
109
- this.log.debug(`${device.name}: airSwingLR => ${device.airSwingLR}.`);
110
- await this.setStateChangedAsync(`${device.name}.airSwingLR`, device.airSwingLR, true);
111
- this.log.debug(`${device.name}: airSwingUD => ${device.airSwingUD}.`);
112
- await this.setStateChangedAsync(`${device.name}.airSwingUD`, device.airSwingUD, true);
113
- this.log.debug(`${device.name}: fanAutoMode => ${device.fanAutoMode}.`);
114
- await this.setStateChangedAsync(`${device.name}.fanAutoMode`, device.fanAutoMode, true);
115
- this.log.debug(`${device.name}: ecoMode => ${device.ecoMode}.`);
116
- await this.setStateChangedAsync(`${device.name}.ecoMode`, device.ecoMode, true);
117
- this.log.debug(`${device.name}: operationMode => ${device.operationMode}.`);
118
- await this.setStateChangedAsync(`${device.name}.operationMode`, device.operationMode, true);
119
- this.log.debug(`${device.name}: fanSpeed => ${device.fanSpeed}.`);
120
- await this.setStateChangedAsync(`${device.name}.fanSpeed`, device.fanSpeed, true);
121
- this.log.debug(`${device.name}: actualNanoe => ${device.actualNanoe}.`);
122
- await this.setStateChangedAsync(`${device.name}.actualNanoe`, device.actualNanoe, true);
123
- this.log.debug(`Refresh device ${device.name} finished.`);
79
+ }
80
+ async refreshDeviceStates(device) {
81
+ this.log.debug(`Refresh device ${device.name} (${device.guid}).`);
82
+ this.log.debug(`${device.name}: guid => ${device.guid}.`);
83
+ this.log.debug(`${device.name}: operate => ${device.operate}.`);
84
+ await this.setStateChangedAsync(
85
+ `${device.name}.operate`,
86
+ device.operate,
87
+ true
88
+ );
89
+ this.log.debug(`${device.name}: temperatureSet => ${device.temperatureSet}.`);
90
+ await this.setStateChangedAsync(
91
+ `${device.name}.temperatureSet`,
92
+ device.temperatureSet,
93
+ true
94
+ );
95
+ this.log.debug(`${device.name}: insideTemperature => ${device.insideTemperature}.`);
96
+ await this.setStateChangedAsync(
97
+ `${device.name}.insideTemperature`,
98
+ device.insideTemperature,
99
+ true
100
+ );
101
+ this.log.debug(`${device.name}: outTemperature => ${device.outTemperature}.`);
102
+ await this.setStateChangedAsync(
103
+ `${device.name}.outTemperature`,
104
+ device.outTemperature,
105
+ true
106
+ );
107
+ this.log.debug(`${device.name}: airSwingLR => ${device.airSwingLR}.`);
108
+ await this.setStateChangedAsync(
109
+ `${device.name}.airSwingLR`,
110
+ device.airSwingLR,
111
+ true
112
+ );
113
+ this.log.debug(`${device.name}: airSwingUD => ${device.airSwingUD}.`);
114
+ await this.setStateChangedAsync(
115
+ `${device.name}.airSwingUD`,
116
+ device.airSwingUD,
117
+ true
118
+ );
119
+ this.log.debug(`${device.name}: fanAutoMode => ${device.fanAutoMode}.`);
120
+ await this.setStateChangedAsync(
121
+ `${device.name}.fanAutoMode`,
122
+ device.fanAutoMode,
123
+ true
124
+ );
125
+ this.log.debug(`${device.name}: ecoMode => ${device.ecoMode}.`);
126
+ await this.setStateChangedAsync(
127
+ `${device.name}.ecoMode`,
128
+ device.ecoMode,
129
+ true
130
+ );
131
+ this.log.debug(`${device.name}: operationMode => ${device.operationMode}.`);
132
+ await this.setStateChangedAsync(
133
+ `${device.name}.operationMode`,
134
+ device.operationMode,
135
+ true
136
+ );
137
+ this.log.debug(`${device.name}: fanSpeed => ${device.fanSpeed}.`);
138
+ await this.setStateChangedAsync(
139
+ `${device.name}.fanSpeed`,
140
+ device.fanSpeed,
141
+ true
142
+ );
143
+ this.log.debug(`${device.name}: actualNanoe => ${device.actualNanoe}.`);
144
+ await this.setStateChangedAsync(
145
+ `${device.name}.actualNanoe`,
146
+ device.actualNanoe,
147
+ true
148
+ );
149
+ this.log.debug(`Refresh device ${device.name} finished.`);
150
+ }
151
+ async refreshDevice(guid, deviceName) {
152
+ try {
153
+ const device = await this.comfortCloudClient.getDevice(guid, deviceName);
154
+ if (!device) {
155
+ return;
156
+ }
157
+ if (!device.name) {
158
+ device.name = deviceName;
159
+ }
160
+ await this.refreshDeviceStates(device);
161
+ } catch (error) {
162
+ await this.handleClientError(error);
124
163
  }
125
- async refreshDevice(guid, deviceName) {
126
- try {
127
- const device = await this.comfortCloudClient.getDevice(guid, deviceName);
128
- if (!device) {
129
- return;
130
- }
131
- if (!device.name) {
132
- device.name = deviceName;
133
- }
134
- await this.refreshDeviceStates(device);
135
- }
136
- catch (error) {
137
- await this.handleClientError(error);
164
+ }
165
+ async refreshDevices() {
166
+ try {
167
+ this.log.debug("Refresh all devices.");
168
+ const groups = await this.comfortCloudClient.getGroups();
169
+ this.setState("info.connection", true, true);
170
+ const devices = _.flatMap(groups, (g) => g.devices);
171
+ const deviceInfos = _.map(devices, (d) => {
172
+ return { guid: d.guid, name: d.name };
173
+ });
174
+ await Promise.all(deviceInfos.map(async (deviceInfo) => {
175
+ const device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name);
176
+ if (device != null) {
177
+ device.name = deviceInfo.name;
178
+ device.guid = deviceInfo.guid;
179
+ await this.refreshDeviceStates(device);
138
180
  }
181
+ }));
182
+ } catch (error) {
183
+ await this.handleClientError(error);
139
184
  }
140
- async refreshDevices() {
141
- try {
142
- this.log.debug('Refresh all devices.');
143
- const groups = await this.comfortCloudClient.getGroups();
144
- this.setState('info.connection', true, true);
145
- const devices = _.flatMap(groups, g => g.devices);
146
- const deviceInfos = _.map(devices, d => { return { guid: d.guid, name: d.name }; });
147
- await Promise.all(deviceInfos.map(async (deviceInfo) => {
148
- const device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name);
149
- if (device != null) {
150
- device.name = deviceInfo.name;
151
- device.guid = deviceInfo.guid;
152
- await this.refreshDeviceStates(device);
153
- }
154
- }));
155
- }
156
- catch (error) {
157
- await this.handleClientError(error);
185
+ }
186
+ async createDevices(groups) {
187
+ const devices = await this.getDevicesAsync();
188
+ const names = _.map(devices, (value) => {
189
+ return value.common.name;
190
+ });
191
+ const devicesFromService = _.flatMap(groups, (g) => g.devices);
192
+ const deviceInfos = _.map(devicesFromService, (d) => {
193
+ return { guid: d.guid, name: d.name };
194
+ });
195
+ await Promise.all(deviceInfos.map(async (deviceInfo) => {
196
+ this.log.debug(`Device info from group ${deviceInfo.guid}, ${deviceInfo.name}.`);
197
+ let device = null;
198
+ try {
199
+ device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name);
200
+ } catch (error) {
201
+ await this.handleClientError(error);
202
+ }
203
+ if (device != null) {
204
+ if (_.includes(names, deviceInfo.name)) {
205
+ return;
158
206
  }
207
+ this.createDevice(deviceInfo.name);
208
+ this.createState(
209
+ deviceInfo.name,
210
+ "",
211
+ "guid",
212
+ { role: "info.address", write: false, def: deviceInfo.guid, type: "string" },
213
+ void 0
214
+ );
215
+ this.readonlyStateNames.push("guid");
216
+ this.createState(
217
+ deviceInfo.name,
218
+ "",
219
+ "operate",
220
+ {
221
+ role: "switch.power",
222
+ states: { 0: import_panasonic_comfort_cloud_client.Power[0], 1: import_panasonic_comfort_cloud_client.Power[1] },
223
+ write: true,
224
+ def: device.operate,
225
+ type: "number"
226
+ },
227
+ void 0
228
+ );
229
+ this.createState(
230
+ deviceInfo.name,
231
+ "",
232
+ "temperatureSet",
233
+ {
234
+ role: "level.temperature",
235
+ write: true,
236
+ def: device.temperatureSet,
237
+ type: "number"
238
+ },
239
+ void 0
240
+ );
241
+ this.createState(
242
+ deviceInfo.name,
243
+ "",
244
+ "insideTemperature",
245
+ {
246
+ role: "level.temperature",
247
+ write: false,
248
+ def: device.insideTemperature,
249
+ type: "number"
250
+ },
251
+ void 0
252
+ );
253
+ this.readonlyStateNames.push("insideTemperature");
254
+ this.createState(
255
+ deviceInfo.name,
256
+ "",
257
+ "outTemperature",
258
+ {
259
+ role: "level.temperature",
260
+ write: false,
261
+ def: device.outTemperature,
262
+ type: "number"
263
+ },
264
+ void 0
265
+ );
266
+ this.readonlyStateNames.push("outTemperature");
267
+ this.createState(
268
+ deviceInfo.name,
269
+ "",
270
+ "airSwingLR",
271
+ {
272
+ role: "state",
273
+ states: {
274
+ 0: import_panasonic_comfort_cloud_client.AirSwingLR[0],
275
+ 1: import_panasonic_comfort_cloud_client.AirSwingLR[1],
276
+ 2: import_panasonic_comfort_cloud_client.AirSwingLR[2],
277
+ 3: import_panasonic_comfort_cloud_client.AirSwingLR[3],
278
+ 4: import_panasonic_comfort_cloud_client.AirSwingLR[4]
279
+ },
280
+ write: true,
281
+ def: device.airSwingLR,
282
+ type: "number"
283
+ },
284
+ void 0
285
+ );
286
+ this.createState(
287
+ deviceInfo.name,
288
+ "",
289
+ "airSwingUD",
290
+ {
291
+ role: "state",
292
+ states: {
293
+ 0: import_panasonic_comfort_cloud_client.AirSwingUD[0],
294
+ 1: import_panasonic_comfort_cloud_client.AirSwingUD[1],
295
+ 2: import_panasonic_comfort_cloud_client.AirSwingUD[2],
296
+ 3: import_panasonic_comfort_cloud_client.AirSwingUD[3],
297
+ 4: import_panasonic_comfort_cloud_client.AirSwingUD[4]
298
+ },
299
+ write: true,
300
+ def: device.airSwingUD,
301
+ type: "number"
302
+ },
303
+ void 0
304
+ );
305
+ this.createState(
306
+ deviceInfo.name,
307
+ "",
308
+ "fanAutoMode",
309
+ {
310
+ role: "state",
311
+ states: {
312
+ 0: import_panasonic_comfort_cloud_client.FanAutoMode[0],
313
+ 1: import_panasonic_comfort_cloud_client.FanAutoMode[1],
314
+ 2: import_panasonic_comfort_cloud_client.FanAutoMode[2],
315
+ 3: import_panasonic_comfort_cloud_client.FanAutoMode[3]
316
+ },
317
+ write: true,
318
+ def: device.fanAutoMode,
319
+ type: "number"
320
+ },
321
+ void 0
322
+ );
323
+ this.createState(
324
+ deviceInfo.name,
325
+ "",
326
+ "ecoMode",
327
+ {
328
+ role: "state",
329
+ states: { 0: import_panasonic_comfort_cloud_client.EcoMode[0], 1: import_panasonic_comfort_cloud_client.EcoMode[1], 2: import_panasonic_comfort_cloud_client.EcoMode[2] },
330
+ write: true,
331
+ def: device.ecoMode,
332
+ type: "number"
333
+ },
334
+ void 0
335
+ );
336
+ this.createState(
337
+ deviceInfo.name,
338
+ "",
339
+ "operationMode",
340
+ {
341
+ role: "state",
342
+ states: {
343
+ 0: import_panasonic_comfort_cloud_client.OperationMode[0],
344
+ 1: import_panasonic_comfort_cloud_client.OperationMode[1],
345
+ 2: import_panasonic_comfort_cloud_client.OperationMode[2],
346
+ 3: import_panasonic_comfort_cloud_client.OperationMode[3],
347
+ 4: import_panasonic_comfort_cloud_client.OperationMode[4]
348
+ },
349
+ write: true,
350
+ def: device.operationMode,
351
+ type: "number"
352
+ },
353
+ void 0
354
+ );
355
+ this.createState(
356
+ deviceInfo.name,
357
+ "",
358
+ "fanSpeed",
359
+ {
360
+ role: "state",
361
+ states: {
362
+ 0: import_panasonic_comfort_cloud_client.FanSpeed[0],
363
+ 1: import_panasonic_comfort_cloud_client.FanSpeed[1],
364
+ 2: import_panasonic_comfort_cloud_client.FanSpeed[2],
365
+ 3: import_panasonic_comfort_cloud_client.FanSpeed[3],
366
+ 4: import_panasonic_comfort_cloud_client.FanSpeed[4],
367
+ 5: import_panasonic_comfort_cloud_client.FanSpeed[5]
368
+ },
369
+ write: true,
370
+ def: device.fanSpeed,
371
+ type: "number"
372
+ },
373
+ void 0
374
+ );
375
+ this.createState(
376
+ deviceInfo.name,
377
+ "",
378
+ "actualNanoe",
379
+ {
380
+ role: "state",
381
+ states: {
382
+ 0: import_panasonic_comfort_cloud_client.NanoeMode[0],
383
+ 1: import_panasonic_comfort_cloud_client.NanoeMode[1],
384
+ 2: import_panasonic_comfort_cloud_client.NanoeMode[2],
385
+ 3: import_panasonic_comfort_cloud_client.NanoeMode[3],
386
+ 4: import_panasonic_comfort_cloud_client.NanoeMode[4]
387
+ },
388
+ write: true,
389
+ def: device.actualNanoe,
390
+ type: "number"
391
+ },
392
+ void 0
393
+ );
394
+ this.log.info(`Device ${deviceInfo.name} created.`);
395
+ }
396
+ }));
397
+ this.log.debug("Device creation completed.");
398
+ }
399
+ async updateDevice(deviceName, stateName, state) {
400
+ if (this.readonlyStateNames.includes(stateName)) {
401
+ return;
159
402
  }
160
- async createDevices(groups) {
161
- const devices = await this.getDevicesAsync();
162
- const names = _.map(devices, (value) => {
163
- return value.common.name;
164
- });
165
- const devicesFromService = _.flatMap(groups, g => g.devices);
166
- const deviceInfos = _.map(devicesFromService, d => { return { guid: d.guid, name: d.name }; });
167
- await Promise.all(deviceInfos.map(async (deviceInfo) => {
168
- this.log.debug(`Device info from group ${deviceInfo.guid}, ${deviceInfo.name}.`);
169
- let device = null;
170
- try {
171
- device = await this.comfortCloudClient.getDevice(deviceInfo.guid, deviceInfo.name);
172
- }
173
- catch (error) {
174
- await this.handleClientError(error);
175
- }
176
- if (device != null) {
177
- if (_.includes(names, deviceInfo.name)) {
178
- return;
179
- }
180
- this.createDevice(deviceInfo.name);
181
- this.createState(deviceInfo.name, '', 'guid', { role: 'info.address', write: false, def: deviceInfo.guid, type: 'string' }, undefined);
182
- this.readonlyStateNames.push('guid');
183
- this.createState(deviceInfo.name, '', 'operate', {
184
- role: 'switch.power',
185
- states: { 0: panasonic_comfort_cloud_client_1.Power[0], 1: panasonic_comfort_cloud_client_1.Power[1] },
186
- write: true,
187
- def: device.operate,
188
- type: 'number',
189
- }, undefined);
190
- this.createState(deviceInfo.name, '', 'temperatureSet', {
191
- role: 'level.temperature',
192
- write: true,
193
- def: device.temperatureSet,
194
- type: 'number',
195
- }, undefined);
196
- this.createState(deviceInfo.name, '', 'insideTemperature', {
197
- role: 'level.temperature',
198
- write: false,
199
- def: device.insideTemperature,
200
- type: 'number',
201
- }, undefined);
202
- this.readonlyStateNames.push('insideTemperature');
203
- this.createState(deviceInfo.name, '', 'outTemperature', {
204
- role: 'level.temperature',
205
- write: false,
206
- def: device.outTemperature,
207
- type: 'number',
208
- }, undefined);
209
- this.readonlyStateNames.push('outTemperature');
210
- this.createState(deviceInfo.name, '', 'airSwingLR', {
211
- role: 'state',
212
- states: {
213
- 0: panasonic_comfort_cloud_client_1.AirSwingLR[0],
214
- 1: panasonic_comfort_cloud_client_1.AirSwingLR[1],
215
- 2: panasonic_comfort_cloud_client_1.AirSwingLR[2],
216
- 3: panasonic_comfort_cloud_client_1.AirSwingLR[3],
217
- 4: panasonic_comfort_cloud_client_1.AirSwingLR[4],
218
- },
219
- write: true,
220
- def: device.airSwingLR,
221
- type: 'number',
222
- }, undefined);
223
- this.createState(deviceInfo.name, '', 'airSwingUD', {
224
- role: 'state',
225
- states: {
226
- 0: panasonic_comfort_cloud_client_1.AirSwingUD[0],
227
- 1: panasonic_comfort_cloud_client_1.AirSwingUD[1],
228
- 2: panasonic_comfort_cloud_client_1.AirSwingUD[2],
229
- 3: panasonic_comfort_cloud_client_1.AirSwingUD[3],
230
- 4: panasonic_comfort_cloud_client_1.AirSwingUD[4],
231
- },
232
- write: true,
233
- def: device.airSwingUD,
234
- type: 'number',
235
- }, undefined);
236
- this.createState(deviceInfo.name, '', 'fanAutoMode', {
237
- role: 'state',
238
- states: {
239
- 0: panasonic_comfort_cloud_client_1.FanAutoMode[0],
240
- 1: panasonic_comfort_cloud_client_1.FanAutoMode[1],
241
- 2: panasonic_comfort_cloud_client_1.FanAutoMode[2],
242
- 3: panasonic_comfort_cloud_client_1.FanAutoMode[3],
243
- },
244
- write: true,
245
- def: device.fanAutoMode,
246
- type: 'number',
247
- }, undefined);
248
- this.createState(deviceInfo.name, '', 'ecoMode', {
249
- role: 'state',
250
- states: { 0: panasonic_comfort_cloud_client_1.EcoMode[0], 1: panasonic_comfort_cloud_client_1.EcoMode[1], 2: panasonic_comfort_cloud_client_1.EcoMode[2] },
251
- write: true,
252
- def: device.ecoMode,
253
- type: 'number',
254
- }, undefined);
255
- this.createState(deviceInfo.name, '', 'operationMode', {
256
- role: 'state',
257
- states: {
258
- 0: panasonic_comfort_cloud_client_1.OperationMode[0],
259
- 1: panasonic_comfort_cloud_client_1.OperationMode[1],
260
- 2: panasonic_comfort_cloud_client_1.OperationMode[2],
261
- 3: panasonic_comfort_cloud_client_1.OperationMode[3],
262
- 4: panasonic_comfort_cloud_client_1.OperationMode[4],
263
- },
264
- write: true,
265
- def: device.operationMode,
266
- type: 'number',
267
- }, undefined);
268
- this.createState(deviceInfo.name, '', 'fanSpeed', {
269
- role: 'state',
270
- states: {
271
- 0: panasonic_comfort_cloud_client_1.FanSpeed[0],
272
- 1: panasonic_comfort_cloud_client_1.FanSpeed[1],
273
- 2: panasonic_comfort_cloud_client_1.FanSpeed[2],
274
- 3: panasonic_comfort_cloud_client_1.FanSpeed[3],
275
- 4: panasonic_comfort_cloud_client_1.FanSpeed[4],
276
- 5: panasonic_comfort_cloud_client_1.FanSpeed[5],
277
- },
278
- write: true,
279
- def: device.fanSpeed,
280
- type: 'number',
281
- }, undefined);
282
- this.createState(deviceInfo.name, '', 'actualNanoe', {
283
- role: 'state',
284
- states: {
285
- 0: panasonic_comfort_cloud_client_1.NanoeMode[0],
286
- 1: panasonic_comfort_cloud_client_1.NanoeMode[1],
287
- 2: panasonic_comfort_cloud_client_1.NanoeMode[2],
288
- 3: panasonic_comfort_cloud_client_1.NanoeMode[3],
289
- 4: panasonic_comfort_cloud_client_1.NanoeMode[4],
290
- },
291
- write: true,
292
- def: device.actualNanoe,
293
- type: 'number',
294
- }, undefined);
295
- this.log.info(`Device ${deviceInfo.name} created.`);
296
- }
297
- }));
298
- this.log.debug('Device creation completed.');
403
+ if (!state.ack) {
404
+ const stateObj = await this.getObjectAsync(`${deviceName}.${stateName}`);
405
+ const stateCommon = stateObj == null ? void 0 : stateObj.common;
406
+ if ((stateCommon == null ? void 0 : stateCommon.write) == false) {
407
+ return;
408
+ }
409
+ const guidState = await this.getStateAsync(`${deviceName}.guid`);
410
+ this.log.debug(
411
+ `Update device guid=${guidState == null ? void 0 : guidState.val} state=${stateName}`
412
+ );
413
+ const parameters = {};
414
+ parameters[stateName] = state.val;
415
+ if (!(guidState == null ? void 0 : guidState.val)) {
416
+ return;
417
+ }
418
+ try {
419
+ this.log.debug(`Set device parameter ${JSON.stringify(parameters)} for device ${guidState == null ? void 0 : guidState.val}`);
420
+ await this.comfortCloudClient.setParameters(
421
+ guidState == null ? void 0 : guidState.val,
422
+ parameters
423
+ );
424
+ this.log.debug(`Refresh device ${deviceName}`);
425
+ await this.refreshDevice(guidState == null ? void 0 : guidState.val, deviceName);
426
+ } catch (error) {
427
+ await this.handleClientError(error);
428
+ }
299
429
  }
300
- async updateDevice(deviceName, stateName, state) {
301
- if (this.readonlyStateNames.includes(stateName)) {
302
- return;
303
- }
304
- if (!state.ack) {
305
- const stateObj = await this.getObjectAsync(`${deviceName}.${stateName}`);
306
- const stateCommon = stateObj?.common;
307
- if (stateCommon?.write == false) {
308
- return;
309
- }
310
- const guidState = await this.getStateAsync(`${deviceName}.guid`);
311
- this.log.debug(`Update device guid=${guidState?.val} state=${stateName}`);
312
- const parameters = {};
313
- parameters[stateName] = state.val;
314
- if (!guidState?.val) {
315
- return;
316
- }
317
- try {
318
- this.log.debug(`Set device parameter ${JSON.stringify(parameters)} for device ${guidState?.val}`);
319
- await this.comfortCloudClient.setParameters(guidState?.val, parameters);
320
- this.log.debug(`Refresh device ${deviceName}`);
321
- await this.refreshDevice(guidState?.val, deviceName);
322
- }
323
- catch (error) {
324
- await this.handleClientError(error);
325
- }
326
- }
430
+ }
431
+ onUnload(callback) {
432
+ try {
433
+ if (this.refreshTimeout)
434
+ clearTimeout(this.refreshTimeout);
435
+ this.log.info("cleaned everything up...");
436
+ callback();
437
+ } catch (e) {
438
+ callback();
327
439
  }
328
- /**
329
- * Is called when adapter shuts down - callback has to be called under any circumstances!
330
- */
331
- onUnload(callback) {
332
- try {
333
- if (this.refreshTimeout)
334
- clearTimeout(this.refreshTimeout);
335
- this.log.info('cleaned everything up...');
336
- callback();
337
- }
338
- catch (e) {
339
- callback();
340
- }
440
+ }
441
+ onObjectChange(id, obj) {
442
+ if (obj) {
443
+ this.log.info(`object ${id} changed: ${JSON.stringify(obj)}`);
444
+ } else {
445
+ this.log.info(`object ${id} deleted`);
341
446
  }
342
- /**
343
- * Is called if a subscribed object changes
344
- */
345
- onObjectChange(id, obj) {
346
- if (obj) {
347
- // The object was changed
348
- this.log.info(`object ${id} changed: ${JSON.stringify(obj)}`);
349
- }
350
- else {
351
- // The object was deleted
352
- this.log.info(`object ${id} deleted`);
353
- }
447
+ }
448
+ async onStateChange(id, state) {
449
+ if (state) {
450
+ const elements = id.split(".");
451
+ const deviceName = elements[elements.length - 2];
452
+ const stateName = elements[elements.length - 1];
453
+ try {
454
+ await this.updateDevice(deviceName, stateName, state);
455
+ } catch (error) {
456
+ await this.handleClientError(error);
457
+ }
458
+ this.log.info(
459
+ `state ${id} changed: ${state.val} (ack = ${state.ack})`
460
+ );
461
+ } else {
462
+ this.log.info(`state ${id} deleted`);
354
463
  }
355
- /**
356
- * Is called if a subscribed state changes
357
- */
358
- async onStateChange(id, state) {
359
- if (state) {
360
- const elements = id.split('.');
361
- const deviceName = elements[elements.length - 2];
362
- const stateName = elements[elements.length - 1];
363
- try {
364
- await this.updateDevice(deviceName, stateName, state);
365
- }
366
- catch (error) {
367
- await this.handleClientError(error);
368
- }
369
- // The state was changed
370
- this.log.info(`state ${id} changed: ${state.val} (ack = ${state.ack})`);
371
- }
372
- else {
373
- // The state was deleted
374
- this.log.info(`state ${id} deleted`);
375
- }
376
- }
377
- async getCurrentAppVersion() {
378
- const response = await axios_1.default.get('https://raw.githubusercontent.com/marc2016/ioBroker.panasonic-comfort-cloud/master/.currentAppVersion');
379
- if (response.status !== 200)
380
- return '';
381
- const text = await response.data;
382
- return text;
383
- }
384
- async handleClientError(error) {
385
- this.log.debug('Try to handle error.');
386
- if (error instanceof panasonic_comfort_cloud_client_1.TokenExpiredError) {
387
- this.log.info(`Token of comfort cloud client expired. Trying to login again. Code=${error.code}. Stack: ${error.stack}`);
388
- this.setState('info.connection', false, true);
389
- await this.comfortCloudClient.login(this.config.username, this.config.password);
390
- this.setState('info.connection', true, true);
391
- this.log.info('Login successful.');
392
- }
393
- else if (error instanceof panasonic_comfort_cloud_client_1.ServiceError) {
394
- this.setState('info.connection', false, true);
395
- this.log.error(`Service error: ${error.message}. Code=${error.code}. Stack: ${error.stack}`);
396
- }
397
- else if (error instanceof Error) {
398
- this.log.error(`Unknown error: ${error}. Stack: ${error.stack}`);
399
- }
400
- }
401
- setupRefreshTimeout() {
402
- this.log.debug('setupRefreshTimeout');
403
- const refreshIntervalInMilliseconds = this.refreshIntervalInMinutes * 60 * 1000;
404
- this.log.debug(`refreshIntervalInMilliseconds=${refreshIntervalInMilliseconds}`);
405
- this.refreshTimeout = setTimeout(this.refreshTimeoutFunc.bind(this), refreshIntervalInMilliseconds);
406
- }
407
- async refreshTimeoutFunc() {
408
- this.log.debug(`refreshTimeoutFunc started.`);
409
- try {
410
- await this.refreshDevices();
411
- this.setupRefreshTimeout();
412
- }
413
- catch (error) {
414
- await this.handleClientError(error);
415
- }
464
+ }
465
+ async getCurrentAppVersion() {
466
+ const response = await import_axios.default.get("https://raw.githubusercontent.com/marc2016/ioBroker.panasonic-comfort-cloud/master/.currentAppVersion");
467
+ if (response.status !== 200)
468
+ return "";
469
+ const text = await response.data;
470
+ return text;
471
+ }
472
+ async handleClientError(error) {
473
+ this.log.debug("Try to handle error.");
474
+ if (error instanceof import_panasonic_comfort_cloud_client.TokenExpiredError) {
475
+ this.log.info(
476
+ `Token of comfort cloud client expired. Trying to login again. Code=${error.code}. Stack: ${error.stack}`
477
+ );
478
+ this.setState("info.connection", false, true);
479
+ await this.comfortCloudClient.login(
480
+ this.config.username,
481
+ this.config.password
482
+ );
483
+ this.setState("info.connection", true, true);
484
+ this.log.info("Login successful.");
485
+ } else if (error instanceof import_panasonic_comfort_cloud_client.ServiceError) {
486
+ this.setState("info.connection", false, true);
487
+ this.log.error(
488
+ `Service error: ${error.message}. Code=${error.code}. Stack: ${error.stack}`
489
+ );
490
+ } else if (error instanceof Error) {
491
+ this.log.error(`Unknown error: ${error}. Stack: ${error.stack}`);
416
492
  }
417
- trimAll(text) {
418
- const newText = text.trim().replace(/(\r\n|\n|\r)/gm, '');
419
- return newText;
493
+ }
494
+ setupRefreshTimeout() {
495
+ this.log.debug("setupRefreshTimeout");
496
+ const refreshIntervalInMilliseconds = this.refreshIntervalInMinutes * 60 * 1e3;
497
+ this.log.debug(`refreshIntervalInMilliseconds=${refreshIntervalInMilliseconds}`);
498
+ this.refreshTimeout = setTimeout(this.refreshTimeoutFunc.bind(this), refreshIntervalInMilliseconds);
499
+ }
500
+ async refreshTimeoutFunc() {
501
+ this.log.debug(`refreshTimeoutFunc started.`);
502
+ try {
503
+ await this.refreshDevices();
504
+ this.setupRefreshTimeout();
505
+ } catch (error) {
506
+ await this.handleClientError(error);
420
507
  }
508
+ }
509
+ trimAll(text) {
510
+ const newText = text.trim().replace(/(\r\n|\n|\r)/gm, "");
511
+ return newText;
512
+ }
421
513
  }
422
514
  if (module.parent) {
423
- // Export the constructor in compact mode
424
- module.exports = (options) => new PanasonicComfortCloud(options);
425
- }
426
- else {
427
- // otherwise start the instance directly
428
- (() => new PanasonicComfortCloud())();
515
+ module.exports = (options) => new PanasonicComfortCloud(options);
516
+ } else {
517
+ (() => new PanasonicComfortCloud())();
429
518
  }
430
- //# sourceMappingURL=main.js.map
519
+ //# sourceMappingURL=main.js.map
package/build/main.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {
2
+ "version": 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 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.handleClientError(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 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 }));\n } catch (error) {\n await this.handleClientError(error)\n }\n }\n\n private async createDevices(groups: Array<Group>): Promise<void> {\n const devices = await this.getDevicesAsync()\n const names = _.map(devices, (value) => {\n return value.common.name\n })\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.handleClientError(error)\n }\n \n if(device != null) {\n if (_.includes(names, deviceInfo.name)) {\n return\n }\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\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 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
+ "names": ["axios"]
7
+ }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "panasonic-comfort-cloud",
4
- "version": "2.2.3",
4
+ "version": "2.2.4",
5
5
  "news": {
6
+ "2.2.4": {
7
+ "en": "Fixed load AppVersion from Github.",
8
+ "de": "Behobene AppVersion von Github.",
9
+ "ru": "Фиксированная нагрузка AppVersion от Github.",
10
+ "pt": "AppVersion de carga fixa do Github.",
11
+ "nl": "Gerepareerde lading van Github.",
12
+ "fr": "Charge fixe AppVersion de Github.",
13
+ "it": "AppVersione di carico fisso da Github.",
14
+ "es": "Carga fija AppVersion de Github.",
15
+ "pl": "Wykorzystywany ładunek z Github.",
16
+ "uk": "Виправлено навантаження AppVersion від Github.",
17
+ "zh-cn": "来自吉特布的固定载荷。."
18
+ },
6
19
  "2.2.3": {
7
20
  "en": "Added support for admin 5 UI (jsonConfig).\nUpdated packages.\nFixed translation.",
8
21
  "de": "Unterstützung für admin 5 UI (jsonConfig.).\nAktualisierte Pakete.\nBehobene Übersetzung.",
@@ -80,19 +93,6 @@
80
93
  "pl": "panasonic-comfort-cloud-client zaktualizowany do nowej wersji. (ponowna zmiana wersji aplikacji)",
81
94
  "zh-cn": "panasonic-comfort-cloud-client 更新到新版本。 (appVersion又变了)",
82
95
  "uk": "panasonic-comfort-cloud-client оновлено до нової версії. (AppVersion знову змінено)"
83
- },
84
- "2.0.5": {
85
- "en": "Translation for news added.",
86
- "de": "Übersetzung für Nachrichten hinzugefügt.",
87
- "ru": "Добавлен перевод новостей.",
88
- "pt": "Tradução para notícias adicionada.",
89
- "nl": "Vertaling voor nieuws toegevoegd.",
90
- "fr": "Traduction pour les nouvelles ajoutée.",
91
- "it": "Aggiunta la traduzione per le notizie.",
92
- "es": "Traducción para noticias añadidas.",
93
- "pl": "Dodano tłumaczenie wiadomości.",
94
- "zh-cn": "添加了新闻翻译。",
95
- "uk": "Додано переклад для новин."
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.panasonic-comfort-cloud",
3
- "version": "2.2.3",
3
+ "version": "2.2.4",
4
4
  "description": "Adapter for Panasonic Comfort Cloud",
5
5
  "author": {
6
6
  "name": "marc",
@@ -19,7 +19,7 @@
19
19
  "@iobroker/adapter-core": "^3.0.3",
20
20
  "@types/lodash": "^4.14.199",
21
21
  "lodash": "^4.17.21",
22
- "panasonic-comfort-cloud-client": "1.2.5",
22
+ "panasonic-comfort-cloud-client": "1.2.6",
23
23
  "ts-enum-util": "^4.0.2"
24
24
  },
25
25
  "devDependencies": {