homebridge-melcloud-control 3.1.3-beta.1 → 3.1.3-beta.11

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.
@@ -213,17 +213,20 @@
213
213
  "id": {
214
214
  "title": "ID",
215
215
  "type": "integer",
216
- "required": true
216
+ "required": true,
217
+ "readonly": true
217
218
  },
218
219
  "type": {
219
220
  "title": "Type",
220
221
  "type": "integer",
221
- "required": true
222
+ "required": true,
223
+ "readonly": true
222
224
  },
223
225
  "typeString": {
224
226
  "title": "Type",
225
227
  "type": "string",
226
- "required": true
228
+ "required": true,
229
+ "readonly": true
227
230
  },
228
231
  "name": {
229
232
  "title": "Name",
@@ -757,17 +760,20 @@
757
760
  "id": {
758
761
  "title": "Mode",
759
762
  "type": "integer",
760
- "required": true
763
+ "required": true,
764
+ "readonly": true
761
765
  },
762
766
  "type": {
763
767
  "title": "Type",
764
768
  "type": "integer",
765
- "required": true
769
+ "required": true,
770
+ "readonly": true
766
771
  },
767
772
  "typeString": {
768
773
  "title": "Type",
769
774
  "type": "string",
770
- "required": true
775
+ "required": true,
776
+ "readonly": true
771
777
  },
772
778
  "name": {
773
779
  "title": "Name",
@@ -1168,17 +1174,20 @@
1168
1174
  "id": {
1169
1175
  "title": "Mode",
1170
1176
  "type": "integer",
1171
- "required": true
1177
+ "required": true,
1178
+ "readonly": true
1172
1179
  },
1173
1180
  "type": {
1174
1181
  "title": "Type",
1175
1182
  "type": "integer",
1176
- "required": true
1183
+ "required": true,
1184
+ "readonly": true
1177
1185
  },
1178
1186
  "typeString": {
1179
1187
  "title": "Type",
1180
1188
  "type": "string",
1181
- "required": true
1189
+ "required": true,
1190
+ "readonly": true
1182
1191
  },
1183
1192
  "name": {
1184
1193
  "title": "Name",
@@ -1244,7 +1253,8 @@
1244
1253
  "id": {
1245
1254
  "title": "ID",
1246
1255
  "type": "integer",
1247
- "required": true
1256
+ "required": true,
1257
+ "readonly": true
1248
1258
  },
1249
1259
  "name": {
1250
1260
  "title": "Name",
@@ -186,19 +186,17 @@
186
186
  const pusDeviceTypeErv = deviceType === 3 ? devicesByType.erv.push(device) : false;
187
187
  };
188
188
 
189
- //get device info fom devices ata
190
- devicesByType.ata.forEach(async (device, index) => {
189
+ //device ata
190
+ for (const device of devicesByType.ata) {
191
191
  const deviceId = device.DeviceID;
192
192
  const deviceType = device.Type;
193
- const deviceTypeText = "Air Conditioner";
194
193
  const deviceName = device.DeviceName;
195
194
  const devicePresets = device.Presets ?? [];
196
195
 
197
- //device ata
198
196
  const deviceAta = {
199
197
  id: deviceId,
200
198
  type: deviceType,
201
- typeString: deviceTypeText,
199
+ typeString: "Air Conditioner",
202
200
  name: deviceName,
203
201
  displayMode: 1,
204
202
  heatDryFanMode: 1,
@@ -210,15 +208,6 @@
210
208
  buttonsSensors: []
211
209
  };
212
210
 
213
- const ataDevicesExist = pluginConfig[0].accounts[this.deviceIndex].ataDevices ?? false;
214
- const ataDevices = ataDevicesExist ? pluginConfig[0].accounts[this.deviceIndex].ataDevices : pluginConfig[0].accounts[this.deviceIndex].ataDevices = [];
215
-
216
- const ataDeviceIdExist = ataDevices.some(device => device.id === deviceId);
217
- const pushTypeAta = ataDeviceIdExist ? false : ataDevices.push(deviceAta);
218
- const pushNewDevice = ataDeviceIdExist ? false : newDevices.ata.push(device);
219
- const devicesCount = newDevices.ata.length;
220
- textAta = `ATA: ${devicesCount}`
221
-
222
211
  //presets
223
212
  for (const preset of devicePresets) {
224
213
  const presetId = preset.ID;
@@ -228,35 +217,25 @@
228
217
  preset.name = presetName;
229
218
  preset.displayType == 0;
230
219
  preset.namePrefix = false;
231
-
232
- const ataPresetsExist = pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets ?? false;
233
- const ataPresets = ataPresetsExist ? pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets : pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets = [];
234
- const ataPresetIdExist = ataPresets.some(preset => preset.id === presetId);
235
- const pushPresetAta = ataPresetIdExist ? false : ataPresets.push(preset);
236
- const pushNewPreset = ataPresetIdExist ? false : newDevices.ataPresets.push(preset);
237
- const presetsCount = newDevices.ataPresets.length;
238
- textAtaPresets = `ATA Presets: ${presetsCount}`
220
+ deviceAta.presets.push(preset);
239
221
  };
222
+ textAtaPresets = `ATA Presets: ${newDevices.ataPresets.length}`
223
+ newDevices.ata.push(deviceAta);
224
+ };
225
+ pluginConfig[0].accounts[this.deviceIndex].ataDevices = newDevices.ata;
226
+ textAta = `ATA: ${newDevices.ata.length}`
240
227
 
241
- //compare presets
242
- const presetsOnMelCloud = devicePresets;
243
- const presetsAtaInConfig = pluginConfig[0].accounts[this.deviceIndex].ataDevices[index].presets;
244
- presetsAtaInConfig = syncArrays(presetsOnMelCloud, presetsAtaInConfig);
245
- });
246
-
247
- //get device info fom devices atw
248
- devicesByType.atw.forEach(async (device, index) => {
228
+ //device atw
229
+ for (const device of devicesByType.atw) {
249
230
  const deviceId = device.DeviceID;
250
231
  const deviceType = device.Type;
251
- const deviceTypeText = "Heat Pump";
252
232
  const deviceName = device.DeviceName;
253
233
  const devicePresets = device.Presets ?? [];
254
234
 
255
- //device atw
256
235
  const deviceAtw = {
257
236
  id: deviceId,
258
237
  type: deviceType,
259
- typeString: deviceTypeText,
238
+ typeString: "Heat Pump",
260
239
  name: deviceName,
261
240
  displayMode: 1,
262
241
  temperatureSensor: false,
@@ -273,15 +252,8 @@
273
252
  presets: [],
274
253
  buttonsSensors: []
275
254
  };
276
- const atwDevicesExist = pluginConfig[0].accounts[this.deviceIndex].atwDevices ?? false;
277
- const atwDevices = atwDevicesExist ? pluginConfig[0].accounts[this.deviceIndex].atwDevices : pluginConfig[0].accounts[this.deviceIndex].atwDevices = [];
278
- const atwDeviceIdExist = atwDevices.some(device => device.id === deviceId);
279
- const pushTypeAtw = atwDeviceIdExist ? false : atwDevices.push(deviceAtw);
280
- const pushNewDevice = atwDeviceIdExist ? false : newDevices.atw.push(device);
281
- const devicesCount = newDevices.atw.length;
282
- textAtw = `ATW: ${devicesCount}`
283
-
284
- //presetzs
255
+
256
+ //presets
285
257
  for (const preset of devicePresets) {
286
258
  const presetId = preset.ID;
287
259
  const presetName = preset.NumberDescription;
@@ -290,34 +262,25 @@
290
262
  preset.name = presetName;
291
263
  preset.displayType == 0;
292
264
  preset.namePrefix = false;
293
-
294
- const atwPresetsExist = pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets ?? false;
295
- const atwPresets = atwPresetsExist ? pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets : pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets = [];
296
- const atwPresetIdExist = atwPresets.some(preset => preset.id === presetId);
297
- const pushPresetAtw = atwPresetIdExist ? false : atwPresets.push(preset);
298
- const pushNewPreset = atwPresetIdExist ? false : newDevices.atwPresets.push(preset);
299
- const presetsCount = newDevices.atwPresets.length;
300
- textAtwPresets = `ATW Presets: ${presetsCount}`
265
+ deviceAtw.presets.push(preset);
301
266
  };
267
+ textAtwPresets = `ATW Presets: ${newDevices.atwPresets.length}`
268
+ newDevices.ata.push(deviceAtw);
269
+ };
270
+ pluginConfig[0].accounts[this.deviceIndex].atwDevices = newDevices.atw;
271
+ textAtw = `ATW: ${newDevices.atw.length}`
302
272
 
303
- const presetsOnMelCloud = devicePresets;
304
- const presetsAtwInConfig = pluginConfig[0].accounts[this.deviceIndex].atwDevices[index].presets;
305
- presetsAtwInConfig = syncArrays(presetsOnMelCloud, presetsAtwInConfig);
306
- });
307
-
308
- //get device info fom devices erv
309
- devicesByType.erv.forEach(async (device, index) => {
273
+ //device erv
274
+ for (const device of devicesByType.erv) {
310
275
  const deviceId = device.DeviceID;
311
276
  const deviceType = device.Type;
312
- const deviceTypeText = "Energy Recovery Ventilation";
313
277
  const deviceName = device.DeviceName;
314
278
  const devicePresets = device.Presets ?? [];
315
279
 
316
- //device erv
317
280
  const deviceErv = {
318
281
  id: deviceId,
319
282
  type: deviceType,
320
- typeString: deviceTypeText,
283
+ typeString: "Energy Recovery Ventilation",
321
284
  name: deviceName,
322
285
  displayMode: 1,
323
286
  temperatureSensor: false,
@@ -328,13 +291,6 @@
328
291
  presets: [],
329
292
  buttonsSensors: []
330
293
  };
331
- const ervDevicesExist = pluginConfig[0].accounts[this.deviceIndex].ervDevices ?? false;
332
- const ervDevices = ervDevicesExist ? pluginConfig[0].accounts[this.deviceIndex].ervDevices : pluginConfig[0].accounts[this.deviceIndex].ervDevices = [];
333
- const ervDeviceIdExist = ervDevices.some(device => device.id === deviceId);
334
- const pushTypeerv = ervDeviceIdExist ? false : ervDevices.push(deviceErv);
335
- const pushNewDevice = ervDeviceIdExist ? false : newDevices.erv.push(device);
336
- const devicesCount = newDevices.erv.length;
337
- textErv = `ERV: ${devicesCount}`
338
294
 
339
295
  //presets
340
296
  for (const preset of devicePresets) {
@@ -345,31 +301,13 @@
345
301
  preset.name = presetName;
346
302
  preset.displayType == 0;
347
303
  preset.namePrefix = false;
348
-
349
- const ervPresetsExist = pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets ?? false;
350
- const ervPresets = ervPresetsExist ? pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets : pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets = [];
351
- const ervPresetIdExist = ervPresets.some(preset => preset.id === presetId);
352
- const pushPresetErv = ervPresetIdExist ? false : ervPresets.push(preset);
353
- const pushNewPreset = ervPresetIdExist ? false : newDevices.ervPresets.push(preset);
354
- const presetsCount = newDevices.ervPresets.length;
355
- textErvPresets = `ERV Presets: ${presetsCount}`
304
+ deviceErv.presets.push(preset);
356
305
  };
357
-
358
- const presetsOnMelCloud = devicePresets;
359
- const presetsErvInConfig = pluginConfig[0].accounts[this.deviceIndex].ervDevices[index].presets;
360
- presetsErvInConfig = await syncArrays(presetsOnMelCloud, presetsErvInConfig);
361
- });
362
-
363
- //compare arrays and update array in config
364
- const devicesOnMelCloud = devices;
365
- const devicesAtaInConfig = pluginConfig[0].accounts[this.deviceIndex].ataDevices;
366
- devicesAtaInConfig = await syncArrays(devicesOnMelCloud, devicesAtaInConfig);
367
-
368
- const devicesAtwInConfig = pluginConfig[0].accounts[this.deviceIndex].atwDevices;
369
- devicesAtwInConfig = await syncArrays(devicesOnMelCloud, devicesAtwInConfig);
370
-
371
- const devicesErvInConfig = pluginConfig[0].accounts[this.deviceIndex].ervDevices;
372
- devicesErvInConfig = await syncArrays(devicesOnMelCloud, devicesErvInConfig);
306
+ textErvPresets = `ERV Presets: ${newDevices.ErvPresets.length}`
307
+ newDevices.erv.push(deviceErv);
308
+ };
309
+ pluginConfig[0].accounts[this.deviceIndex].ervDevices = newDevices.erv;
310
+ textErv = `ERV: ${newDevices.erv.length}`
373
311
 
374
312
  const newDevicesCount = newDevices.ata.length + newDevices.atw.length + newDevices.erv.length ?? 0;
375
313
  const newPresetsCount = newDevices.ataPresets.length + newDevices.atwPresets.length + newDevices.ervPresets.length ?? 0;
@@ -414,23 +352,6 @@
414
352
  break;
415
353
  };
416
354
 
417
- async function syncArrays(devicesOnMelCloud, devicesInConfig) {
418
- // Create a Set of IDs from devicesOnMelCloud for quick lookup
419
- const devicesOnMelCloudId = new Set(devicesOnMelCloud.map(device => device.DeviceID));
420
-
421
- // Filter devicesInConfig to keep only objects that exist in devicesOnMelCloud
422
- devicesInConfig = devicesInConfig.filter(device => devicesOnMelCloudId.has(device.DeviceID));
423
-
424
- // Add objects from devicesOnMelCloud to devicesInConfig that do not exist in devicesInConfig
425
- devicesOnMelCloud.forEach(device => {
426
- if (!devicesInConfig.some(item => item.id === device.id)) {
427
- devicesInConfig.push(device);
428
- }
429
- });
430
-
431
- return devicesInConfig;
432
- }
433
-
434
355
  homebridge.hideSpinner();
435
356
  } catch (e) {
436
357
  document.getElementById('info').innerHTML = 'Please try again.';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.1.3-beta.1",
4
+ "version": "3.1.3-beta.11",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",