homebridge-melcloud-control 4.5.5-beta.6 → 4.5.5-beta.8
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 +22 -21
- package/homebridge-ui/server.js +3 -3
- package/package.json +1 -1
- package/src/deviceata.js +2 -2
|
@@ -139,8 +139,6 @@
|
|
|
139
139
|
container.appendChild(button);
|
|
140
140
|
|
|
141
141
|
button.addEventListener('click', async () => {
|
|
142
|
-
this.account = account;
|
|
143
|
-
|
|
144
142
|
// Zmieniamy klasę wszystkich przycisków
|
|
145
143
|
accounts.forEach((_, j) => {
|
|
146
144
|
document.getElementById(`button${j}`).className = (j === i ? 'btn btn-primary' : 'btn btn-secondary');
|
|
@@ -157,6 +155,8 @@
|
|
|
157
155
|
formElements.language.value = account.language || '0';
|
|
158
156
|
formElements.accountType.value = account.type || 'disabled';
|
|
159
157
|
formElements.logIn.disabled = !(account.name && account.user && account.passwd && account.language && account.type);
|
|
158
|
+
|
|
159
|
+
this.account = account;
|
|
160
160
|
});
|
|
161
161
|
});
|
|
162
162
|
|
|
@@ -249,19 +249,19 @@
|
|
|
249
249
|
|
|
250
250
|
// Login & Sync Logic
|
|
251
251
|
document.getElementById('logIn').addEventListener('click', async () => {
|
|
252
|
-
homebridge.showSpinner();
|
|
253
252
|
document.getElementById('logIn').className = "btn btn-primary";
|
|
254
|
-
updateInfo('info', '', 'white');
|
|
253
|
+
updateInfo('info', 'Connecting to MELCloud', 'white');
|
|
255
254
|
updateInfo('info1', '', 'white');
|
|
256
255
|
updateInfo('info2', '', 'white');
|
|
256
|
+
homebridge.showSpinner();
|
|
257
257
|
|
|
258
258
|
try {
|
|
259
259
|
const account = this.account;
|
|
260
260
|
const response = await homebridge.request('/connect', account);
|
|
261
261
|
|
|
262
262
|
if (!response.State) {
|
|
263
|
-
homebridge.hideSpinner();
|
|
264
263
|
updateInfo('info', response.Info, 'red');
|
|
264
|
+
homebridge.hideSpinner();
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
267
|
|
|
@@ -271,21 +271,22 @@
|
|
|
271
271
|
const scenesInMelCloud = response.Scenes ?? [];
|
|
272
272
|
|
|
273
273
|
// Split devices by type
|
|
274
|
-
response.Devices
|
|
274
|
+
const devices = response.Devices;
|
|
275
|
+
for (const device of devices) {
|
|
275
276
|
if (device.Type === 0) devicesInMelCloudByType.ata.push(device);
|
|
276
277
|
if (device.Type === 1) devicesInMelCloudByType.atw.push(device);
|
|
277
278
|
if (device.Type === 3) devicesInMelCloudByType.erv.push(device);
|
|
278
|
-
}
|
|
279
|
+
};
|
|
279
280
|
|
|
280
281
|
// Clean up local config
|
|
281
282
|
account.ataDevices = (account.ataDevices ?? []).filter(d => String(d.id) !== '0');
|
|
282
283
|
account.atwDevices = (account.atwDevices ?? []).filter(d => String(d.id) !== '0');
|
|
283
284
|
account.ervDevices = (account.ervDevices ?? []).filter(d => String(d.id) !== '0');
|
|
284
285
|
|
|
285
|
-
const
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
286
|
+
const removedFromConfig = { ata: [], atw: [], erv: [], presets: [], schedules: [], scenes: [] };
|
|
287
|
+
removedFromConfig.ata = removeStaleEntities(account.ataDevices, devicesInMelCloudByType.ata, d => d.id, d => d.DeviceID);
|
|
288
|
+
removedFromConfig.atw = removeStaleEntities(account.atwDevices, devicesInMelCloudByType.atw, d => d.id, d => d.DeviceID);
|
|
289
|
+
removedFromConfig.erv = removeStaleEntities(account.ervDevices, devicesInMelCloudByType.erv, d => d.id, d => d.DeviceID);
|
|
289
290
|
|
|
290
291
|
// Map UnitId → Scenes
|
|
291
292
|
const unitIdToScenes = mapUnitIdToScenes(scenesInMelCloud);
|
|
@@ -386,31 +387,31 @@
|
|
|
386
387
|
const newPresetsCount = newInMelCloud.ataPresets.length + newInMelCloud.atwPresets.length + newInMelCloud.ervPresets.length;
|
|
387
388
|
const newSchedulesCount = newInMelCloud.ataSchedules.length + newInMelCloud.atwSchedules.length + newInMelCloud.ervSchedules.length;
|
|
388
389
|
const newScenesCount = newInMelCloud.ataScenes.length + newInMelCloud.atwScenes.length + newInMelCloud.ervScenes.length;
|
|
389
|
-
const removedDevicesCount =
|
|
390
|
+
const removedDevicesCount = removedFromConfig.ata.length + removedFromConfig.atw.length + removedFromConfig.erv.length;
|
|
390
391
|
const removedPresetsCount = removedFromConfig.presets.length;
|
|
391
392
|
const removedSchedulesCount = removedFromConfig.schedules.length;
|
|
392
393
|
const removedScenesCount = removedFromConfig.scenes.length;
|
|
393
394
|
|
|
394
395
|
if (!newDevicesCount && !newPresetsCount && !newSchedulesCount && !newScenesCount && !removedDevicesCount && !removedPresetsCount && !removedSchedulesCount && !removedScenesCount) {
|
|
395
396
|
updateInfo('info', 'No changes detected.', 'white');
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
}
|
|
397
|
+
}
|
|
398
|
+
if (newDevicesCount || newPresetsCount || newSchedulesCount || newScenesCount) {
|
|
399
|
+
updateInfo('info', `Found new ${newDevicesCount ? `devices:` : ''} ${newInMelCloud.ata.length ? `ATA: ${newInMelCloud.ata.length},` : ''} ${newInMelCloud.atw.length ? `ATW: ${newInMelCloud.atw.length},` : ''} ${newInMelCloud.erv.length ? `ERV: ${newInMelCloud.erv.length},` : ''} ${newPresetsCount ? `presets:` : ''} ${newInMelCloud.ataPresets.length ? `ATA: ${newInMelCloud.ataPresets.length},` : ''} ${newInMelCloud.atwPresets.length ? `ATW: ${newInMelCloud.atwPresets.length}, ` : ''} ${newInMelCloud.ervPresets.length ? `ERV: ${newInMelCloud.ervPresets.length},` : ''} ${newSchedulesCount ? `schedules:` : ''} ${newInMelCloud.ataSchedules.length ? `ATA: ${newInMelCloud.ataSchedules.length},` : ''} ${newInMelCloud.atwSchedules.length ? `ATW: ${newInMelCloud.atwSchedules.length},` : ''} ${newInMelCloud.ervSchedules.length ? `ERV: ${newInMelCloud.ervSchedules.length}, ` : ''} ${newScenesCount ? `scenes:` : ''} ${newInMelCloud.ataScenes.length ? `ATA: ${newInMelCloud.ataScenes.length},` : ''} ${newInMelCloud.atwScenes.length ? `ATW: ${newInMelCloud.atwScenes.length},` : ''} ${newInMelCloud.ervScenes.length ? `ERV: ${newInMelCloud.ervScenes.length}` : ''}.`, 'green');
|
|
400
|
+
}
|
|
401
|
+
if (removedDevicesCount || removedPresetsCount || removedSchedulesCount || removedScenesCount) {
|
|
402
|
+
updateInfo('info1', `Removed old ${removedDevicesCount ? `devices:` : ''} ${removedFromConfig.ata.length ? `ATA: ${removedFromConfig.ata.length},` : ''} ${removedFromConfig.atw.length ? `ATW: ${removedFromConfig.atw.length},` : ''} ${removedFromConfig.erv.length ? `ERV: ${removedFromConfig.erv.length},` : ''} ${removedPresetsCount ? `presets: ${removedPresetsCount},` : ''} ${removedSchedulesCount ? `schedules: ${removedSchedulesCount},` : ''} ${removedScenesCount ? `scenes: ${removedScenesCount}` : ''}.`, 'orange');
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
await homebridge.updatePluginConfig(pluginConfig);
|
|
406
406
|
await homebridge.savePluginConfig(pluginConfig);
|
|
407
|
-
|
|
408
407
|
} catch (error) {
|
|
409
|
-
updateInfo('info', `Prepare config error
|
|
408
|
+
updateInfo('info', `Prepare config error`, "yellow");
|
|
409
|
+
updateInfo('info1', `Error: ${JSON.stringify(error)}`, "red");
|
|
410
410
|
} finally {
|
|
411
411
|
document.getElementById('logIn').className = "btn btn-secondary";
|
|
412
412
|
homebridge.hideSpinner();
|
|
413
413
|
}
|
|
414
414
|
});
|
|
415
|
+
|
|
415
416
|
})();
|
|
416
417
|
</script>
|
package/homebridge-ui/server.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "MELCloud Control",
|
|
3
3
|
"name": "homebridge-melcloud-control",
|
|
4
|
-
"version": "4.5.5-beta.
|
|
4
|
+
"version": "4.5.5-beta.8",
|
|
5
5
|
"description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "grzegorz914",
|
package/src/deviceata.js
CHANGED