homebridge-melcloud-control 4.2.5-beta.27 → 4.2.5-beta.28

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 CHANGED
@@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
27
27
  ## Changes
28
28
 
29
29
  - fix device control stop working after some time
30
+ - updated presets, schedules, scenes characteristics
30
31
  - stability and performance improvements
31
32
  - config schema updated
32
33
  - readme updated
package/README.md CHANGED
@@ -31,12 +31,13 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
31
31
  * Support multiple accounts, buildings, floors, areas.
32
32
  * Support temperature display units `Celsius/Fahrenheit`.
33
33
  * Support assing inividual operating mode for `Heat/Cool/Auto`.
34
- * Support direct `Presets` control, only MELCloud.
35
- * Support direct `Schedules` control, only MELCloud Home.
36
- * Support direct `Frost protection` control, only MELCloud Home.
37
- * Support direct `Overheat Protection` control, only MELCloud Home.
38
- * Support direct `Holiday Mode` control.
39
- * Support direct `Functions` control using extra `Buttons`, switch it to `OFF` restore previous device state.
34
+ * Support direct `Presets`, only MELCloud.
35
+ * Support direct `Schedules`, only MELCloud Home.
36
+ * Support direct `Scenes`, only MELCloud Home.
37
+ * Support direct `Frost protection`, only MELCloud Home.
38
+ * Support direct `Overheat Protection`, only MELCloud Home.
39
+ * Support direct `Holiday Mode`.
40
+ * Support direct `Functions`, using extra `Buttons`, switch it to `OFF` restore previous device state.
40
41
  * Support automations, shortcuts and Siri.
