homebridge-melcloud-control 4.0.0-beta.566 → 4.0.0-beta.567

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": "4.0.0-beta.566",
4
+ "version": "4.0.0-beta.567",
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
@@ -606,7 +606,7 @@ class DeviceAta extends EventEmitter {
606
606
  };
607
607
 
608
608
  //error sensor
609
- if (this.errorSensor) {
609
+ if (this.errorSensor && this.accessory.isInError !== null) {
610
610
  if (this.logDebug) this.emit('debug', `Prepare error service`);
611
611
  this.errorService = new Service.ContactSensor(`${serviceName} Error`, `Error Sensor ${deviceId}`);
612
612
  this.errorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -954,6 +954,18 @@ class DeviceAta extends EventEmitter {
954
954
  .on('deviceState', async (deviceData) => {
955
955
  this.deviceData = deviceData;
956
956
 
957
+ //keys
958
+ const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
959
+ const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
960
+ const errorKey = this.accountType === 'melcloud' ? 'HasError' : 'IsInError';
961
+ const supportAirDirectionKey = this.accountType === 'melcloud' ? 'AirDirectionFunction' : 'HasAirDirectionFunction';
962
+ const supportSwingKey = this.accountType === 'melcloud' ? 'SwingFunction' : 'HasSwing';
963
+ const supportVideWaneKey = this.accountType === 'melcloud' ? 'ModelSupportsWideVane' : 'SupportsWideVane';
964
+ const supportAutoKey = this.accountType === 'melcloud' ? 'ModelSupportsAuto' : 'HasAutoOperationMode';
965
+ const supportHeatKey = this.accountType === 'melcloud' ? 'ModelSupportsHeat' : 'HasHeatOperationMode';
966
+ const supportDryKey = this.accountType === 'melcloud' ? 'ModelSupportsDry' : 'HasDryOperationMode';
967
+ const supportCoolKey = this.accountType === 'melcloud' ? 'ModelSupportsCool' : 'HasCoolOperationMode';
968
+
957
969
  //presets
958
970
  const presetsOnServer = deviceData.Presets ?? [];
959
971
 
@@ -964,17 +976,17 @@ class DeviceAta extends EventEmitter {
964
976
  //device info
965
977
  const accountTypeMelcloud = this.accountType === 'melcloud';
966
978
  const supportsAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed ?? false;
967
- const supportsAirDirectionFunction = accountTypeMelcloud ? deviceData.Device.AirDirectionFunction : deviceData.Device.HasAirDirectionFunction;;
968
- const supportsSwingFunction = accountTypeMelcloud ? deviceData.Device.SwingFunction : deviceData.Device.HasSwing;
969
- const supportsWideVane = accountTypeMelcloud ? deviceData.Device.ModelSupportsWideVane : deviceData.Device.SupportsWideVane;
979
+ const supportsAirDirectionFunction = deviceData.Device[supportAirDirectionKey];
980
+ const supportsSwingFunction = deviceData.Device[supportSwingKey];
981
+ const supportsWideVane = deviceData.Device[supportVideWaneKey];
970
982
  const supportsOutdoorTemperature = deviceData.Device.HasOutdoorTemperature ?? false;
971
983
  const supportsFanSpeed = accountTypeMelcloud ? deviceData.Device.ModelSupportsFanSpeed : deviceData.Device.NumberOfFanSpeeds > 0;
972
- const supportsAuto1 = accountTypeMelcloud ? deviceData.Device.ModelSupportsAuto : deviceData.Device.HasAutoOperationMode;
984
+ const supportsAuto1 = deviceData.Device[supportAutoKey];
973
985
  const supportsAuto = this.autoDryFanMode >= 1 && supportsAuto1
974
- const supportsHeat1 = accountTypeMelcloud ? deviceData.Device.ModelSupportsHeat : deviceData.Device.HasHeatOperationMode
986
+ const supportsHeat1 = deviceData.Device[supportHeatKey];
975
987
  const supportsHeat = this.heatDryFanMode >= 1 && supportsHeat1;
976
- const supportsDry = accountTypeMelcloud ? deviceData.Device.ModelSupportsDry : deviceData.Device.HasDryOperationMode;
977
- const supportsCool1 = accountTypeMelcloud ? deviceData.Device.ModelSupportsCool : deviceData.Device.HasCoolOperationMode;
988
+ const supportsDry = deviceData.Device[supportDryKey];
989
+ const supportsCool1 = deviceData.Device[supportCoolKey];
978
990
  const supportsCool = this.coolDryFanMode >= 1 && supportsCool1;
979
991
  const numberOfFanSpeeds = supportsFanSpeed ? deviceData.Device.NumberOfFanSpeeds : 0;
980
992
  const minTempHeat = 10;
@@ -983,8 +995,6 @@ class DeviceAta extends EventEmitter {
983
995
  const maxTempCoolDryAuto = 31;
984
996
 
985
997
  //device state
986
- const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
987
- const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
988
998
  const power = deviceData.Device.Power ?? false;
989
999
  const inStandbyMode = deviceData.Device.InStandbyMode ?? false;
990
1000
  const roomTemperature = deviceData.Device.RoomTemperature;
@@ -1004,7 +1014,7 @@ class DeviceAta extends EventEmitter {
1004
1014
  const prohibitPower = deviceData.Device.ProhibitPower ?? false;
1005
1015
  const temperatureStep = deviceData.Device[tempStepKey] ? 0.5 : 1;
1006
1016
  const outdoorTemperature = deviceData.Device.OutdoorTemperature;
1007
- const isInError = deviceData.Device.IsInError ?? false;
1017
+ const isInError = deviceData.Device[errorKey];
1008
1018
 
1009
1019
  //accessory
1010
1020
  const obj = {
package/src/deviceatw.js CHANGED
@@ -869,7 +869,7 @@ class DeviceAtw extends EventEmitter {
869
869
  };
870
870
 
871
871
  //error sensor
872
- if (this.errorSensor) {
872
+ if (this.errorSensor && this.accessory.isInError !== null) {
873
873
  if (this.logDebug) this.emit('debug', `Prepare error service`);
874
874
  this.errorService = new Service.ContactSensor(`${serviceName} Error`, `Error Sensor ${deviceId}`);
875
875
  this.errorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -1329,6 +1329,10 @@ class DeviceAtw extends EventEmitter {
1329
1329
  .on('deviceState', async (deviceData) => {
1330
1330
  this.deviceData = deviceData;
1331
1331
 
1332
+ //keys
1333
+ const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
1334
+ const errorKey = this.accountType === 'melcloud' ? 'HasError' : 'IsInError';
1335
+
1332
1336
  //presets
1333
1337
  const presetsOnServer = deviceData.Presets ?? [];
1334
1338
 
@@ -1340,7 +1344,7 @@ class DeviceAtw extends EventEmitter {
1340
1344
  const canHeat = deviceData.Device.CanHeat ?? false;
1341
1345
  const canCool = deviceData.Device.CanCool ?? false;
1342
1346
  const heatCoolModes = canHeat && canCool ? 0 : canHeat ? 1 : canCool ? 2 : 3;
1343
- const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
1347
+ const temperatureIncrement = deviceData.Device[tempStepKey] ?? 1;
1344
1348
  const minSetTemperature = deviceData.Device.MinSetTemperature ?? 10;
1345
1349
  const maxSetTemperature = deviceData.Device.MaxSetTemperature ?? 30;
1346
1350
  const maxTankTemperature = deviceData.Device.MaxTankTemperature ?? 70;
@@ -1370,7 +1374,7 @@ class DeviceAtw extends EventEmitter {
1370
1374
  const holidayMode = deviceData.Device.HolidayMode ?? false;
1371
1375
  const flowTemperatureHeatPump = deviceData.Device.FlowTemperature;
1372
1376
  const returnTemperatureHeatPump = deviceData.Device.ReturnTemperature;
1373
- const isInError = deviceData.Device.IsInError ?? false;
1377
+ const isInError = deviceData.Device[errorKey];
1374
1378
 
1375
1379
  //zone 1
1376
1380
  const zone1Name = deviceData.Zone1Name ?? 'Zone 1';
package/src/deviceerv.js CHANGED
@@ -592,32 +592,36 @@ class DeviceErv extends EventEmitter {
592
592
  };
593
593
 
594
594
  //core maintenance
595
- this.coreMaintenanceService = new Service.FilterMaintenance(`${serviceName} Core Maintenance`, `CoreMaintenance ${deviceId}`);
596
- this.coreMaintenanceService.addOptionalCharacteristic(Characteristic.ConfiguredName);
597
- this.coreMaintenanceService.setCharacteristic(Characteristic.ConfiguredName, `${serviceName} Core Maintenance`);
598
- this.coreMaintenanceService.getCharacteristic(Characteristic.FilterChangeIndication)
599
- .onGet(async () => {
600
- const value = this.accessory.coreMaintenanceRequired;
601
- return value;
602
- });
603
- this.coreMaintenanceService.getCharacteristic(Characteristic.ResetFilterIndication)
604
- .onSet(async (state) => {
605
- });
606
- accessory.addService(this.coreMaintenanceService);
595
+ if (this.accessory.coreMaintenanceRequired !== null) {
596
+ this.coreMaintenanceService = new Service.FilterMaintenance(`${serviceName} Core Maintenance`, `CoreMaintenance ${deviceId}`);
597
+ this.coreMaintenanceService.addOptionalCharacteristic(Characteristic.ConfiguredName);
598
+ this.coreMaintenanceService.setCharacteristic(Characteristic.ConfiguredName, `${serviceName} Core Maintenance`);
599
+ this.coreMaintenanceService.getCharacteristic(Characteristic.FilterChangeIndication)
600
+ .onGet(async () => {
601
+ const value = this.accessory.coreMaintenanceRequired;
602
+ return value;
603
+ });
604
+ this.coreMaintenanceService.getCharacteristic(Characteristic.ResetFilterIndication)
605
+ .onSet(async (state) => {
606
+ });
607
+ accessory.addService(this.coreMaintenanceService);
608
+ }
607
609
 
608
610
  //filter maintenance
609
- this.filterMaintenanceService = new Service.FilterMaintenance(`${serviceName} Filter Maintenance`, `FilterMaintenance ${deviceId}`);
610
- this.filterMaintenanceService.addOptionalCharacteristic(Characteristic.ConfiguredName);
611
- this.filterMaintenanceService.setCharacteristic(Characteristic.ConfiguredName, `${serviceName} Filter Maintenance`);
612
- this.filterMaintenanceService.getCharacteristic(Characteristic.FilterChangeIndication)
613
- .onGet(async () => {
614
- const value = this.accessory.filterMaintenanceRequired;
615
- return value;
616
- });
617
- this.filterMaintenanceService.getCharacteristic(Characteristic.ResetFilterIndication)
618
- .onSet(async (state) => {
619
- });
620
- accessory.addService(this.filterMaintenanceService);
611
+ if (this.accessory.filterMaintenanceRequired !== null) {
612
+ this.filterMaintenanceService = new Service.FilterMaintenance(`${serviceName} Filter Maintenance`, `FilterMaintenance ${deviceId}`);
613
+ this.filterMaintenanceService.addOptionalCharacteristic(Characteristic.ConfiguredName);
614
+ this.filterMaintenanceService.setCharacteristic(Characteristic.ConfiguredName, `${serviceName} Filter Maintenance`);
615
+ this.filterMaintenanceService.getCharacteristic(Characteristic.FilterChangeIndication)
616
+ .onGet(async () => {
617
+ const value = this.accessory.filterMaintenanceRequired;
618
+ return value;
619
+ });
620
+ this.filterMaintenanceService.getCharacteristic(Characteristic.ResetFilterIndication)
621
+ .onSet(async (state) => {
622
+ });
623
+ accessory.addService(this.filterMaintenanceService);
624
+ }
621
625
 
622
626
  //room CO2 sensor
623
627
  if (hasCO2Sensor) {
@@ -656,7 +660,7 @@ class DeviceErv extends EventEmitter {
656
660
  }
657
661
 
658
662
  //error sensor
659
- if (this.errorSensor) {
663
+ if (this.errorSensor && this.accessory.isInError !== null) {
660
664
  if (this.logDebug) this.emit('debug', `Prepare error service`);
661
665
  this.errorService = new Service.ContactSensor(`${serviceName} Error`, `Error Sensor ${deviceId}`);
662
666
  this.errorService.addOptionalCharacteristic(Characteristic.ConfiguredName);
@@ -874,6 +878,11 @@ class DeviceErv extends EventEmitter {
874
878
  .on('deviceState', async (deviceData) => {
875
879
  this.deviceData = deviceData;
876
880
 
881
+ //keys
882
+ const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
883
+ const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
884
+ const errorKey = this.accountType === 'melcloud' ? 'HasError' : 'IsInError';
885
+
877
886
  //presets
878
887
  const presetsOnServer = deviceData.Presets ?? [];
879
888
 
@@ -899,18 +908,18 @@ class DeviceErv extends EventEmitter {
899
908
  const hasAutoVentilationMode = deviceData.Device.HasAutoVentilationMode ?? false;
900
909
  const hasBypassVentilationMode = deviceData.Device.HasBypassVentilationMode ?? false;
901
910
  const hasAutomaticFanSpeed = deviceData.Device.HasAutomaticFanSpeed ?? false;
902
- const coreMaintenanceRequired = deviceData.Device.CoreMaintenanceRequired ? 1 : 0;
903
- const filterMaintenanceRequired = deviceData.Device.FilterMaintenanceRequired ? 1 : 0;
911
+ const coreMaintenanceRequired = deviceData.Device.CoreMaintenanceRequired;
912
+ const filterMaintenanceRequired = deviceData.Device.FilterMaintenanceRequired;
904
913
  const actualVentilationMode = deviceData.Device.ActualVentilationMode;
905
- const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds ?? 0;
906
- const temperatureIncrement = deviceData.Device.TemperatureIncrement ?? 1;
914
+ const numberOfFanSpeeds = deviceData.Device.NumberOfFanSpeeds;
915
+ const temperatureIncrement = deviceData.Device[tempStepKey] ?? 1;
907
916
  const minTempHeat = 10;
908
917
  const maxTempHeat = 31;
909
918
  const minTempCoolDry = 16;
910
919
  const maxTempCoolDry = 31;
911
920
 
912
921
  //device state
913
- const power = deviceData.Device.Power ?? false;
922
+ const power = deviceData.Device.Power;
914
923
  const roomTemperature = deviceData.Device.RoomTemperature;
915
924
  const supplyTemperature = deviceData.Device.SupplyTemperature;
916
925
  const outdoorTemperature = deviceData.Device.OutdoorTemperature;
@@ -921,7 +930,7 @@ class DeviceErv extends EventEmitter {
921
930
  const setFanSpeed = deviceData.Device.SetFanSpeed;
922
931
  const operationMode = deviceData.Device.OperationMode;
923
932
  const ventilationMode = deviceData.Device.VentilationMode;
924
- const isInError = deviceData.Device.IsInError ?? false;
933
+ const isInError = deviceData.Device[errorKey];
925
934
 
926
935
  //accessory
927
936
  const obj = {
@@ -75,13 +75,17 @@ class MelCloudAta extends EventEmitter {
75
75
  }
76
76
  if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
77
77
 
78
+ //keys
79
+ const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
80
+ const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
81
+ const errorKey = this.accountType === 'melcloud' ? 'HasError' : 'IsInError';
82
+
78
83
  //device info
79
84
  const hideVaneControls = deviceData.HideVaneControls;
80
85
  const hideDryModeControl = deviceData.HideDryModeControl;
81
86
  const serialNumber = deviceData.SerialNumber;
82
87
 
83
88
  //device
84
- const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
85
89
  const device = deviceData.Device ?? {};
86
90
  const prohibitSetTemperature = device.ProhibitSetTemperature;
87
91
  const prohibitOperationMode = device.ProhibitOperationMode;
@@ -99,10 +103,11 @@ class MelCloudAta extends EventEmitter {
99
103
  const vaneHorizontalSwing = device.VaneHorizontalSwing;
100
104
  const operationMode = device.OperationMode;
101
105
  const inStandbyMode = device.InStandbyMode;
106
+ const temperatureIncrement = device[tempStepKey];
102
107
  const defaultCoolingSetTemperature = device.DefaultCoolingSetTemperature;
103
108
  const defaultHeatingSetTemperature = device.DefaultHeatingSetTemperature;
104
109
  const firmwareAppVersion = device.FirmwareAppVersion;
105
- const isInError = device.IsInError;
110
+ const isInError = device[errorKey];
106
111
 
107
112
  //units
108
113
  const units = Array.isArray(device.Units) ? device.Units : [];
@@ -141,6 +146,7 @@ class MelCloudAta extends EventEmitter {
141
146
  VaneVerticalSwing: vaneVerticalSwing,
142
147
  VaneHorizontalDirection: vaneHorizontalDirection,
143
148
  VaneHorizontalSwing: vaneHorizontalSwing,
149
+ TemperatureIncrement: temperatureIncrement,
144
150
  DefaultCoolingSetTemperature: defaultCoolingSetTemperature,
145
151
  DefaultHeatingSetTemperature: defaultHeatingSetTemperature,
146
152
  ProhibitPower: prohibitPower,
@@ -67,13 +67,18 @@ class MelCloudAtw extends EventEmitter {
67
67
  }
68
68
  if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
69
69
 
70
+ //keys
71
+ const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
72
+ const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
73
+ const errorKey = this.accountType === 'melcloud' ? 'HasError' : 'IsInError';
74
+
70
75
  //device info
71
76
  const serialNumber = deviceData.SerialNumber;
72
77
 
73
78
  //device
74
79
  const device = deviceData.Device ?? {};
75
80
  const hasHotWaterTank = device.HasHotWaterTank ?? false;
76
- const temperatureIncrement = device.TemperatureIncrement;
81
+ const temperatureIncrement = device[tempStepKey];
77
82
  const roomTemperatureZone1 = device.RoomTemperatureZone1;
78
83
  const roomTemperatureZone2 = device.RoomTemperatureZone2;
79
84
  const outdoorTemperature = device.OutdoorTemperature;
@@ -100,7 +105,7 @@ class MelCloudAtw extends EventEmitter {
100
105
  const idleZone2 = device.IdleZone2 ?? false;
101
106
  const firmwareAppVersion = device.FirmwareAppVersion;
102
107
  const hasZone2 = device.HasZone2 ?? false;
103
- const isInError = device.IsInError;
108
+ const isInError = device[errorKey];
104
109
 
105
110
  //units
106
111
  const units = Array.isArray(device.Units) ? device.Units : [];
@@ -67,25 +67,30 @@ class MelCloudErv extends EventEmitter {
67
67
  }
68
68
  if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
69
69
 
70
+ //keys
71
+ const fanKey = this.accountType === 'melcloud' ? 'FanSpeed' : 'SetFanSpeed';
72
+ const tempStepKey = this.accountType === 'melcloud' ? 'TemperatureIncrement' : 'HasHalfDegreeIncrements';
73
+ const errorKey = this.accountType === 'melcloud' ? 'HasError' : 'IsInError';
74
+
70
75
  //presets
71
- const hideRoomTemperature = deviceData.HideRoomTemperature ?? false;
72
- const hideSupplyTemperature = deviceData.HideSupplyTemperature ?? false;
73
- const hideOutdoorTemperature = deviceData.HideOutdoorTemperature ?? false;
76
+ const hideRoomTemperature = deviceData.HideRoomTemperature;
77
+ const hideSupplyTemperature = deviceData.HideSupplyTemperature;
78
+ const hideOutdoorTemperature = deviceData.HideOutdoorTemperature;
74
79
  const serialNumber = deviceData.SerialNumber;
75
80
 
76
81
  //device
77
82
  const device = deviceData.Device ?? {};
78
83
  const pM25SensorStatus = device.PM25SensorStatus;
79
84
  const pM25Level = device.PM25Level;
80
- const temperatureIncrement = device.TemperatureIncrement;
81
- const coreMaintenanceRequired = device.CoreMaintenanceRequired ?? false;
82
- const filterMaintenanceRequired = device.FilterMaintenanceRequired ?? false;
83
- const power = device.Power ?? false;
85
+ const temperatureIncrement = device[tempStepKey];
86
+ const coreMaintenanceRequired = device.CoreMaintenanceRequired;
87
+ const filterMaintenanceRequired = device.FilterMaintenanceRequired;
88
+ const power = device.Power;
84
89
  const roomTemperature = device.RoomTemperature;
85
90
  const supplyTemperature = device.SupplyTemperature;
86
91
  const outdoorTemperature = device.OutdoorTemperature;
87
92
  const roomCO2Level = device.RoomCO2Level;
88
- const nightPurgeMode = device.NightPurgeMode ?? false;
93
+ const nightPurgeMode = device.NightPurgeMode;
89
94
  const setTemperature = device.SetTemperature;
90
95
  const actualSupplyFanSpeed = device.ActualSupplyFanSpeed;
91
96
  const actualExhaustFanSpeed = device.ActualExhaustFanSpeed;
@@ -95,7 +100,7 @@ class MelCloudErv extends EventEmitter {
95
100
  const defaultCoolingSetTemperature = device.DefaultCoolingSetTemperature ?? 23;
96
101
  const defaultHeatingSetTemperature = device.DefaultHeatingSetTemperature ?? 21;
97
102
  const firmwareAppVersion = device.FirmwareAppVersion;
98
- const isInError = device.IsInError;
103
+ const isInError = device[errorKey];
99
104
 
100
105
  //units
101
106
  const units = Array.isArray(device.Units) ? device.Units : [];