homebridge-melcloud-control 4.3.0-beta.12 → 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.
- package/package.json +1 -1
- package/src/melcloudata.js +20 -21
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.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",
|
package/src/melcloudata.js
CHANGED
|
@@ -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.
|
|
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',
|
|
@@ -103,45 +100,47 @@ class MelCloudAta extends EventEmitter {
|
|
|
103
100
|
this.cleanupSocket();
|
|
104
101
|
})
|
|
105
102
|
.on('open', () => {
|
|
106
|
-
if (this.logDebug) this.emit('debug', `Plugin received heartbeat from TV`);
|
|
107
|
-
|
|
108
103
|
// connect to device success
|
|
109
104
|
this.socket = socket;
|
|
110
105
|
this.socketConnected = true;
|
|
111
106
|
this.emit('success', `Socket Connect Success`);
|
|
112
|
-
this.start = false;
|
|
113
107
|
|
|
114
108
|
// start heartbeat
|
|
115
109
|
this.heartbeat = setInterval(() => {
|
|
116
110
|
if (socket.readyState === socket.OPEN) {
|
|
117
|
-
if (this.logDebug) this.emit('
|
|
111
|
+
if (!this.logDebug) this.emit('warn', `Socket send heartbeat`);
|
|
118
112
|
socket.ping();
|
|
119
113
|
}
|
|
120
114
|
}, 5000);
|
|
121
115
|
})
|
|
122
116
|
.on('pong', () => {
|
|
123
|
-
if (this.logDebug) this.emit('
|
|
117
|
+
if (!this.logDebug) this.emit('warn', `Socket received heartbeat`);
|
|
124
118
|
})
|
|
125
119
|
.on('message', (message) => {
|
|
126
120
|
const parsedMessage = JSON.parse(message);
|
|
127
121
|
const messageType = parsedMessage[0].messageType;
|
|
128
122
|
const messageData = parsedMessage[0].Data;
|
|
123
|
+
const unitId = messageData.id;
|
|
124
|
+
const unitType = messageData.unitType;
|
|
129
125
|
const stringifyMessage = JSON.stringify(parsedMessage, null, 2);
|
|
130
126
|
if (!this.logDebug) this.emit('warn', `Incoming message:', ${stringifyMessage}`);
|
|
131
127
|
|
|
132
|
-
switch (
|
|
133
|
-
case
|
|
134
|
-
const unitId = messageData.id;
|
|
135
|
-
const unitType = messageData.unitType;
|
|
128
|
+
switch (unitId) {
|
|
129
|
+
case this.deviceId:
|
|
136
130
|
const settings = messageData.settings[0];
|
|
137
131
|
const name = settings.name;
|
|
138
132
|
const value = settings.value;
|
|
139
|
-
|
|
133
|
+
deviceData.Device[name] = value;
|
|
140
134
|
break;
|
|
141
135
|
}
|
|
142
136
|
});
|
|
143
137
|
}
|
|
144
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
|
+
|
|
145
144
|
}
|
|
146
145
|
if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
|
|
147
146
|
|