41
42
  * Support external integrations, [RESTFul](https://github.com/grzegorz914/homebridge-melcloud-control?tab=readme-ov-file#restful-integration), [MQTT](https://github.com/grzegorz914/homebridge-melcloud-control?tab=readme-ov-file#mqtt-integration).
42
43
  * Control devices over local network You need use ESP module and [Tasmota Control](https://github.com/grzegorz914/homebridge-tasmota-control) plugin.
@@ -70,7 +71,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
70
71
  * Frost protection `ON/OFF`.
71
72
  * Overheat protection `ON/OFF`.
72
73
  * Holiday mode `ON/OFF`.
73
- * Schedule `ON/OFF`.
74
+ * Schedules `ON/OFF`.
74
75
  * Scene `ON/OFF`.
75
76
  * Sensors:
76
77
  * For automation and notifications.
@@ -88,7 +89,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
88
89
  * Frost protection.
89
90
  * Overheat protection.
90
91
  * Holiday mode.
91
- * Shedule control.
92
+ * Shedules control.
92
93
  * Shedule active.
93
94
  * Scene control.
94
95
  * Error.
@@ -129,7 +130,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
129
130
  * Physical lock controls `LOCK/UNLOCK`.
130
131
  * Presets `SET/UNSET`.
131
132
  * Holiday mode `ON/OFF`.
132
- * Schedule `ON/OFF`.
133
+ * Schedules `ON/OFF`.
133
134
  * Scene `ON/OFF`.
134
135
  * Sensors:
135
136
  * For automation and notifications.
@@ -144,7 +145,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
144
145
  * Flow Temperature Zone 1, 2, Hot Water.
145
146
  * Return Temperature Zone 1, 2, Hot Water.
146
147
  * Holiday mode.
147
- * Shedule control.
148
+ * Shedules control.
148
149
  * Shedule active.
149
150
  * Scene control.
150
151
  * Error.
@@ -165,7 +166,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
165
166
  * Fan speed mode `AUTO/1/2/3/4`.
166
167
  * Presets `SET/UNSET`.
167
168
  * Holiday mode `ON/OFF`.
168
- * Schedule `ON/OFF`.
169
+ * Schedules `ON/OFF`.
169
170
  * Scene `ON/OFF`.
170
171
  * Sensors:
171
172
  * For automation and notifications.
@@ -181,7 +182,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
181
182
  * CO2 detected and level.
182
183
  * PM2.5 air quality and level.
183
184
  * Holiday mode.
184
- * Shedule control.
185
+ * Shedules control.
185
186
  * Shedule active.
186
187
  * Scene control.
187
188
  * Error.
@@ -394,7 +395,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
394
395
  | | `http//ip:port` | `FrostProtection` | `true`, `false` | boolean | Frost protectin. |
395
396
  | | `http//ip:port` | `OverheatProtection` | `true`, `false` | boolean | Overheat protection. |
396
397
  | | `http//ip:port` | `HolidayMode` | `true`, `false` | boolean | Holiday mode. |
397
- | | `http//ip:port` | `ScheduleEnabled` | `true`, `false` | boolean | Schedules. |
398
+ | | `http//ip:port` | `Schedules` | `true`, `false` | boolean | Schedules. |
398
399
  | Heat Pump | | | | | |
399
400
  | POST | `http//ip:port` | `Power` | `true`, `false` | boolean | Power state. |
400
401
  | | `http//ip:port` | `ForcedHotWaterMode` | `true`, `false` | boolean | Force hot water. |
@@ -413,7 +414,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
413
414
  | | `http//ip:port` | `SetCoolFlowTemperatureZone2` | `0.0` | float | Cool flow temperature zone 2. |
414
415
  | | `http//ip:port` | `SetTankWaterTemperature` | `0.0` | float | Hot water temperature. |
415
416
  | | `http//ip:port` | `HolidayMode` | `true`, `false` | boolean | Holiday mode. |
416
- | | `http//ip:port` | `ScheduleEnabled` | `true`, `false` | boolean | Schedules. |
417
+ | | `http//ip:port` | `Schedules` | `true`, `false` | boolean | Schedules. |
417
418
  | Energy Recovery Ventilation | | | | | |
418
419
  | POST | `http//ip:port` | `Power` | `true`, `false` | boolean | Power state. |
419
420
  | | `http//ip:port` | `NightPurgeMode` | `true`, `false` | boolean | Night purge mode. |
@@ -427,7 +428,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
427
428
  | | `http//ip:port` | `DefaultCoolingSetTemperature` | `0.0` | float | Default cooling temperature. |
428
429
  | | `http//ip:port` | `DefaultHeatingSetTemperature` | `0.0` | float | Default heating temperature. |
429
430
  | | `http//ip:port` | `HolidayMode` | `true`, `false` | boolean | Holiday mode. |
430
- | | `http//ip:port` | `ScheduleEnabled` | `true`, `false` | boolean | Schedules. |
431
+ | | `http//ip:port` | `Schedules` | `true`, `false` | boolean | Schedules. |
431
432
 
432
433
  ### MQTT Integration
433
434
 
@@ -456,7 +457,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
456
457
  | | `Set` | `FrostProtection` | `true`, `false` | boolean | Frost protectin. |
457
458
  | | `Set` | `OverheatProtection` | `true`, `false` | boolean | Overheat protection. |
458
459
  | | `Set` | `HolidayMode` | `true`, `false` | boolean | Holiday mode. |
459
- | | `Set` | `ScheduleEnabled` | `true`, `false` | boolean | Schedules. |
460
+ | | `Set` | `Schedules` | `true`, `false` | boolean | Schedules. |
460
461
  | Heat Pump | | | | | |
461
462
  | Subscribe | `Set` | `Power` | `true`, `false` | boolean | Power state. |
462
463
  | | `Set` | `ForcedHotWaterMode` | `true`, `false` | boolean | Force hot water. |
@@ -475,7 +476,7 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
475
476
  | | `Set` | `SetCoolFlowTemperatureZone2` | `0.0` | float | Cool flow temperature zone 2. |
476
477
  | | `Set` | `SetTankWaterTemperature` | `0.0` | float | Hot water temperature. |
477
478
  | | `Set` | `HolidayMode` | `true`, `false` | boolean | Holiday mode. |
478
- | | `Set` | `ScheduleEnabled` | `true`, `false` | boolean | Schedules. |
479
+ | | `Set` | `Schedules` | `true`, `false` | boolean | Schedules. |
479
480
  | Energy Recovery Ventilation | | | | | |
480
481
  | Subscribe | `Set` | `Power` | `true`, `false` | boolean | Power state. |
481
482
  | | `Set` | `NightPurgeMode` | `true`, `false` | boolean | Night purge mode. |
@@ -489,4 +490,4 @@ Homebridge plugin for Air Conditioner, Heat Pump and Energy Recovery Ventilation
489
490
  | | `Set` | `DefaultCoolingSetTemperature` | `23.0` | float | Default cooling temperature. |
490
491
  | | `Set` | `DefaultHeatingSetTemperature` | `21.0` | float | Default heating temperature. |
491
492
  | | `Set` | `HolidayMode` | `true`, `false` | boolean | Holiday mode. |
492
- | | `Set` | `ScheduleEnabled` | `true`, `false` | boolean | Schedules. |
493
+ | | `Set` | `Schedules` | `true`, `false` | boolean | Schedules. |
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.2.5-beta.27",
4
+ "version": "4.2.5-beta.28",
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
@@ -261,7 +261,7 @@ class DeviceAta extends EventEmitter {
261
261
  deviceData.Device[key].Enabled = value;
262
262
  flag = 'overheatprotection';
263
263
  break;
264
- case 'ScheduleEnabled':
264
+ case 'Schedules':
265
265
  if (this.accountType === 'melcloud') return;
266
266
 
267
267
  deviceData.Device[key].Enabled = value;
@@ -527,7 +527,7 @@ class DeviceAta extends EventEmitter {
527
527
  try {
528
528
  this.accessory.useFahrenheit = value ? true : false;
529
529
  if (this.logInfo) this.emit('info', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
530
- this.accountInfo.LoginData.UseFahrenheit = value ? true : false;
530
+ this.accountInfo.UseFahrenheit = value ? true : false;
531
531
  await this.melCloudAta.send(this.accountType, this.displayType, deviceData, 'account', this.accountInfo);
532
532
  } catch (error) {
533
533
  if (this.logWarn) this.emit('warn', `Set temperature display unit error: ${error}`);
@@ -622,7 +622,7 @@ class DeviceAta extends EventEmitter {
622
622
  try {
623
623
  this.accessory.useFahrenheit = value ? true : false;
624
624
  if (this.logInfo) this.emit('info', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
625
- this.accountInfo.LoginData.UseFahrenheit = value ? true : false;
625
+ this.accountInfo.UseFahrenheit = value ? true : false;
626
626
  await this.melCloudAta.send(this.accountType, this.displayType, deviceData, 'account', this.accountInfo);
627
627
  } catch (error) {
628
628
  if (this.logWarn) this.emit('warn', `Set temperature display unit error: ${error}`);
package/src/deviceatw.js CHANGED
@@ -652,7 +652,7 @@ class DeviceAtw extends EventEmitter {
652
652
  try {
653
653
  this.accessory.useFahrenheit = value ? true : false;
654
654
  if (this.logInfo) this.emit('info', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
655
- this.accountInfo.LoginData.UseFahrenheit = value ? true : false;
655
+ this.accountInfo.UseFahrenheit = value ? true : false;
656
656
  await this.melCloudAtw.send(this.accountType, this.displayType, deviceData, 'account', this.accountInfo);
657
657
  } catch (error) {
658
658
  if (this.logWarn) this.emit('warn', `Set temperature display unit error: ${error}`);
@@ -838,7 +838,7 @@ class DeviceAtw extends EventEmitter {
838
838
  try {
839
839
  this.accessory.useFahrenheit = value ? true : false;
840
840
  if (this.logInfo) this.emit('info', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
841
- this.accountInfo.LoginData.UseFahrenheit = value ? true : false;
841
+ this.accountInfo.UseFahrenheit = value ? true : false;
842
842
  await this.melCloudAtw.send(this.accountType, this.displayType, deviceData, 'account', this.accountInfo);
843
843
  } catch (error) {
844
844
  if (this.logWarn) this.emit('warn', `Set temperature display unit error: ${error}`);
package/src/deviceerv.js CHANGED
@@ -458,7 +458,7 @@ class DeviceErv extends EventEmitter {
458
458
  try {
459
459
  this.accessory.useFahrenheit = value ? true : false;
460
460
  if (this.logInfo) this.emit('info', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
461
- this.accountInfo.LoginData.UseFahrenheit = value ? true : false;
461
+ this.accountInfo.UseFahrenheit = value ? true : false;
462
462
  await this.melCloudErv.send(this.accountType, this.displayType, deviceData, 'account', this.accountInfo);
463
463
  } catch (error) {
464
464
  if (this.logWarn) this.emit('warn', `Set temperature display unit error: ${error}`);
@@ -551,7 +551,7 @@ class DeviceErv extends EventEmitter {
551
551
  try {
552
552
  this.accessory.useFahrenheit = value ? true : false;
553
553
  if (this.logInfo) this.emit('info', `Set temperature display unit: ${TemperatureDisplayUnits[value]}`);
554
- this.accountInfo.LoginData.UseFahrenheit = value ? true : false;
554
+ this.accountInfo.UseFahrenheit = value ? true : false;
555
555
  await this.melCloudErv.send(this.accountType, this.displayType, deviceData, 'account', this.accountInfo);
556
556
  } catch (error) {
557
557
  if (this.logWarn) this.emit('warn', `Set temperature display unit error: ${error}`);
package/src/melcloud.js CHANGED
@@ -125,7 +125,7 @@ class MelCloud extends EventEmitter {
125
125
  if (this.logDebug) this.emit('debug', `Connecting to MELCloud`);
126
126
 
127
127
  try {
128
- const accountInfo = { State: false, Info: '', LoginData: null, UseFahrenheit: false }
128
+ const accountInfo = { State: false, Info: '', Account: null, UseFahrenheit: false }
129
129
 
130
130
  const payload = {
131
131
  Email: this.user,
@@ -175,7 +175,8 @@ class MelCloud extends EventEmitter {
175
175
 
176
176
  accountInfo.State = true;
177
177
  accountInfo.Info = 'Connect to MELCloud Success';
178
- accountInfo.LoginData = loginData;
178
+ accountInfo.UseFahrenheit = loginData.UseFahrenheit;
179
+ accountInfo.Account = account;
179
180
  await this.functions.saveData(this.accountFile, accountInfo);
180
181
 
181
182
  return accountInfo
@@ -137,17 +137,17 @@ class MelCloudAta extends EventEmitter {
137
137
  let path = '';
138
138
  switch (accountType) {
139
139
  case "melcloud":
140
- if (displayType === 1 && deviceData.Device.OperationMode === 8) {
141
- deviceData.Device.SetTemperature = (deviceData.Device.DefaultCoolingSetTemperature + deviceData.Device.DefaultHeatingSetTemperature) / 2;
142
- }
143
-
144
140
  switch (flag) {
145
141
  case 'account':
142
+ flagData.Account.LoginData.UseFahrenheit = flagData.UseFahrenheit;
146
143
  payload = { data: flagData.LoginData };
147
144
  path = ApiUrls.UpdateApplicationOptions;
148
145
  await this.functions.saveData(this.accountFile, flagData);
149
146
  break;
150
147
  default:
148
+ if (displayType === 1 && deviceData.Device.OperationMode === 8) {
149
+ deviceData.Device.SetTemperature = (deviceData.Device.DefaultCoolingSetTemperature + deviceData.Device.DefaultHeatingSetTemperature) / 2;
150
+ }
151
151
  deviceData.Device.EffectiveFlags = flag;
152
152
  payload = {
153
153
  DeviceID: deviceData.Device.DeviceID,
@@ -146,6 +146,7 @@ class MelCloudAtw extends EventEmitter {
146
146
  case "melcloud":
147
147
  switch (flag) {
148
148
  case 'account':
149
+ flagData.Account.LoginData.UseFahrenheit = flagData.UseFahrenheit;
149
150
  payload = { data: flagData.LoginData };
150
151
  path = ApiUrls.UpdateApplicationOptions;
151
152
  await this.functions.saveData(this.accountFile, flagData);
@@ -134,6 +134,7 @@ class MelCloudErv extends EventEmitter {
134
134
  case "melcloud":
135
135
  switch (flag) {
136
136
  case 'account':
137
+ flagData.Account.LoginData.UseFahrenheit = flagData.UseFahrenheit;
137
138
  payload = { data: flagData.LoginData };
138
139
  path = ApiUrls.UpdateApplicationOptions;
139
140
  await this.functions.saveData(this.accountFile, flagData);
@@ -217,7 +217,7 @@ class MelCloud extends EventEmitter {
217
217
 
218
218
  let browser;
219
219
  try {
220
- const accountInfo = { State: false, Info: '', UseFahrenheit: false };
220
+ const accountInfo = { State: false, Info: '', Account: {}, UseFahrenheit: false };
221
221
  let chromiumPath = await this.functions.ensureChromiumInstalled();
222
222
 
223
223
  // === Fallback to Puppeteer's built-in Chromium ===