homebridge-melcloud-control 4.6.3-beta.1 → 4.6.4-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +3 -3
- package/src/deviceata.js +5 -4
- package/src/deviceatw.js +5 -4
- package/src/deviceerv.js +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -24,6 +24,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
24
24
|
- For plugin < v4.6.0 use Homebridge UI <= v5.5.0
|
|
25
25
|
- For plugin >= v4.6.0 use Homebridge UI >= v5.13.0
|
|
26
26
|
|
|
27
|
+
# [4.6.3] - (01.01.2026)
|
|
28
|
+
|
|
29
|
+
## Changes
|
|
30
|
+
|
|
31
|
+
- config schema updated
|
|
32
|
+
- cleanup
|
|
33
|
+
|
|
27
34
|
# [4.6.2] - (01.01.2026)
|
|
28
35
|
|
|
29
36
|
## Changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "MELCloud Control",
|
|
3
3
|
"name": "homebridge-melcloud-control",
|
|
4
|
-
"version": "4.6.
|
|
4
|
+
"version": "4.6.4-beta.0",
|
|
5
5
|
"description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "grzegorz914",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"LICENSE"
|
|
32
32
|
],
|
|
33
33
|
"engines": {
|
|
34
|
-
"homebridge": "^1.8.0 || ^2.0.0 || ^2.0.0-beta.
|
|
34
|
+
"homebridge": "^1.8.0 || ^2.0.0 || ^2.0.0-beta.68 || ^2.0.0-alpha.81",
|
|
35
35
|
"node": "^20 || ^22 || ^24 || ^25"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"axios": "^1.13.2",
|
|
41
41
|
"express": "^5.2.1",
|
|
42
42
|
"puppeteer": "^24.34.0",
|
|
43
|
-
"ws": "^8.
|
|
43
|
+
"ws": "^8.19.0"
|
|
44
44
|
},
|
|
45
45
|
"keywords": [
|
|
46
46
|
"homebridge",
|
package/src/deviceata.js
CHANGED
|
@@ -988,7 +988,6 @@ class DeviceAta extends EventEmitter {
|
|
|
988
988
|
this.presetControlServices = [];
|
|
989
989
|
this.presetControlSensorServices = [];
|
|
990
990
|
this.presets.forEach((preset, i) => {
|
|
991
|
-
const presetData = presetsOnServer.find(p => p.ID === preset.id);
|
|
992
991
|
|
|
993
992
|
//get name
|
|
994
993
|
const name = preset.name || `Preset ${i}`;
|
|
@@ -1016,6 +1015,8 @@ class DeviceAta extends EventEmitter {
|
|
|
1016
1015
|
switch (state) {
|
|
1017
1016
|
case true:
|
|
1018
1017
|
preset.previousSettings = deviceData.Device;
|
|
1018
|
+
|
|
1019
|
+
const presetData = presetsOnServer.find(p => String(p.ID) === preset.id);
|
|
1019
1020
|
deviceData.Device.Power = presetData.Power;
|
|
1020
1021
|
deviceData.Device.OperationMode = presetData.OperationMode;
|
|
1021
1022
|
deviceData.Device.SetTemperature = presetData.SetTemperature;
|
|
@@ -1065,7 +1066,6 @@ class DeviceAta extends EventEmitter {
|
|
|
1065
1066
|
if (this.logDebug) this.emit('debug', `Prepare schedules services`);
|
|
1066
1067
|
this.scheduleSensorServices = [];
|
|
1067
1068
|
this.schedules.forEach((schedule, i) => {
|
|
1068
|
-
const scheduleData = schedulesOnServer.find(s => s.Id === schedule.id);
|
|
1069
1069
|
|
|
1070
1070
|
//get name
|
|
1071
1071
|
const name = schedule.name || `Schedule ${i}`;
|
|
@@ -1092,6 +1092,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1092
1092
|
})
|
|
1093
1093
|
.onSet(async (state) => {
|
|
1094
1094
|
try {
|
|
1095
|
+
const scheduleData = schedulesOnServer.find(s => s.Id === schedule.id);
|
|
1095
1096
|
deviceData.ScheduleEnabled = state;
|
|
1096
1097
|
if (this.logInfo) this.emit('info', `Schedules: ${state ? 'Enabled' : 'Disabled'}`);
|
|
1097
1098
|
await this.melCloudAta.send(this.accountType, this.displayType, deviceData, 'schedule', scheduleData);
|
|
@@ -1140,7 +1141,6 @@ class DeviceAta extends EventEmitter {
|
|
|
1140
1141
|
this.sceneControlServices = [];
|
|
1141
1142
|
this.sceneControlSensorServices = [];
|
|
1142
1143
|
this.scenes.forEach((scene, i) => {
|
|
1143
|
-
const sceneData = scenesOnServer.find(s => s.Id === scene.id);
|
|
1144
1144
|
|
|
1145
1145
|
//get preset name
|
|
1146
1146
|
const name = scene.name || `Scene ${i}`;
|
|
@@ -1165,6 +1165,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1165
1165
|
})
|
|
1166
1166
|
.onSet(async (state) => {
|
|
1167
1167
|
try {
|
|
1168
|
+
const sceneData = scenesOnServer.find(s => s.Id === scene.id);
|
|
1168
1169
|
sceneData.Enabled = state;
|
|
1169
1170
|
if (this.logInfo) this.emit('info', `Scene ${name}: ${state ? 'Set' : 'Unset'}`);
|
|
1170
1171
|
await this.melCloudAta.send(this.accountType, this.displayType, deviceData, 'scene', sceneData);
|
|
@@ -1816,7 +1817,7 @@ class DeviceAta extends EventEmitter {
|
|
|
1816
1817
|
//presets
|
|
1817
1818
|
if (this.presets.length > 0) {
|
|
1818
1819
|
this.presets.forEach((preset, i) => {
|
|
1819
|
-
const presetData = presetsOnServer.find(p => p.ID === preset.id);
|
|
1820
|
+
const presetData = presetsOnServer.find(p => String(p.ID) === preset.id);
|
|
1820
1821
|
if (!presetData) return;
|
|
1821
1822
|
|
|
1822
1823
|
const characteristicType = preset.characteristicType;
|
package/src/deviceatw.js
CHANGED
|
@@ -1221,7 +1221,6 @@ class DeviceAtw extends EventEmitter {
|
|
|
1221
1221
|
this.presetControlServices = [];
|
|
1222
1222
|
this.presetControlSensorServices = [];
|
|
1223
1223
|
this.presets.forEach((preset, i) => {
|
|
1224
|
-
const presetData = presetsOnServer.find(p => p.ID === preset.id);
|
|
1225
1224
|
|
|
1226
1225
|
//get name
|
|
1227
1226
|
const name = preset.name || `Preset ${i}`;
|
|
@@ -1249,6 +1248,8 @@ class DeviceAtw extends EventEmitter {
|
|
|
1249
1248
|
switch (state) {
|
|
1250
1249
|
case true:
|
|
1251
1250
|
preset.previousSettings = deviceData.Device;
|
|
1251
|
+
|
|
1252
|
+
const presetData = presetsOnServer.find(p => String(p.ID) === preset.id);
|
|
1252
1253
|
deviceData.Device.Power = presetData.Power;
|
|
1253
1254
|
deviceData.Device.OperationMode = presetData.OperationMode;
|
|
1254
1255
|
deviceData.Device.SetTemperature = presetData.SetTemperature;
|
|
@@ -1298,7 +1299,6 @@ class DeviceAtw extends EventEmitter {
|
|
|
1298
1299
|
if (this.logDebug) this.emit('debug', `Prepare schedules services`);
|
|
1299
1300
|
this.scheduleSensorServices = [];
|
|
1300
1301
|
this.schedules.forEach((schedule, i) => {
|
|
1301
|
-
const scheduleData = schedulesOnServer.find(s => s.Id === schedule.id);
|
|
1302
1302
|
|
|
1303
1303
|
//get name
|
|
1304
1304
|
const name = schedule.name || `Schedule ${i}`;
|
|
@@ -1325,6 +1325,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1325
1325
|
})
|
|
1326
1326
|
.onSet(async (state) => {
|
|
1327
1327
|
try {
|
|
1328
|
+
const scheduleData = schedulesOnServer.find(s => s.Id === schedule.id);
|
|
1328
1329
|
deviceData.ScheduleEnabled = state;
|
|
1329
1330
|
if (this.logInfo) this.emit('info', `Schedules: ${state ? 'Enabled' : 'Disabled'}`);
|
|
1330
1331
|
await this.melCloudAtw.send(this.accountType, this.displayType, deviceData, 'schedule', scheduleData);
|
|
@@ -1373,7 +1374,6 @@ class DeviceAtw extends EventEmitter {
|
|
|
1373
1374
|
this.sceneControlServices = [];
|
|
1374
1375
|
this.sceneControlSensorServices = [];
|
|
1375
1376
|
this.scenes.forEach((scene, i) => {
|
|
1376
|
-
const sceneData = scenesOnServer.find(s => s.Id === scene.id);
|
|
1377
1377
|
|
|
1378
1378
|
//get name
|
|
1379
1379
|
const name = scene.name || `Scens ${i}`;
|
|
@@ -1398,6 +1398,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
1398
1398
|
})
|
|
1399
1399
|
.onSet(async (state) => {
|
|
1400
1400
|
try {
|
|
1401
|
+
const sceneData = scenesOnServer.find(s => s.Id === scene.id);
|
|
1401
1402
|
sceneData.Enabled = state;
|
|
1402
1403
|
if (this.logInfo) this.emit('info', `Scene ${name}: ${state ? 'Set' : 'Unset'}`);
|
|
1403
1404
|
await this.melCloudAtw.send(this.accountType, this.displayType, deviceData, 'scene', sceneData);
|
|
@@ -2203,7 +2204,7 @@ class DeviceAtw extends EventEmitter {
|
|
|
2203
2204
|
//presets
|
|
2204
2205
|
if (this.presets.length > 0) {
|
|
2205
2206
|
this.presets.forEach((preset, i) => {
|
|
2206
|
-
const presetData = presetsOnServer.find(p => p.ID === preset.id);
|
|
2207
|
+
const presetData = presetsOnServer.find(p => String(p.ID) === preset.id);
|
|
2207
2208
|
if (!presetData) return;
|
|
2208
2209
|
|
|
2209
2210
|
const characteristicType = preset.characteristicType;
|
package/src/deviceerv.js
CHANGED
|
@@ -761,7 +761,6 @@ class DeviceErv extends EventEmitter {
|
|
|
761
761
|
this.presetControlServices = [];
|
|
762
762
|
this.presetControlSensorServices = [];
|
|
763
763
|
this.presets.forEach((preset, i) => {
|
|
764
|
-
const presetData = presetsOnServer.find(p => p.ID === preset.id);
|
|
765
764
|
|
|
766
765
|
//get name
|
|
767
766
|
const name = preset.name || `Preset ${i}`;
|
|
@@ -789,6 +788,8 @@ class DeviceErv extends EventEmitter {
|
|
|
789
788
|
switch (state) {
|
|
790
789
|
case true:
|
|
791
790
|
preset.previousSettings = deviceData.Device;
|
|
791
|
+
|
|
792
|
+
const presetData = presetsOnServer.find(p => String(p.ID) === preset.id);
|
|
792
793
|
deviceData.Device.Power = presetData.Power;
|
|
793
794
|
deviceData.Device.OperationMode = presetData.OperationMode;
|
|
794
795
|
deviceData.Device.SetTemperature = presetData.SetTemperature;
|
|
@@ -838,7 +839,6 @@ class DeviceErv extends EventEmitter {
|
|
|
838
839
|
if (this.logDebug) this.emit('debug', `Prepare schedules services`);
|
|
839
840
|
this.scheduleSensorServices = [];
|
|
840
841
|
this.schedules.forEach((schedule, i) => {
|
|
841
|
-
const scheduleData = schedulesOnServer.find(s => s.Id === schedule.id);
|
|
842
842
|
|
|
843
843
|
//get name
|
|
844
844
|
const name = schedule.name || `Schedule ${i}`;
|
|
@@ -865,6 +865,7 @@ class DeviceErv extends EventEmitter {
|
|
|
865
865
|
})
|
|
866
866
|
.onSet(async (state) => {
|
|
867
867
|
try {
|
|
868
|
+
const scheduleData = schedulesOnServer.find(s => s.Id === schedule.id);
|
|
868
869
|
deviceData.ScheduleEnabled = state;
|
|
869
870
|
if (this.logInfo) this.emit('info', `Schedules: ${state ? 'Enabled' : 'Disabled'}`);
|
|
870
871
|
await this.melCloudErv.send(this.accountType, this.displayType, deviceData, 'schedule', scheduleData);
|
|
@@ -913,7 +914,6 @@ class DeviceErv extends EventEmitter {
|
|
|
913
914
|
this.sceneControlServices = [];
|
|
914
915
|
this.sceneControlSensorServices = [];
|
|
915
916
|
this.scenes.forEach((scene, i) => {
|
|
916
|
-
const sceneData = scenesOnServer.find(s => s.Id === scene.id);
|
|
917
917
|
|
|
918
918
|
//get name
|
|
919
919
|
const name = scene.name || `Scene ${i}`;
|
|
@@ -938,6 +938,7 @@ class DeviceErv extends EventEmitter {
|
|
|
938
938
|
})
|
|
939
939
|
.onSet(async (state) => {
|
|
940
940
|
try {
|
|
941
|
+
const sceneData = scenesOnServer.find(s => s.Id === scene.id);
|
|
941
942
|
sceneData.Enabled = state;
|
|
942
943
|
if (this.logInfo) this.emit('info', `Scene ${name}: ${state ? 'Set' : 'Unset'}`);
|
|
943
944
|
await this.melCloudErv.send(this.accountType, this.displayType, deviceData, 'scene', sceneData);
|
|
@@ -1423,7 +1424,7 @@ class DeviceErv extends EventEmitter {
|
|
|
1423
1424
|
//presets
|
|
1424
1425
|
if (this.presets.length > 0) {
|
|
1425
1426
|
this.presets.forEach((preset, i) => {
|
|
1426
|
-
const presetData = presetsOnServer.find(p => p.ID === preset.id);
|
|
1427
|
+
const presetData = presetsOnServer.find(p => String(p.ID) === preset.id);
|
|
1427
1428
|
if (!presetData) return;
|
|
1428
1429
|
|
|
1429
1430
|
const characteristicType = preset.characteristicType;
|