homebridge-melcloud-control 3.3.16 → 3.3.17

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
@@ -16,6 +16,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
16
16
  - do not configure it manually, always using Config UI X
17
17
  - required Homebridge v2.0.0 and above
18
18
 
19
+ ## [3.3.17] - (24.09.2024)
20
+
21
+ ## Changes
22
+
23
+ - fix operation mode for ATA - Thermostat if device go to OFF
24
+ - move some error to warn
25
+ - cleanup
26
+
19
27
  ## [3.3.16] - (23.09.2024)
20
28
 
21
29
  ## Changes
package/index.js CHANGED
@@ -146,7 +146,7 @@ class MelCloudPlatform {
146
146
  await airConditioner.start();
147
147
  };
148
148
  } catch (error) {
149
- log.error(`Account: ${accountName}, ATA did finish launching error: ${error.message ?? error}`);
149
+ log.error(`Account: ${accountName}, ATA did finish launching error: ${error}`);
150
150
  }
151
151
 
152
152
  //Heat Pump 1
@@ -191,7 +191,7 @@ class MelCloudPlatform {
191
191
  await heatPump.start();
192
192
  };
193
193
  } catch (error) {
194
- log.error(`Account: ${accountName}, ATW did finish launching error: ${error.message ?? error}`);
194
+ log.error(`Account: ${accountName}, ATW did finish launching error: ${error}`);
195
195
  }
196
196
 
197
197
  //Energy Recovery Ventilation 3
@@ -236,10 +236,10 @@ class MelCloudPlatform {
236
236
  await energyRecoveryVentilation.start();
237
237
  };
238
238
  } catch (error) {
239
- log.error(`Account: ${accountName}, ERV did finish launching error: ${error.message ?? error}`);
239
+ log.error(`Account: ${accountName}, ERV did finish launching error: ${error}`);
240
240
  }
241
241
  } catch (error) {
242
- log.error(`Account: ${accountName}, did finish launching error: ${error.message ?? error}`);
242
+ log.error(`Account: ${accountName}, did finish launching error: ${error}`);
243
243
  }
244
244
  };
245
245
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.3.16",
4
+ "version": "3.3.17",
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
@@ -126,7 +126,7 @@ class DeviceAta extends EventEmitter {
126
126
  try {
127
127
  await this.setOverExternalIntegration('RESTFul', deviceData, key, value);
128
128
  } catch (error) {
129
- this.emit('warn', `RESTFul set error: ${error}.`);
129
+ this.emit('warn', error);
130
130
  };
131
131
  })
132
132
  .on('debug', (debug) => {
@@ -165,7 +165,7 @@ class DeviceAta extends EventEmitter {
165
165
  try {
166
166
  await this.setOverExternalIntegration('MQTT', deviceData, key, value);
167
167
  } catch (error) {
168
- this.emit('warn', `MQTT set error: ${error}.`);
168
+ this.emit('warn', error);
169
169
  };
170
170
  })
171
171
  .on('debug', (debug) => {
@@ -180,7 +180,7 @@ class DeviceAta extends EventEmitter {
180
180
  }
181
181
 
182
182
  } catch (error) {
183
- this.emit('warn', `External integration start error: ${error.message || error}.`);
183
+ this.emit('warn', `External integration start error: ${error}.`);
184
184
  };
185
185
  })
