homebridge-melcloud-control 3.3.11 → 3.3.12-beta.1

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.3.11",
4
+ "version": "3.3.12-beta.1",
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
@@ -220,16 +220,16 @@ class DeviceAta extends EventEmitter {
220
220
  //device info
221
221
  const hasAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed ?? false;
222
222
  const airDirectionFunction = deviceData.Device.AirDirectionFunction ?? false;
223
- const hasOutdoorTemperature = deviceData.Device.HasOutdoorTemperature ?? false;
224
223
  const swingFunction = deviceData.Device.SwingFunction ?? false;
224
+ const hasOutdoorTemperature = deviceData.Device.HasOutdoorTemperature ?? false;
225
225
  const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds ?? 0;
226
226
  const modelSupportsFanSpeed = deviceData.Device.ModelSupportsFanSpeed ?? false;
227
+ const modelSupportsAuto1 = deviceData.Device.ModelSupportsAuto ?? false;
228
+ const modelSupportsAuto = this.autoDryFanMode >= 1 && modelSupportsAuto1
227
229
  const modelSupportsHeat1 = deviceData.Device.ModelSupportsHeat ?? false;
228
230
  const modelSupportsHeat = this.heatDryFanMode >= 1 && modelSupportsHeat1;
229
- const modelSupportsCool = this.coolDryFanMode >= 1;
230
- const modelSupportsAuto1 = deviceData.Device.ModelSupportsAuto ?? false;
231
- const modelSupportsAuto = this.autoDryFanMode >= 1 && modelSupportsAuto1;
232
231
  const modelSupportsDry = deviceData.Device.ModelSupportsDry ?? false;
232
+ const modelSupportsCool = this.coolDryFanMode >= 1;
233
233
 
234
234
  //device state
235
235
  const power = deviceData.Device.Power ?? false;
@@ -239,10 +239,15 @@ class DeviceAta extends EventEmitter {
239
239
  const defaultHeatingSetTemperature = deviceData.Device.DefaultHeatingSetTemperature;
240
240
  const defaultCoolingSetTemperature = deviceData.Device.DefaultCoolingSetTemperature;
241
241
  const actualFanSpeed = deviceData.Device.ActualFanSpeed;
242
+ const automaticFanSpeed = deviceData.Device.AutomaticFanSpeed;
242
243
  const fanSpeed = deviceData.Device.FanSpeed;
243
244
  const operationMode = deviceData.Device.OperationMode;
244
- const vaneHorizontalDirection = deviceData.Device.VaneHorizontalDirection;
245
245
  const vaneVerticalDirection = deviceData.Device.VaneVerticalDirection;
246
+ const vaneVerticalSwing = deviceData.Device.vaneVerticalSwing;
247
+ this.emit('message', `swing v: ${vaneVerticalSwing}`);
248
+ const vaneHorizontalDirection = deviceData.Device.VaneHorizontalDirection;
249
+ const vaneHorizontalSwing = deviceData.Device.VaneHorizontalSwing;
250
+ this.emit('message', `swing h: ${vaneHorizontalSwing}`);
246
251
  const prohibitSetTemperature = deviceData.Device.ProhibitSetTemperature ?? false;
247
252
  const prohibitOperationMode = deviceData.Device.ProhibitOperationMode ?? false;
248
253
  const prohibitPower = deviceData.Device.ProhibitPower ?? false;
@@ -250,16 +255,16 @@ class DeviceAta extends EventEmitter {
250
255
  const outdoorTemperature = deviceData.Device.OutdoorTemperature;
251
256
 
252
257
  //accessory
258
+ this.accessory.presets = presetsOnServer;
259
+ this.accessory.modelSupportsFanSpeed = modelSupportsFanSpeed;
260
+ this.accessory.modelSupportsAuto = modelSupportsAuto;
253
261
  this.accessory.modelSupportsHeat = modelSupportsHeat;
254
262
  this.accessory.modelSupportsDry = modelSupportsDry;
255
263
  this.accessory.modelSupportsCool = modelSupportsCool;
256
- this.accessory.modelSupportsAuto = modelSupportsAuto;
257
- this.accessory.modelSupportsFanSpeed = modelSupportsFanSpeed;
258
264
  this.accessory.hasAutomaticFanSpeed = hasAutomaticFanSpeed;
259
265
  this.accessory.hasOutdoorTemperature = hasOutdoorTemperature;
260
266
  this.accessory.numberOfFanSpeeds = numberOfFanSpeeds;
261
267
  this.accessory.swingFunction = swingFunction;
262
- this.accessory.presets = presetsOnServer;
263
268
  this.accessory.power = power ? 1 : 0;
264
269
  this.accessory.inStandbyMode = inStandbyMode;
265
270
  this.accessory.operationMode = operationMode;
@@ -269,6 +274,9 @@ class DeviceAta extends EventEmitter {
269
274
  this.accessory.defaultHeatingSetTemperature = defaultHeatingSetTemperature;
270
275
  this.accessory.defaultCoolingSetTemperature = defaultCoolingSetTemperature;
271
276
  this.accessory.actualFanSpeed = actualFanSpeed;
277
+ this.accessory.automaticFanSpeed = automaticFanSpeed;
278
+ this.accessory.vaneVerticalSwing = vaneVerticalSwing;
279
+ this.accessory.vaneHorizontalSwing = vaneHorizontalSwing;
272
280
  this.accessory.swingMode = swingFunction && vaneHorizontalDirection === 12 && vaneVerticalDirection === 7 ? 1 : 0;
273
281
  this.accessory.lockPhysicalControl = prohibitSetTemperature && prohibitOperationMode && prohibitPower ? 1 : 0;
274
282
  this.accessory.temperatureIncrement = temperatureIncrement;
@@ -727,12 +735,12 @@ class DeviceAta extends EventEmitter {
727
735
  set = await this.melCloudAta.send(deviceData);
728
736
  break;
729
737
  case 'HideVaneControls':
730
- deviceData.Device[key] = value;
738
+ deviceData[key] = value;
731
739
  deviceData.Device.EffectiveFlags = CONSTANTS.AirConditioner.EffectiveFlags.Prohibit;
732
740
  set = await this.melCloudAta.send(deviceData);
733
741
  break;
734
742
  case 'HideDryModeControl':
735
- deviceData.Device[key] = value;
743
+ deviceData[key] = value;
736
744
  deviceData.Device.EffectiveFlags = CONSTANTS.AirConditioner.EffectiveFlags.Prohibit;
737
745
  await this.melCloudAta.send(deviceData);
738
746
  break;
package/src/deviceatw.js CHANGED
@@ -213,6 +213,9 @@ class DeviceAtw extends EventEmitter {
213
213
  this.displayDeviceInfo = false;
214
214
  })
215
215
  .on('deviceState', async (deviceData) => {
216
+ //presets
217
+ const presetsOnServer = deviceData.Presets ?? [];
218
+
216
219
  //device info
217
220
  const heatPumpName = 'Heat Pump';
218
221
  const hotWaterName = 'Hot Water';
@@ -236,9 +239,6 @@ class DeviceAtw extends EventEmitter {
236
239
  const returnTemperatureZone2 = deviceData.Device.ReturnTemperatureZone2;
237
240
  const returnTemperatureWaterTank = deviceData.Device.ReturnTemperatureBoiler;
238
241
 
239
- //presets
240
- const presetsOnServer = deviceData.Presets ?? [];
241
-
242
242
  //zones
243
243
  const hotWater = hasHotWaterTank ? 1 : 0;
244
244
  const zone2 = hasZone2 ? 1 : 0;
package/src/deviceerv.js CHANGED
@@ -207,6 +207,14 @@ class DeviceErv extends EventEmitter {
207
207
  this.displayDeviceInfo = false;
208
208
  })
209
209
  .on('deviceState', async (deviceData) => {
210
+ //presets
211
+ const presetsOnServer = deviceData.Presets ?? [];
212
+
213
+ //device control
214
+ const hideRoomTemperature = deviceData.HideRoomTemperature;
215
+ const hideSupplyTemperature = deviceData.HideSupplyTemperature;
216
+ const hideOutdoorTemperature = deviceData.HideOutdoorTemperature;
217
+
210
218
  //device info
211
219
  const hasCoolOperationMode = deviceData.Device.HasCoolOperationMode ?? false;
212
220
  const hasHeatOperationMode = deviceData.Device.HasHeatOperationMode ?? false;
@@ -230,9 +238,6 @@ class DeviceErv extends EventEmitter {
230
238
  const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds ?? 0;
231
239
  const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
232
240
 
233
- //presets
234
- const presetsOnServer = deviceData.Presets ?? [];
235
-
236
241
  //device state
237
242
  const power = deviceData.Device.Power ?? false;
238
243
  const roomTemperature = deviceData.Device.RoomTemperature;
@@ -246,30 +251,28 @@ class DeviceErv extends EventEmitter {
246
251
  const setFanSpeed = deviceData.Device.SetFanSpeed;
247
252
  const operationMode = deviceData.Device.OperationMode;
248
253
  const ventilationMode = deviceData.Device.VentilationMode;
249
- const hideRoomTemperature = deviceData.Device.HideRoomTemperature;
250
- const hideSupplyTemperature = deviceData.Device.HideSupplyTemperature;
251
- const hideOutdoorTemperature = deviceData.Device.HideOutdoorTemperature;
252
254
 
253
255
  //accessory
256
+ this.accessory.presets = presetsOnServer;
254
257
  this.accessory.hasRoomTemperature = hasRoomTemperature;
255
258
  this.accessory.hasSupplyTemperature = hasSupplyTemperature;
256
259
  this.accessory.hasOutdoorTemperature = hasOutdoorTemperature;
257
260
  this.accessory.hasCoolOperationMode = hasCoolOperationMode;
258
261
  this.accessory.hasHeatOperationMode = hasHeatOperationMode;
259
262
  this.accessory.hasCO2Sensor = hasCO2Sensor;
263
+ this.accessory.roomCO2Level = roomCO2Level;
264
+ this.accessory.roomCO2Detected = roomCO2Detected;
260
265
  this.accessory.hasPM25Sensor = hasPM25Sensor;
266
+ this.accessory.pM25SensorStatus = pM25SensorStatus;
267
+ this.accessory.pM25Level = pM25Level;
268
+ this.accessory.pM25AirQuality = pM25AirQuality;
261
269
  this.accessory.hasAutoVentilationMode = hasAutoVentilationMode;
262
270
  this.accessory.hasBypassVentilationMode = hasBypassVentilationMode;
271
+ this.accessory.hasAutomaticFanSpeed = hasAutomaticFanSpeed;
263
272
  this.accessory.coreMaintenanceRequired = coreMaintenanceRequired;
264
273
  this.accessory.filterMaintenanceRequired = filterMaintenanceRequired;
265
- this.accessory.roomCO2Detected = roomCO2Detected;
266
- this.accessory.roomCO2Level = roomCO2Level;
267
- this.accessory.pM25AirQuality = pM25AirQuality;
268
- this.accessory.pM25Level = pM25Level;
274
+ this.accessory.actualVentilationMode = actualVentilationMode;
269
275
  this.accessory.numberOfFanSpeeds = numberOfFanSpeeds;
270
-
271
- this.accessory.presets = presetsOnServer;
272
-
273
276
  this.accessory.power = power ? 1 : 0;
274
277
  this.accessory.operationMode = operationMode;
275
278
  this.accessory.ventilationMode = ventilationMode;
@@ -638,17 +641,17 @@ class DeviceErv extends EventEmitter {
638
641
  set = await this.melCloudErv.send(deviceData);
639
642
  break;
640
643
  case 'HideRoomTemperature':
641
- deviceData.Device[key] = value;
644
+ deviceData[key] = value;
642
645
  deviceData.Device.EffectiveFlags = CONSTANTS.Ventilation.EffectiveFlags.Prohibit;
643
646
  set = await this.melCloudErv.send(deviceData);
644
647
  break;
645
648
  case 'HideSupplyTemperature':
646
- deviceData.Device[key] = value;
649
+ deviceData[key] = value;
647
650
  deviceData.Device.EffectiveFlags = CONSTANTS.Ventilation.EffectiveFlags.Prohibit;
648
651
  set = await this.melCloudErv.send(deviceData);
649
652
  break;
650
653
  case 'HideOutdoorTemperature':
651
- deviceData.Device[key] = value;
654
+ deviceData[key] = value;
652
655
  deviceData.Device.EffectiveFlags = CONSTANTS.Ventilation.EffectiveFlags.Prohibit;
653
656
  set = await this.melCloudErv.send(deviceData);
654
657
  break;
@@ -665,16 +668,17 @@ class DeviceErv extends EventEmitter {
665
668
  //prepare accessory
666
669
  async prepareAccessory(accountInfo, deviceData, deviceId, deviceTypeText, deviceName, accountName) {
667
670
  try {
671
+ const presetsOnServer = deviceData.Presets;
668
672
  const hasRoomTemperature = this.accessory.hasRoomTemperature;
669
673
  const hasSupplyTemperature = this.accessory.hasSupplyTemperature;
670
674
  const hasOutdoorTemperature = this.accessory.hasOutdoorTemperature;
671
675
  const hasCoolOperationMode = this.accessory.hasCoolOperationMode;
672
676
  const hasHeatOperationMode = this.accessory.hasHeatOperationMode;
673
- const hasCO2Sensor = this.accessory.hasCO2Sensor;
674
- const hasPM25Sensor = this.accessory.hasPM25Sensor;
675
677
  const hasAutoVentilationMode = this.accessory.hasAutoVentilationMode;
676
678
  const hasBypassVentilationMode = this.accessory.hasBypassVentilationMode;
677
- const presetsOnServer = deviceData.Presets;
679
+ const hasAutomaticFanSpeed = this.accessory.hasAutomaticFanSpeed;
680
+ const hasCO2Sensor = this.accessory.hasCO2Sensor;
681
+ const hasPM25Sensor = this.accessory.hasPM25Sensor;
678
682
 
679
683
  //accessory
680
684
  const debug = this.enableDebugMode ? this.emit('debug', `Prepare accessory`) : false;
@@ -769,16 +773,16 @@ class DeviceErv extends EventEmitter {
769
773
  let fanSpeedModeText = 0; //AUTO, 1, 2, 3, 4, OFF
770
774
  switch (this.accessory.numberOfFanSpeeds) {
771
775
  case 2: //Fan speed mode 2
772
- deviceData.Device.SetFanSpeed = ataHasAutomaticFanSpeed ? [0, 1, 2, 0][value] : [1, 1, 2][value];
773
- fanSpeedModeText = ataHasAutomaticFanSpeed ? [5, 1, 2, 0][value] : [5, 1, 2][value];
776
+ deviceData.Device.SetFanSpeed = hasAutomaticFanSpeed ? [0, 1, 2, 0][value] : [1, 1, 2][value];
777
+ fanSpeedModeText = hasAutomaticFanSpeed ? [5, 1, 2, 0][value] : [5, 1, 2][value];
774
778
  break;
775
779
  case 3: //Fan speed mode 3
776
- deviceData.Device.SetFanSpeed = ataHasAutomaticFanSpeed ? [0, 1, 2, 3, 0][value] : [1, 1, 2, 3][value];
777
- fanSpeedModeText = ataHasAutomaticFanSpeed ? [5, 1, 2, 3, 0][value] : [5, 1, 2, 3][value];
780
+ deviceData.Device.SetFanSpeed = hasAutomaticFanSpeed ? [0, 1, 2, 3, 0][value] : [1, 1, 2, 3][value];
781
+ fanSpeedModeText = hasAutomaticFanSpeed ? [5, 1, 2, 3, 0][value] : [5, 1, 2, 3][value];
778
782
  break;
779
783
  case 4: //Fan speed mode 4
780
- deviceData.Device.SetFanSpeed = ataHasAutomaticFanSpeed ? [0, 1, 2, 3, 4, 0][value] : [1, 1, 2, 3, 4][value];
781
- fanSpeedModeText = ataHasAutomaticFanSpeed ? [5, 1, 2, 3, 4, 0][value] : [5, 1, 2, 3, 4][value];
784
+ deviceData.Device.SetFanSpeed = hasAutomaticFanSpeed ? [0, 1, 2, 3, 4, 0][value] : [1, 1, 2, 3, 4][value];
785
+ fanSpeedModeText = hasAutomaticFanSpeed ? [5, 1, 2, 3, 4, 0][value] : [5, 1, 2, 3, 4][value];
782
786
  break;
783
787
  };
784
788
 
@@ -1293,13 +1297,13 @@ class DeviceErv extends EventEmitter {
1293
1297
  deviceData.Device.EffectiveFlags = CONSTANTS.Ventilation.EffectiveFlags.Prohibit;
1294
1298
  break;
1295
1299
  case 16: //ROOM TEMP HIDE
1296
- deviceData.Device.HideRoomTemperature = state;
1300
+ deviceData.HideRoomTemperature = state;
1297
1301
  break;
1298
1302
  case 17: //SUPPLY TEMP HIDE
1299
- deviceData.Device.HideSupplyTemperature = state;
1303
+ deviceData.HideSupplyTemperature = state;
1300
1304
  break;
1301
1305
  case 18: //OUTDOOR EMP HIDE
1302
- deviceData.Device.hideOutdoorTemperature = state;
1306
+ deviceData.hideOutdoorTemperature = state;
1303
1307
  break;
1304
1308
  default:
1305
1309
  this.emit('message', `Unknown button mode: ${mode}`);
@@ -309,21 +309,29 @@ class MelCloudAta extends EventEmitter {
309
309
  };
310
310
 
311
311
  const deviceState = {
312
+ Power: power,
313
+ Offlin: offline,
314
+ InStandbyMode: inStandbyMode,
312
315
  RoomTemperature: roomTemperature,
313
316
  OutdoorTemperature: outdoorTemperature,
314
317
  SetTemperature: setTemperature,
315
318
  ActualFanSpeed: actualFanSpeed,
316
319
  FanSpeed: fanSpeed,
320
+ AutomaticFanSpeed: automaticFanSpeed,
317
321
  OperationMode: operationMode,
318
- VaneHorizontalDirection: vaneHorizontalDirection,
319
322
  VaneVerticalDirection: vaneVerticalDirection,
323
+ VaneVerticalSwing: vaneVerticalSwing,
324
+ VaneHorizontalDirection: vaneHorizontalDirection,
325
+ VaneHorizontalSwing: vaneHorizontalSwing,
326
+ DefaultCoolingSetTemperature: defaultCoolingSetTemperature,
327
+ DefaultHeatingSetTemperature: defaultHeatingSetTemperature,
328
+ TemperatureIncrement: temperatureIncrement,
320
329
  HideVaneControls: hideVaneControls,
321
330
  HideDryModeControl: hideDryModeControl,
322
- InStandbyMode: inStandbyMode,
323
331
  ProhibitSetTemperature: prohibitSetTemperature,
324
332
  ProhibitOperationMode: prohibitOperationMode,
325
333
  ProhibitPower: prohibitPower,
326
- Power: power
334
+ EffectiveFlags:effectiveFlags
327
335
  }
328
336
 
329
337
  //check state changes
@@ -370,6 +370,11 @@ class MelCloudAtw extends EventEmitter {
370
370
  };
371
371
 
372
372
  const deviceState = {
373
+ Power: power,
374
+ Offlin: offline,
375
+ IdleZone1: idleZone1,
376
+ IdleZone2: idleZone2,
377
+ UnitStatus: unitStatus,
373
378
  SetTemperatureZone1: setTemperatureZone1,
374
379
  SetTemperatureZone2: setTemperatureZone2,
375
380
  RoomTemperatureZone1: roomTemperatureZone1,
@@ -385,15 +390,13 @@ class MelCloudAtw extends EventEmitter {
385
390
  SetTankWaterTemperature: setTankWaterTemperature,
386
391
  ForcedHotWaterMode: forcedHotWaterMode,
387
392
  OutdoorTemperature: outdoorTemperature,
393
+ TemperatureIncrement: temperatureIncrement,
388
394
  EcoHotWater: ecoHotWater,
389
395
  HolidayMode: holidayMode,
390
396
  ProhibitZone1: prohibitHeatingZone1,
391
397
  ProhibitZone2: prohibitHeatingZone2,
392
398
  ProhibitHotWater: prohibitHotWater,
393
- IdleZone1: idleZone1,
394
- IdleZone2: idleZone2,
395
- UnitStatus: unitStatus,
396
- Power: power
399
+ EffectiveFlags:effectiveFlags
397
400
  }
398
401
 
399
402
  //check state changes
@@ -297,6 +297,8 @@ class MelCloudErv extends EventEmitter {
297
297
  };
298
298
 
299
299
  const deviceState = {
300
+ Power: power,
301
+ Offlin: offline,
300
302
  RoomTemperature: roomTemperature,
301
303
  SupplyTemperature: supplyTemperature,
302
304
  OutdoorTemperature: outdoorTemperature,
@@ -305,10 +307,20 @@ class MelCloudErv extends EventEmitter {
305
307
  SetFanSpeed: setFanSpeed,
306
308
  OperationMode: operationMode,
307
309
  VentilationMode: ventilationMode,
310
+ RoomCO2Level: roomCO2Level,
311
+ ActualSupplyFanSpeed: actualSupplyFanSpeed,
312
+ ActualExhaustFanSpeed: actualExhaustFanSpeed,
313
+ CoreMaintenanceRequired: coreMaintenanceRequired,
314
+ FilterMaintenanceRequired: filterMaintenanceRequired,
315
+ TemperatureIncrement: temperatureIncrement,
316
+ DefaultCoolingSetTemperature: defaultCoolingSetTemperature,
317
+ DefaultHeatingSetTemperature: defaultHeatingSetTemperature,
318
+ PM25SensorStatus: pM25SensorStatus,
319
+ PM25Level: pM25Level,
308
320
  HideRoomTemperature: hideRoomTemperature,
309
321
  HideSupplyTemperature: hideSupplyTemperature,
310
322
  HideOutdoorTemperature: hideOutdoorTemperature,
311
- Power: power
323
+ EffectiveFlags: effectiveFlags
312
324
  }
313
325
 
314
326
  //check state changes