homebridge-melcloud-control 4.3.0-beta.51 → 4.3.0-beta.53

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 +15 -28
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.51",
4
+ "version": "4.3.0-beta.53",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
@@ -29,7 +29,7 @@ class MelCloudAta extends EventEmitter {
29
29
  this.socket = null;
30
30
  this.connecting = false;
31
31
  this.socketConnected = false;
32
- this.reconnectDelay = 1000;
32
+ this.heartbeat = null;
33
33
 
34
34
  //lock flag
35
35
  this.locks = false;
@@ -69,19 +69,6 @@ class MelCloudAta extends EventEmitter {
69
69
  this.socketConnected = false;
70
70
  }
71
71
 
72
- reconnect() {
73
- this.cleanupSocket();
74
-
75
- const delay = Math.min(this.reconnectDelay, 30000); // max 30s
76
- if (this.logDebug) this.emit('debug', `Reconnect in ${delay}ms`);
77
-
78
- setTimeout(() => {
79
- this.reconnectDelay *= 2;
80
- this.reconnectDelay = Math.max(1000, this.reconnectDelay);
81
- this.connectSocket(deviceData);
82
- }, delay);
83
- };
84
-
85
72
  async checkState() {
86
73
  try {
87
74
 
@@ -91,9 +78,9 @@ class MelCloudAta extends EventEmitter {
91
78
 
92
79
  this.headers = devicesData.Headers;
93
80
  const deviceData = devicesData.Devices.find(device => device.DeviceID === this.deviceId);
81
+ deviceData.Scenes = devicesData.Scenes ?? [];
94
82
 
95
83
  if (this.accountType === 'melcloudhome') {
96
- deviceData.Scenes = devicesData.Scenes ?? [];
97
84
  deviceData.Device.OperationMode = AirConditioner.OperationModeMapStringToEnum[deviceData.Device.OperationMode] ?? deviceData.Device.OperationMode;
98
85
  deviceData.Device.ActualFanSpeed = AirConditioner.FanSpeedMapStringToEnum[deviceData.Device.ActualFanSpeed] ?? deviceData.Device.ActualFanSpeed;
99
86
  deviceData.Device.SetFanSpeed = AirConditioner.FanSpeedMapStringToEnum[deviceData.Device.SetFanSpeed] ?? deviceData.Device.SetFanSpeed;
@@ -113,10 +100,11 @@ class MelCloudAta extends EventEmitter {
113
100
  const socket = new WebSocket(url, { headers: devicesData.WsHeaders.headers })
114
101
  .on('error', (error) => {
115
102
  if (this.logError) this.emit('error', `Socket error: ${error}`);
103
+ socket.close();
116
104
  })
117
105
  .on('close', () => {
118
106
  if (this.logDebug) this.emit('debug', `Socket closed`);
119
- this.reconnect();
107
+ this.cleanupSocket();
120
108
  })
121
109
  .on('open', () => {
122
110
  this.socket = socket;
@@ -151,13 +139,15 @@ class MelCloudAta extends EventEmitter {
151
139
  const messageType = parsedMessage[0].messageType;
152
140
  switch (messageType) {
153
141
  case 'unitStateChanged':
154
- const settings = Object.fromEntries(messageData.settings.map(({ name, value }) => {
155
- let parsedValue = value;
156
- if (value === "True") parsedValue = true;
157
- else if (value === "False") parsedValue = false;
158
- else if (!isNaN(value) && value !== "") parsedValue = Number(value);
159
- return [name, parsedValue];
160
- }));
142
+ const settings = Object.fromEntries(
143
+ messageData.settings.map(({ name, value }) => {
144
+ let parsedValue = value;
145
+ if (value === "True") parsedValue = true;
146
+ else if (value === "False") parsedValue = false;
147
+ else if (!isNaN(value) && value !== "") parsedValue = Number(value);
148
+ return [name, parsedValue];
149
+ })
150
+ );
161
151
  Object.assign(deviceData.Device, settings);
162
152
  updateDeviceState = true;
163
153
  break;
@@ -175,14 +165,11 @@ class MelCloudAta extends EventEmitter {
175
165
  return;
176
166
  }
177
167
 
178
- if (updateDeviceState) {
179
- this.deviceData = deviceData;
180
- this.emit('deviceState', deviceData);
181
- }
168
+ if (updateDeviceState) this.emit('deviceState', deviceData);
182
169
  });
183
170
  } catch (error) {
184
171
  if (this.logError) this.emit('error', `Socket connection failed: ${error}`);
185
- this.reconnect();
172
+ this.cleanupSocket();
186
173
  }
187
174
  }
188
175
  }