186
186
  .on('deviceInfo', (manufacturer, modelIndoor, modelOutdoor, serialNumber, firmwareAppVersion) => {
@@ -324,7 +324,7 @@ class DeviceAta extends EventEmitter {
324
324
  this.accessory.targetOperationMode = 2;
325
325
  break;
326
326
  default:
327
- this.emit('warn', `Received unknown operating mode: ${operationMode}`);
327
+ this.emit('warn', `Unknown operating mode: ${operationMode}`);
328
328
  return
329
329
  };
330
330
 
@@ -413,7 +413,8 @@ class DeviceAta extends EventEmitter {
413
413
  break;
414
414
  };
415
415
 
416
- this.accessory.currentOperationMode = !power ? 0 : inStandbyMode ? 0 : this.accessory.currentOperationMode;
416
+ this.accessory.currentOperationMode = !power ? 0 : this.accessory.currentOperationMode;
417
+ this.accessory.targetOperationMode = !power ? 0 : this.accessory.targetOperationMode;
417
418
  this.accessory.operationModeSetPropsMinValue = 0
418
419
  this.accessory.operationModeSetPropsMaxValue = modelSupportsAuto && modelSupportsHeat ? 3 : !modelSupportsAuto && modelSupportsHeat ? 2 : modelSupportsAuto && !modelSupportsHeat ? 3 : 2;
419
420
  this.accessory.operationModeSetPropsValidValues = modelSupportsAuto && modelSupportsHeat ? [0, 1, 2, 3] : !modelSupportsAuto && modelSupportsHeat ? [0, 1, 2] : modelSupportsAuto && !modelSupportsHeat ? [0, 2, 3] : [0, 2];
@@ -613,7 +614,7 @@ class DeviceAta extends EventEmitter {
613
614
  this.emit('publishAccessory', accessory);
614
615
  this.startPrepareAccessory = false;
615
616
  } catch (error) {
616
- this.emit('error', `Prepare accessory error: ${error.message ?? error}`);
617
+ this.emit('error', error);
617
618
  };
618
619
  })
619
620
  .on('message', (message) => {
@@ -637,7 +638,7 @@ class DeviceAta extends EventEmitter {
637
638
 
638
639
  return true;
639
640
  } catch (error) {
640
- throw new Error(`Start error: ${error.message ?? error}`);
641
+ throw new Error(`Start error: ${error}`);
641
642
  };
642
643
  };
643
644
 
@@ -1392,7 +1393,7 @@ class DeviceAta extends EventEmitter {
1392
1393
 
1393
1394
  return accessory;
1394
1395
  } catch (error) {
1395
- throw new Error(error);
1396
+ throw new Error(`Prepare accessory error: ${error.message || error}`);
1396
1397
  };
1397
1398
  };
1398
1399
  };
package/src/deviceatw.js CHANGED
@@ -130,7 +130,7 @@ class DeviceAtw extends EventEmitter {
130
130
  try {
131
131
  await this.setOverExternalIntegration('RESTFul', deviceData, key, value);
132
132
  } catch (error) {
133
- this.emit('warn', `RESTFul set error: ${error}.`);
133
+ this.emit('warn', error);
134
134
  };
135
135
  })
136
136
  .on('debug', (debug) => {
@@ -169,7 +169,7 @@ class DeviceAtw extends EventEmitter {
169
169
  try {
170
170
  await this.setOverExternalIntegration('MQTT', deviceData, key, value);
171
171
  } catch (error) {
172
- this.emit('warn', `MQTT set error: ${error}.`);
172
+ this.emit('warn', error);
173
173
  };
174
174
  })
175
175
  .on('debug', (debug) => {
@@ -183,7 +183,7 @@ class DeviceAtw extends EventEmitter {
183
183
  const mqtt1 = this.mqttConnected ? this.mqtt1.emit('publish', `State`, deviceData.Device) : false;
184
184
  }
185
185
  } catch (error) {
186
- this.emit('warn', `External integration start error: ${error.message || error}.`);
186
+ this.emit('warn', `External integration start error: ${error}.`);
187
187
  };
188
188
  })
189
189
  .on('deviceInfo', (manufacturer, modelIndoor, modelOutdoor, serialNumber, firmwareAppVersion, hasHotWaterTank, hasZone2) => {
@@ -781,7 +781,7 @@ class DeviceAtw extends EventEmitter {
781
781
  button.state = (prohibitZone2 === true);
782
782
  break;
783
783
  default: //Unknown button
784
- this.emit('message', `Unknown button mode: ${mode} detected.`);
784
+ this.emit('warn', `Unknown button mode: ${mode} detected.`);
785
785
  break;
786
786
  };
787
787
 
@@ -804,7 +804,7 @@ class DeviceAtw extends EventEmitter {
804
804
  this.emit('publishAccessory', accessory);
805
805
  this.startPrepareAccessory = false;
806
806
  } catch (error) {
807
- this.emit('error', `Prepare accessory error: ${error}`);
807
+ this.emit('error', error);
808
808
  };
809
809
  })
