homebridge-melcloud-control 3.1.3-beta.0 → 3.1.3-beta.10
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/homebridge-ui/public/index.html +32 -105
- package/package.json +1 -1
|
@@ -186,19 +186,17 @@
|
|
|
186
186
|
const pusDeviceTypeErv = deviceType === 3 ? devicesByType.erv.push(device) : false;
|
|
187
187
|
};
|
|
188
188
|
|
|
189
|
-
//
|
|
190
|
-
|
|
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:
|
|
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,27 @@
|
|
|
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
|
+
newDevices.ataPresets.push(preset);
|
|
239
221
|
};
|
|
222
|
+
deviceAta.presets = newDevices.ataPresets;
|
|
223
|
+
textAtaPresets = `ATA Presets: ${newDevices.ataPresets.length}`
|
|
240
224
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
});
|
|
225
|
+
newDevices.ata.push(deviceAta);
|
|
226
|
+
};
|
|
227
|
+
pluginConfig[0].accounts[this.deviceIndex].ataDevices = newDevices.ata;
|
|
228
|
+
textAta = `ATA: ${newDevices.ata.length}`
|
|
246
229
|
|
|
247
|
-
//
|
|
248
|
-
|
|
230
|
+
//device atw
|
|
231
|
+
for (const device of devicesByType.atw) {
|
|
249
232
|
const deviceId = device.DeviceID;
|
|
250
233
|
const deviceType = device.Type;
|
|
251
|
-
const deviceTypeText = "Heat Pump";
|
|
252
234
|
const deviceName = device.DeviceName;
|
|
253
235
|
const devicePresets = device.Presets ?? [];
|
|
254
236
|
|
|
255
|
-
//device atw
|
|
256
237
|
const deviceAtw = {
|
|
257
238
|
id: deviceId,
|
|
258
239
|
type: deviceType,
|
|
259
|
-
typeString:
|
|
240
|
+
typeString: "Heat Pump",
|
|
260
241
|
name: deviceName,
|
|
261
242
|
displayMode: 1,
|
|
262
243
|
temperatureSensor: false,
|
|
@@ -273,15 +254,8 @@
|
|
|
273
254
|
presets: [],
|
|
274
255
|
buttonsSensors: []
|
|
275
256
|
};
|
|
276
|
-
|
|
277
|
-
|
|
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
|
|
257
|
+
|
|
258
|
+
//presets
|
|
285
259
|
for (const preset of devicePresets) {
|
|
286
260
|
const presetId = preset.ID;
|
|
287
261
|
const presetName = preset.NumberDescription;
|
|
@@ -290,34 +264,27 @@
|
|
|
290
264
|
preset.name = presetName;
|
|
291
265
|
preset.displayType == 0;
|
|
292
266
|
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}`
|
|
267
|
+
newDevices.atwPresets.push(preset);
|
|
301
268
|
};
|
|
269
|
+
textAtwPresets = `ATW Presets: ${newDevices.atwPresets.length}`
|
|
302
270
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
271
|
+
deviceAtw.presets = deviceAtw.atwPresets;
|
|
272
|
+
newDevices.ata.push(deviceAtw);
|
|
273
|
+
};
|
|
274
|
+
pluginConfig[0].accounts[this.deviceIndex].atwDevices = newDevices.atw;
|
|
275
|
+
textAtw = `ATW: ${newDevices.atw.length}`
|
|
307
276
|
|
|
308
|
-
//
|
|
309
|
-
|
|
277
|
+
//device erv
|
|
278
|
+
for (const device of devicesByType.erv) {
|
|
310
279
|
const deviceId = device.DeviceID;
|
|
311
280
|
const deviceType = device.Type;
|
|
312
|
-
const deviceTypeText = "Energy Recovery Ventilation";
|
|
313
281
|
const deviceName = device.DeviceName;
|
|
314
282
|
const devicePresets = device.Presets ?? [];
|
|
315
283
|
|
|
316
|
-
//device erv
|
|
317
284
|
const deviceErv = {
|
|
318
285
|
id: deviceId,
|
|
319
286
|
type: deviceType,
|
|
320
|
-
typeString:
|
|
287
|
+
typeString: "Energy Recovery Ventilation",
|
|
321
288
|
name: deviceName,
|
|
322
289
|
displayMode: 1,
|
|
323
290
|
temperatureSensor: false,
|
|
@@ -328,13 +295,6 @@
|
|
|
328
295
|
presets: [],
|
|
329
296
|
buttonsSensors: []
|
|
330
297
|
};
|
|
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
298
|
|
|
339
299
|
//presets
|
|
340
300
|
for (const preset of devicePresets) {
|
|
@@ -345,31 +305,15 @@
|
|
|
345
305
|
preset.name = presetName;
|
|
346
306
|
preset.displayType == 0;
|
|
347
307
|
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}`
|
|
308
|
+
newDevices.atwPresets.push(preset);
|
|
356
309
|
};
|
|
310
|
+
textErvPresets = `ERV Presets: ${newDevices.ErvPresets.length}`
|
|
357
311
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
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);
|
|
312
|
+
deviceErv.presets = deviceErv.ervPresets;
|
|
313
|
+
newDevices.erv.push(deviceErv);
|
|
314
|
+
};
|
|
315
|
+
pluginConfig[0].accounts[this.deviceIndex].ervDevices = newDevices.erv;
|
|
316
|
+
textErv = `ERV: ${newDevices.erv.length}`
|
|
373
317
|
|
|
374
318
|
const newDevicesCount = newDevices.ata.length + newDevices.atw.length + newDevices.erv.length ?? 0;
|
|
375
319
|
const newPresetsCount = newDevices.ataPresets.length + newDevices.atwPresets.length + newDevices.ervPresets.length ?? 0;
|
|
@@ -414,23 +358,6 @@
|
|
|
414
358
|
break;
|
|
415
359
|
};
|
|
416
360
|
|
|
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
361
|
homebridge.hideSpinner();
|
|
435
362
|
} catch (e) {
|
|
436
363
|
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.
|
|
4
|
+
"version": "3.1.3-beta.10",
|
|
5
5
|
"description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "grzegorz914",
|