homebridge-melcloud-control 4.3.0-beta.36 → 4.3.0-beta.39
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 +1 -1
- package/src/melcloudata.js +15 -7
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.
|
|
4
|
+
"version": "4.3.0-beta.39",
|
|
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/melcloudata.js
CHANGED
|
@@ -146,15 +146,22 @@ class MelCloudAta extends EventEmitter {
|
|
|
146
146
|
const messageType = parsedMessage[0].messageType;
|
|
147
147
|
switch (messageType) {
|
|
148
148
|
case 'unitStateChanged':
|
|
149
|
-
const settings = Object.fromEntries(messageData.
|
|
149
|
+
const settings = Object.fromEntries(messageData.map(({ name, value }) => {
|
|
150
|
+
let parsedValue = value;
|
|
151
|
+
if (value === "True") parsedValue = true;
|
|
152
|
+
else if (value === "False") parsedValue = false;
|
|
153
|
+
else if (!isNaN(value) && value !== "") parsedValue = Number(value);
|
|
154
|
+
return [name, parsedValue];
|
|
155
|
+
}));
|
|
156
|
+
|
|
150
157
|
Object.assign(deviceData.Device, settings);
|
|
151
158
|
|
|
152
|
-
if (!this.logDebug) this.emit('warn', `Updated state ${JSON.stringify(deviceData, null, 2)}`);
|
|
153
159
|
this.emit('deviceState', deviceData);
|
|
154
160
|
break;
|
|
155
161
|
case 'unitWiFiChanged':
|
|
156
162
|
const state = Object.fromEntries(messageData.settings.map(s => [s.name, s.value]));
|
|
157
163
|
Object.assign(deviceData.Device, state);
|
|
164
|
+
|
|
158
165
|
this.emit('deviceState', deviceData);
|
|
159
166
|
break;
|
|
160
167
|
}
|
|
@@ -275,7 +282,7 @@ class MelCloudAta extends EventEmitter {
|
|
|
275
282
|
headers: this.headers,
|
|
276
283
|
data: payload
|
|
277
284
|
});
|
|
278
|
-
this.updateData(deviceData);
|
|
285
|
+
this.updateData(deviceData, updateState);
|
|
279
286
|
return true;
|
|
280
287
|
case "melcloudhome":
|
|
281
288
|
switch (flag) {
|
|
@@ -349,11 +356,12 @@ class MelCloudAta extends EventEmitter {
|
|
|
349
356
|
method = 'PUT';
|
|
350
357
|
path = ApiUrlsHome.PutAta.replace('deviceid', deviceData.DeviceID);
|
|
351
358
|
this.headers.Referer = ApiUrlsHome.Referers.PutDeviceSettings;
|
|
359
|
+
updateState = false;
|
|
360
|
+
break;
|
|
352
361
|
}
|
|
353
362
|
|
|
354
363
|
this.headers['Content-Type'] = 'application/json; charset=utf-8';
|
|
355
364
|
this.headers.Origin = ApiUrlsHome.Origin;
|
|
356
|
-
updateState = false;
|
|
357
365
|
if (this.logDebug) this.emit('debug', `Send Data: ${JSON.stringify(payload, null, 2)}`);
|
|
358
366
|
await axios(path, {
|
|
359
367
|
method: method,
|
|
@@ -363,7 +371,7 @@ class MelCloudAta extends EventEmitter {
|
|
|
363
371
|
data: payload
|
|
364
372
|
});
|
|
365
373
|
|
|
366
|
-
|
|
374
|
+
this.updateData(deviceData, updateState);
|
|
367
375
|
return true;
|
|
368
376
|
default:
|
|
369
377
|
return;
|
|
@@ -374,9 +382,9 @@ class MelCloudAta extends EventEmitter {
|
|
|
374
382
|
}
|
|
375
383
|
}
|
|
376
384
|
|
|
377
|
-
updateData(deviceData) {
|
|
385
|
+
updateData(deviceData, updateState = true) {
|
|
378
386
|
this.locks = true;
|
|
379
|
-
this.emit('deviceState', deviceData);
|
|
387
|
+
if (updateState) this.emit('deviceState', deviceData);
|
|
380
388
|
|
|
381
389
|
setTimeout(() => {
|
|
382
390
|
this.locks = false
|