810
810
  .on('message', (message) => {
@@ -828,7 +828,7 @@ class DeviceAtw extends EventEmitter {
828
828
 
829
829
  return true;
830
830
  } catch (error) {
831
- throw new Error(`start error: ${error}`);
831
+ throw new Error(`Start error: ${error}`);
832
832
  };
833
833
  };
834
834
 
@@ -1934,7 +1934,7 @@ class DeviceAtw extends EventEmitter {
1934
1934
 
1935
1935
  return accessory;
1936
1936
  } catch (error) {
1937
- throw new Error(error.message ?? error);
1937
+ throw new Error(`Prepare accessory error: ${error.message || error}`);
1938
1938
  };
1939
1939
  };
1940
1940
  };
package/src/deviceerv.js CHANGED
@@ -124,7 +124,7 @@ class DeviceErv extends EventEmitter {
124
124
  try {
125
125
  await this.setOverExternalIntegration('RESTFul', deviceData, key, value);
126
126
  } catch (error) {
127
- this.emit('warn', `RESTFul set error: ${error}.`);
127
+ this.emit('warn', error);
128
128
  };
129
129
  })
130
130
  .on('debug', (debug) => {
@@ -163,7 +163,7 @@ class DeviceErv extends EventEmitter {
163
163
  try {
164
164
  await this.setOverExternalIntegration('MQTT', deviceData, key, value);
165
165
  } catch (error) {
166
- this.emit('warn', `MQTT set error: ${error}.`);
166
+ this.emit('warn', error);
167
167
  };
168
168
  })
169
169
  .on('debug', (debug) => {
@@ -177,7 +177,7 @@ class DeviceErv extends EventEmitter {
177
177
  const mqtt1 = this.mqttConnected ? this.mqtt1.emit('publish', `State`, deviceData.Device) : false;
178
178
  }
179
179
  } catch (error) {
180
- this.emit('warn', `External integration start error: ${error.message || error}.`);
180
+ this.emit('warn', `External integration start error: ${error}.`);
181
181
  };
182
182
  })
183
183
  .on('deviceInfo', (manufacturer, modelIndoor, modelOutdoor, serialNumber, firmwareAppVersion) => {
@@ -381,6 +381,9 @@ class DeviceErv extends EventEmitter {
381
381
  };
382
382
  this.accessory.targetOperationMode = 3;
383
383
  break;
384
+ default:
385
+ this.emit('warn', `Unknown ventilation mode: ${ventilationMode}`);
386
+ break;
384
387
  };
385
388
 
386
389
  this.accessory.currentOperationMode = !power ? 0 : this.accessory.currentOperationMode;
@@ -512,7 +515,7 @@ class DeviceErv extends EventEmitter {
512
515
  button.state = (hideOutdoorTemperature === true);
513
516
  break;
514
517
  default: //Unknown button
515
- this.emit('message', `Unknown button mode: ${mode} detected.`);
518
+ this.emit('warn', `Unknown button mode: ${mode} detected.`);
516
519
  break;
517
520
  };
518
521
 
@@ -554,7 +557,7 @@ class DeviceErv extends EventEmitter {
554
557
  this.emit('publishAccessory', accessory);
555
558
  this.startPrepareAccessory = false;
556
559
  } catch (error) {
557
- this.emit('error', `Prepare accessory error: ${error}`);
560
+ this.emit('error', error);
558
561
  };
559
562
  })
560
563
  .on('message', (message) => {
@@ -578,7 +581,7 @@ class DeviceErv extends EventEmitter {
578
581
 
579
582
  return true;
580
583
  } catch (error) {
581
- throw new Error(`start error: ${error}`);
584
+ throw new Error(`Start error: ${error}`);
582
585
  };
583
586
  };
584
587
 
@@ -1251,7 +1254,7 @@ class DeviceErv extends EventEmitter {
1251
1254
 
1252
1255
  return accessory;
1253
1256
  } catch (error) {
1254
- throw new Error(error.message ?? error);
1257
+ throw new Error(`Prepare accessory error: ${error.message || error}`);
1255
1258
  };
1256
1259
  };
