homebridge-melcloud-control 4.3.0-beta.13 → 4.3.0-beta.14

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/melcloudata.js +18 -17
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "4.3.0-beta.13",
4
+ "version": "4.3.0-beta.14",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
@@ -27,8 +27,8 @@ class MelCloudAta extends EventEmitter {
27
27
  this.deviceData = {};
28
28
  this.headers = {};
29
29
  this.hash = null;
30
- this.start = true;
31
30
  this.socket = null;
31
+ this.socketConnected = false;
32
32
 
33
33
  //lock flag
34
34
  this.locks = false;
@@ -75,18 +75,15 @@ class MelCloudAta extends EventEmitter {
75
75
  const deviceData = devicesData.Devices.find(device => device.DeviceID === this.deviceId);
76
76
  if (this.accountType === 'melcloudhome') {
77
77
  deviceData.Scenes = devicesData.Scenes ?? [];
78
- deviceData.Device.OperationMode = AirConditioner.OperationModeMapStringToEnum[deviceData.Device.OperationMode] ?? deviceData.Device.OperationMode;
79
- deviceData.Device.ActualFanSpeed = AirConditioner.FanSpeedMapStringToEnum[deviceData.Device.ActualFanSpeed] ?? deviceData.Device.ActualFanSpeed;
80
- deviceData.Device.SetFanSpeed = AirConditioner.FanSpeedMapStringToEnum[deviceData.Device.SetFanSpeed] ?? deviceData.Device.SetFanSpeed;
81
- deviceData.Device.VaneVerticalDirection = AirConditioner.VaneVerticalDirectionMapStringToEnum[deviceData.Device.VaneVerticalDirection] ?? deviceData.Device.VaneVerticalDirection;
82
- deviceData.Device.VaneHorizontalDirection = AirConditioner.VaneHorizontalDirectionMapStringToEnum[deviceData.Device.VaneHorizontalDirection] ?? deviceData.Device.VaneHorizontalDirection;
83
78
 
84
- //read default temps
85
- const temps = await this.functions.readData(this.defaultTempsFile, true);
86
- deviceData.Device.DefaultHeatingSetTemperature = temps?.defaultHeatingSetTemperature ?? 20;
87
- deviceData.Device.DefaultCoolingSetTemperature = temps?.defaultCoolingSetTemperature ?? 24;
88
79
 
89
- if (this.start) {
80
+ if (!this.socketConnected) {
81
+ deviceData.Device.OperationMode = AirConditioner.OperationModeMapStringToEnum[deviceData.Device.OperationMode] ?? deviceData.Device.OperationMode;
82
+ deviceData.Device.ActualFanSpeed = AirConditioner.FanSpeedMapStringToEnum[deviceData.Device.ActualFanSpeed] ?? deviceData.Device.ActualFanSpeed;
83
+ deviceData.Device.SetFanSpeed = AirConditioner.FanSpeedMapStringToEnum[deviceData.Device.SetFanSpeed] ?? deviceData.Device.SetFanSpeed;
84
+ deviceData.Device.VaneVerticalDirection = AirConditioner.VaneVerticalDirectionMapStringToEnum[deviceData.Device.VaneVerticalDirection] ?? deviceData.Device.VaneVerticalDirection;
85
+ deviceData.Device.VaneHorizontalDirection = AirConditioner.VaneHorizontalDirectionMapStringToEnum[deviceData.Device.VaneHorizontalDirection] ?? deviceData.Device.VaneHorizontalDirection;
86
+
90
87
  const socket = new WebSocket(`wss://ws.melcloudhome.com/?hash=${devicesData.Hash}`, {
91
88
  headers: {
92
89
  'Origin': 'https://melcloudhome.com',
@@ -107,7 +104,6 @@ class MelCloudAta extends EventEmitter {
107
104
  this.socket = socket;
108
105
  this.socketConnected = true;
109
106
  this.emit('success', `Socket Connect Success`);
110
- this.start = false;
111
107
 
112
108
  // start heartbeat
113
109
  this.heartbeat = setInterval(() => {
@@ -124,22 +120,27 @@ class MelCloudAta extends EventEmitter {
124
120
  const parsedMessage = JSON.parse(message);
125
121
  const messageType = parsedMessage[0].messageType;
126
122
  const messageData = parsedMessage[0].Data;
123
+ const unitId = messageData.id;
124
+ const unitType = messageData.unitType;
127
125
  const stringifyMessage = JSON.stringify(parsedMessage, null, 2);
128
126
  if (!this.logDebug) this.emit('warn', `Incoming message:', ${stringifyMessage}`);
129
127
 
130
- switch (messageType) {
131
- case 'unitStateChanged':
132
- const unitId = messageData.id;
133
- const unitType = messageData.unitType;
128
+ switch (unitId) {
129
+ case this.deviceId:
134
130
  const settings = messageData.settings[0];
135
131
  const name = settings.name;
136
132
  const value = settings.value;
137
- if (this.deviceId === unitId) deviceData.Device[name] = value;
133
+ deviceData.Device[name] = value;
138
134
  break;
139
135
  }
140
136
  });
141
137
  }
142
138
 
139
+ //read default temps
140
+ const temps = await this.functions.readData(this.defaultTempsFile, true);
141
+ deviceData.Device.DefaultHeatingSetTemperature = temps?.defaultHeatingSetTemperature ?? 20;
142
+ deviceData.Device.DefaultCoolingSetTemperature = temps?.defaultCoolingSetTemperature ?? 24;
143
+
143
144
  }
144
145
  if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
145
146