homebridge-melcloud-control 4.3.2-beta.9 → 4.3.2

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
@@ -22,6 +22,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
22
22
 
23
23
  - Do not use Homebridge UI > v5.5.0 because of break config.json
24
24
 
25
+ # [4.3.2] - (21.11.2025)
26
+
27
+ ## Changes
28
+
29
+ - stability improvements
30
+ - cleanup
31
+
25
32
  # [4.3.0] - (20.11.2025)
26
33
 
27
34
  ## Changes
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.2-beta.9",
4
+ "version": "4.3.2",
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/functions.js CHANGED
@@ -160,13 +160,12 @@ class Functions extends EventEmitter {
160
160
  return v !== undefined && v !== null && !(typeof v === 'number' && Number.isNaN(v));
161
161
  }
162
162
 
163
- convertValue(value, name) {
164
- let parsedValue = value;
165
- if (value === "True") parsedValue = true;
166
- else if (value === "False") parsedValue = false;
167
- else if (!isNaN(value) && value !== "") parsedValue = Number(value);
168
- return [name, parsedValue];
163
+ convertValue(v) {
164
+ let parsedValue = v;
165
+ if (v === "True") parsedValue = true;
166
+ else if (v === "False") parsedValue = false;
167
+ else if (!isNaN(v) && v !== "") parsedValue = Number(v);
168
+ return parsedValue;
169
169
  }
170
-
171
170
  }
172
171
  export default Functions
@@ -127,8 +127,8 @@ class MelCloudAta extends EventEmitter {
127
127
  }
128
128
 
129
129
  //check state changes
130
- const deviceDataHasNotChanged = JSON.stringify(deviceData) === JSON.stringify(this.deviceData);
131
- if (deviceDataHasNotChanged) return;
130
+ const deviceDataNotChanged = JSON.stringify(deviceData) === JSON.stringify(this.deviceData);
131
+ if (deviceDataNotChanged) return;
132
132
  this.deviceData = deviceData;
133
133
 
134
134
  //emit info
@@ -139,7 +139,7 @@ class MelCloudAta extends EventEmitter {
139
139
 
140
140
  return true;
141
141
  } catch (error) {
142
- throw new Error(`Check state error: ${error.message}`);
142
+ throw new Error(`Update state error: ${error.message}`);
143
143
  };
144
144
  };
145
145
 
@@ -195,7 +195,7 @@ class MelCloudAta extends EventEmitter {
195
195
  const messageData = parsedMessage?.[0]?.Data;
196
196
  if (!messageData) return;
197
197
 
198
- let updateDeviceState = false;
198
+ let updateState = false;
199
199
  const unitId = messageData?.id;
200
200
  switch (unitId) {
201
201
  case this.deviceId:
@@ -204,35 +204,37 @@ class MelCloudAta extends EventEmitter {
204
204
  case 'unitStateChanged':
205
205
  const settings = Object.fromEntries(
206
206
  messageData.settings.map(({ name, value }) => {
207
- let parsedValue = this.functions.convertValue(value, name);
208
- return parsedValue;
207
+ let parsedValue = this.functions.convertValue(value);
208
+ return [name, parsedValue];
209
209
  })
210
210
  );
211
211
  Object.assign(deviceData.Device, settings);
212
- updateDeviceState = true;
212
+ updateState = true;
213
213
  break;
214
214
  case 'unitWifiSignalChanged':
215
215
  deviceData.Rssi = messageData.rssi;
216
- updateDeviceState = true;
216
+ updateState = true;
217
217
  break;
218
218
  default:
219
- if (!this.logDebug) this.emit('debug', `Unit ${unitId}, received unknown message type: ${stringifyMessage}`);
219
+ if (this.logDebug) this.emit('debug', `Unit ${unitId}, received unknown message type: ${stringifyMessage}`);
220
220
  return;
221
221
  }
222
222
  break;
223
223
  default:
224
- if (!this.logDebug) this.emit('debug', `Incoming unknown unit id: ${stringifyMessage}`);
224
+ if (this.logDebug) this.emit('debug', `Incoming unknown unit id: ${stringifyMessage}`);
225
225
  return;
226
226
  }
227
227
 
228
- if (updateDeviceState) await this.updateState(deviceData);
228
+ //update state
229
+ if (updateState) await this.updateState(deviceData);
229
230
  });
230
231
  } catch (error) {
231
232
  if (this.logError) this.emit('error', `Socket connection failed: ${error}`);
232
233
  this.cleanupSocket();
233
234
  }
234
235
  }
235
- if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
236
+
237
+ //update state
236
238
  await this.updateState(deviceData);
237
239
 
238
240
  return true;
@@ -382,7 +384,7 @@ class MelCloudAta extends EventEmitter {
382
384
  data: payload
383
385
  });
384
386
 
385
- await this.updateData(deviceData, updateState);
387
+ this.updateData(deviceData, updateState);
386
388
  return true;
387
389
  default:
388
390
  return;
@@ -393,9 +395,9 @@ class MelCloudAta extends EventEmitter {
393
395
  }
394
396
  }
395
397
 
396
- async updateData(deviceData, updateState = true) {
398
+ updateData(deviceData, updateState = true) {
397
399
  this.locks = true;
398
- if (updateState) await this.updateState(deviceData);
400
+ if (updateState) this.emit('deviceState', deviceData);
399
401
 
400
402
  setTimeout(() => {
401
403
  this.locks = false
@@ -145,7 +145,7 @@ class MelCloudHome extends EventEmitter {
145
145
 
146
146
  const settingsObject = Object.fromEntries(
147
147
  settingsArray.map(({ name, value }) => {
148
- let parsedValue = this.functions.convertValue(value, name);
148
+ let parsedValue = this.functions.convertValue(value);
149
149
  const key = name.charAt(0).toUpperCase() + name.slice(1);
150
150
  return [key, parsedValue];
151
151
  })