1257
1260
  };
package/src/melcloud.js CHANGED
@@ -36,7 +36,7 @@ class MelCloud extends EventEmitter {
36
36
  try {
37
37
  await this.chackDevicesList(this.contextKey);
38
38
  } catch (error) {
39
- this.emit('error', `Check devices list: ${error}.`);
39
+ this.emit('error', `Impulse generator error: ${error}.`);
40
40
  };
41
41
  }).on('state', (state) => { });
42
42
  };
@@ -114,7 +114,7 @@ class MelCloud extends EventEmitter {
114
114
 
115
115
  return obj;
116
116
  } catch (error) {
117
- throw new Error(`Connect to MELCloud error: ${error.message ?? error}.`);
117
+ throw new Error(`Connect to MELCloud error: ${error.message || error}.`);
118
118
  };
119
119
  }
120
120
 
@@ -179,7 +179,7 @@ class MelCloud extends EventEmitter {
179
179
 
180
180
  return devices;
181
181
  } catch (error) {
182
- throw new Error(`Scanning for devices error: ${error.message ?? error}.`);
182
+ throw new Error(`Check devices list error: ${error.message || error}.`);
183
183
  };
184
184
  }
185
185
 
@@ -189,7 +189,7 @@ class MelCloud extends EventEmitter {
189
189
  const debug3 = this.enableDebugMode ? this.emit('debug', `Data saved to: ${path}.`) : false;
190
190
  return true;
191
191
  } catch (error) {
192
- throw new Error(`Save data error: ${error.message ?? error}`);
192
+ throw new Error(`Save data error: ${error.message || error}`);
193
193
  }
194
194
  }
195
195
 
@@ -203,7 +203,7 @@ class MelCloud extends EventEmitter {
203
203
  await this.saveData(this.accountFile, accountInfo);
204
204
  return true;
205
205
  } catch (error) {
206
- throw new Error(error.message ?? error);
206
+ throw new Error(`Send data error: ${error.message || error}`);
207
207
  };
208
208
  };
209
209
  };
@@ -37,7 +37,7 @@ class MelCloudAta extends EventEmitter {
37
37
  try {
38
38
  await this.checkState();
39
39
  } catch (error) {
40
- this.emit('error', `Impulse generator check state error: ${error.message || error}.`);
40
+ this.emit('error', `Impulse generator error: ${error}.`);
41
41
  };
42
42
  }).on('state', (state) => { });
43
43
  };
@@ -363,7 +363,7 @@ class MelCloudAta extends EventEmitter {
363
363
  const data = savedData.length > 0 ? JSON.parse(savedData) : false;
364
364
  return data;
365
365
  } catch (error) {
366
- throw new Error(`Read data error: ${error.message ?? error}`);
366
+ throw new Error(`Read data error: ${error.message || error}`);
367
367
  }
368
368
  }
369
369
 
@@ -432,7 +432,7 @@ class MelCloudAta extends EventEmitter {
432
432
  this.emit('deviceState', deviceData);
433
433
  return true;
434
434
  } catch (error) {
435
- throw new Error(error.message ?? error);
435
+ throw new Error(`Send data error: ${error.message || error}`);
436
436
  };
437
437
  };
438
438
  };
@@ -37,7 +37,7 @@ class MelCloudAtw extends EventEmitter {
37
37
  try {
38
38
  await this.checkState();
39
39
  } catch (error) {
40
- this.emit('error', `Impulse generator check state error: ${error.message || error}.`);
40
+ this.emit('error', `Impulse generator error: ${error}.`);
41
41
  };
42
42
  }).on('state', (state) => { });
43
43
  };
@@ -427,7 +427,7 @@ class MelCloudAtw extends EventEmitter {
427
427
  const data = savedData.length > 0 ? JSON.parse(savedData) : false;
428
428
  return data;
429
429
  } catch (error) {
430
- throw new Error(`Read data error: ${error.message ?? error}`);
430
+ throw new Error(`Read data error: ${error.message || error}`);
431
431
  }
432
432
  }
433
433
 
@@ -483,7 +483,7 @@ class MelCloudAtw extends EventEmitter {
483
483
  this.emit('deviceState', deviceData);
484
484
  return true;
485
485
  } catch (error) {
486
- throw new Error(error.message ?? error);
486
+ throw new Error(`Send data error: ${error.message || error}`);
487
487
  };
488
488
  };
489
489
  };
@@ -37,7 +37,7 @@ class MelCloudErv extends EventEmitter {
37
37
  try {
38
38
  await this.checkState();
39
39
  } catch (error) {
40
- this.emit('error', `Impulse generator check state error: ${error.message || error}.`);
40
+ this.emit('error', `Impulse generator error: ${error}.`);
41
41
  };
42
42
  }).on('state', (state) => { });
43
43
  };
@@ -351,9 +351,10 @@ class MelCloudErv extends EventEmitter {
351
351
  const data = savedData.length > 0 ? JSON.parse(savedData) : false;
352
352
  return data;;
353
353
  } catch (error) {
354
- throw new Error(`Read data error: ${error.message ?? error}`);
354
+ throw new Error(`Read data error: ${error.message || error}`);
355
355
  }
356
356
  }
357
+
357
358
  async send(deviceData, displayMode) {
358
359
  try {
359
360
  //set target temp based on display mode and ventilation mode
@@ -404,7 +405,7 @@ class MelCloudErv extends EventEmitter {
404
405
  this.emit('deviceState', deviceData);
405
406
  return true;
406
407
  } catch (error) {
407
- throw new Error(error.message ?? error);
408
+ throw new Error(`Send data error: ${error.message || error}`);
408
409
  };
409
410
  };
410
411
  };
package/src/mqtt.js CHANGED
@@ -32,11 +32,11 @@ class Mqtt extends EventEmitter {
32
32
  const value = Object.values(obj)[0];
33
33
  this.emit('set', key, value);
34
34
  } catch (error) {
35
- this.emit('error', `MQTT Parse object error: ${error}`);
35
+ this.emit('error', `MQTT Parse object error: ${error.message || error}`);
36
36
  };
37
37
  });
38
38
  } catch (error) {
39
- this.emit('error', `MQTT Connect error: ${error}`);
39
+ this.emit('error', `MQTT Connect error: ${error.message || error}`);
40
40
  };
41
41
  }).on('publish', async (topic, message) => {
42
42
  try {
@@ -45,7 +45,7 @@ class Mqtt extends EventEmitter {
45
45
  await this.mqttClient.publish(fullTopic, publishMessage);
46
46
  const emitDebug = config.debug ? this.emit('debug', `MQTT Publish topic: ${fullTopic}, message: ${publishMessage}`) : false;
47
47
  } catch (error) {
48
- this.emit('error', `MQTT Publish error: ${error}`);
48
+ this.emit('error', `MQTT Publish error: ${error.message || error}`);
49
49
  };
50
50
  });
51
51
 
package/src/restful.js CHANGED
@@ -43,7 +43,7 @@ class RestFul extends EventEmitter {
43
43
  });
44
44
 
45
45
  } catch (error) {
46
- this.emit('error', `RESTful Connect error: ${error}`)
46
+ this.emit('error', `RESTful Connect error: ${error.message || error}`)
47
47
  }
48
48
  };
49
49
 
@@ -56,7 +56,7 @@ class RestFul extends EventEmitter {
56
56
  this.restFulData.state = data;
57
57
  break;
58
58
  default:
59
- this.emit('error', `RESTFul update path: ${path}, data: ${data}`)
59
+ this.emit('error', `Unknown RESTFul update path: ${path}, data: ${data}`)
60
60
  break;
61
61
  };
62
62
  const emitDebug = this.restFulDebug ? this.emit('debug', `RESTFul update path: ${path}, data: ${data}`) : false;