homebridge-melcloud-control 3.1.3-beta.7 → 3.1.3-beta.9

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.
@@ -151,6 +151,11 @@
151
151
  const info = response.info ?? '';
152
152
  const status = response.status;
153
153
  const devices = response.data ?? [];
154
+ const devicesByType = {
155
+ ata: [],
156
+ atw: [],
157
+ erv: []
158
+ };
154
159
 
155
160
  //new found devices
156
161
  const newDevices = {
@@ -173,156 +178,140 @@
173
178
  //response status
174
179
  switch (status) {
175
180
  case 0:
176
- //compare arrays and update array in config
177
- const devicesOnMelCloud = devices;
178
- const devicesOnMelCloudId = new Set(devicesOnMelCloud.map(device => device.DeviceID));
179
181
 
180
- let devicesAtaInConfig = pluginConfig[0].accounts[this.deviceIndex].ataDevices ?? [];
181
- devicesAtaInConfig = devicesAtaInConfig.filter(device => devicesOnMelCloudId.has(device.id));
182
+ //get devices by type
183
+ for (const device of devices) {
184
+ const deviceType = device.Type;
185
+ const pusDeviceTypeAta = deviceType === 0 ? devicesByType.ata.push(device) : false;
186
+ const pusDeviceTypeAtw = deviceType === 1 ? devicesByType.atw.push(device) : false;
187
+ const pusDeviceTypeErv = deviceType === 3 ? devicesByType.erv.push(device) : false;
188
+ };
182
189
 
183
- let devicesAtwInConfig = pluginConfig[0].accounts[this.deviceIndex].atwDevices ?? [];
184
- devicesAtwInConfig = devicesAtwInConfig.filter(device => devicesOnMelCloudId.has(device.id));
190
+ //device ata
191
+ for (const device of devicesByType.ata) {
192
+ const deviceId = device.DeviceID;
193
+ const deviceName = device.DeviceName;
194
+ const devicePresets = device.Presets ?? [];
195
+
196
+ const deviceAta = {
197
+ id: deviceId,
198
+ type: deviceType,
199
+ typeString: "Air Conditioner",
200
+ name: deviceName,
201
+ displayMode: 1,
202
+ heatDryFanMode: 1,
203
+ coolDryFanMode: 1,
204
+ autoDryFanMode: 1,
205
+ temperatureSensor: false,
206
+ temperatureSensorOutdoor: false,
207
+ presets: [],
208
+ buttonsSensors: []
209
+ };
185
210
 
186
- let devicesErvInConfig = pluginConfig[0].accounts[this.deviceIndex].ervDevices ?? [];
187
- devicesErvInConfig = devicesErvInConfig.filter(device => devicesOnMelCloudId.has(device.id));
211
+ //presets
212
+ for (const preset of devicePresets) {
213
+ const presetId = preset.ID;
214
+ const presetName = preset.NumberDescription;
188
215
 
216
+ preset.id = presetId;
217
+ preset.name = presetName;
218
+ preset.displayType == 0;
219
+ preset.namePrefix = false;
220
+ newDevices.ataPresets.push(preset);
221
+ };
222
+ deviceAta.presets = newDevices.ataPresets;
223
+ textAtaPresets = `ATA Presets: ${newDevices.ataPresets.length}`
189
224
 
190
- // Add objects from devicesOnMelCloud to devicesInConfig that do not exist in devicesInConfig
191
- devicesOnMelCloud.forEach((device, index) => {
192
- const deviceType = device.Type;
225
+ newDevices.ata.push(deviceAta);
226
+ };
227
+ pluginConfig[0].accounts[this.deviceIndex].ataDevices = newDevices.ata;
228
+ textAta = `ATA: ${newDevices.ata.length}`
229
+
230
+ //device atw
231
+ for (const device of devicesByType.atw) {
232
+ const deviceId = device.DeviceID;
233
+ const deviceName = device.DeviceName;
234
+ const devicePresets = device.Presets ?? [];
235
+
236
+ const deviceAtw = {
237
+ id: deviceId,
238
+ type: deviceType,
239
+ typeString: "Heat Pump",
240
+ name: deviceName,
241
+ displayMode: 1,
242
+ temperatureSensor: false,
243
+ temperatureSensorFlow: false,
244
+ temperatureSensorReturn: false,
245
+ temperatureSensorFlowZone1: false,
246
+ temperatureSensorReturnZone1: false,
247
+ temperatureSensorFlowWaterTank: false,
248
+ temperatureSensorReturnWaterTank: false,
249
+ temperatureSensorFlowZone2: false,
250
+ temperatureSensorReturnZone2: false,
251
+ temperatureSensor: false,
252
+ temperatureSensorOutdoor: false,
253
+ presets: [],
254
+ buttonsSensors: []
255
+ };
193
256
 
194
- //device ata
195
- if (deviceType === 0) {
196
- const deviceId = device.DeviceID;
197
- const deviceName = device.DeviceName;
198
- const devicePresetsOnMelcloud = device.Presets ?? [];
199
-
200
- if (!devicesAtaInConfig.some(item => item.id === device.id)) {
201
- const deviceAta = {
202
- id: deviceId,
203
- type: deviceType,
204
- typeString: "Air Conditioner",
205
- name: deviceName,
206
- displayMode: 1,
207
- heatDryFanMode: 1,
208
- coolDryFanMode: 1,
209
- autoDryFanMode: 1,
210
- temperatureSensor: false,
211
- temperatureSensorOutdoor: false,
212
- presets: [],
213
- buttonsSensors: []
214
- };
215
-
216
- //presets
217
- for (const preset of devicePresetsOnMelcloud) {
218
- const presetId = preset.ID;
219
- const presetName = preset.NumberDescription;
220
-
221
- preset.id = presetId;
222
- preset.name = presetName;
223
- preset.displayType == 0;
224
- preset.namePrefix = false;
225
- newDevices.ataPresets.push(preset);
226
- };
227
- textAtaPresets = `ATA Presets: ${newDevices.ataPresets.length}`
228
-
229
- deviceAta.presets = newDevices.ataPresets;
230
- newDevices.ata.push(deviceAta);
231
- };
232
- pluginConfig[0].accounts[this.deviceIndex].ataDevices = newDevices.ata;
233
- textAta = `ATA: ${newDevices.ata.length}`
257
+ //presets
258
+ for (const preset of devicePresets) {
259
+ const presetId = preset.ID;
260
+ const presetName = preset.NumberDescription;
261
+
262
+ preset.id = presetId;
263
+ preset.name = presetName;
264
+ preset.displayType == 0;
265
+ preset.namePrefix = false;
266
+ newDevices.atwPresets.push(preset);
234
267
  };
268
+ textAtwPresets = `ATW Presets: ${newDevices.atwPresets.length}`
235
269
 
236
- //device atw
237
- if (deviceType === 1) {
238
- const deviceId = device.DeviceID;
239
- const deviceName = device.DeviceName;
240
- const devicePresetsOnMelcloud = device.Presets ?? [];
241
-
242
- if (!devicesAtwInConfig.some(item => item.id === device.id)) {
243
- const deviceAtw = {
244
- id: deviceId,
245
- type: deviceType,
246
- typeString: "Heat Pump",
247
- name: deviceName,
248
- displayMode: 1,
249
- temperatureSensor: false,
250
- temperatureSensorFlow: false,
251
- temperatureSensorReturn: false,
252
- temperatureSensorFlowZone1: false,
253
- temperatureSensorReturnZone1: false,
254
- temperatureSensorFlowWaterTank: false,
255
- temperatureSensorReturnWaterTank: false,
256
- temperatureSensorFlowZone2: false,
257
- temperatureSensorReturnZone2: false,
258
- temperatureSensor: false,
259
- temperatureSensorOutdoor: false,
260
- presets: [],
261
- buttonsSensors: []
262
- };
263
-
264
- //presets
265
- for (const preset of devicePresetsOnMelcloud) {
266
- const presetId = preset.ID;
267
- const presetName = preset.NumberDescription;
268
-
269
- preset.id = presetId;
270
- preset.name = presetName;
271
- preset.displayType == 0;
272
- preset.namePrefix = false;
273
- newDevices.atwPresets.push(preset);
274
- };
275
- textAtwPresets = `ATW Presets: ${newDevices.atwPresets.length}`
276
-
277
- deviceAtw.presets = deviceAtw.atwPresets;
278
- newDevices.ata.push(deviceAtw);
279
- };
280
- pluginConfig[0].accounts[this.deviceIndex].atwDevices = newDevices.atw;
281
- textAtw = `ATW: ${newDevices.atw.length}`
270
+ deviceAtw.presets = deviceAtw.atwPresets;
271
+ newDevices.ata.push(deviceAtw);
272
+ };
273
+ pluginConfig[0].accounts[this.deviceIndex].atwDevices = newDevices.atw;
274
+ textAtw = `ATW: ${newDevices.atw.length}`
275
+
276
+ //device erv
277
+ for (const device of devicesByType.erv) {
278
+ const deviceId = device.DeviceID;
279
+ const deviceName = device.DeviceName;
280
+ const devicePresets = device.Presets ?? [];
281
+
282
+ const deviceErv = {
283
+ id: deviceId,
284
+ type: deviceType,
285
+ typeString: "Energy Recovery Ventilation",
286
+ name: deviceName,
287
+ displayMode: 1,
288
+ temperatureSensor: false,
289
+ temperatureSensorOutdoor: false,
290
+ temperatureSensorSupply: false,
291
+ temperatureSensor: false,
292
+ temperatureSensorOutdoor: false,
293
+ presets: [],
294
+ buttonsSensors: []
282
295
  };
283
296
 
284
- //device erv
285
- if (deviceType === 3) {
286
- const deviceId = device.DeviceID;
287
- const deviceName = device.DeviceName;
288
- const devicePresetsOnMelcloud = device.Presets ?? [];
289
-
290
- if (!devicesAtwInConfig.some(item => item.id === device.id)) {
291
- const deviceErv = {
292
- id: deviceId,
293
- type: deviceType,
294
- typeString: "Energy Recovery Ventilation",
295
- name: deviceName,
296
- displayMode: 1,
297
- temperatureSensor: false,
298
- temperatureSensorOutdoor: false,
299
- temperatureSensorSupply: false,
300
- temperatureSensor: false,
301
- temperatureSensorOutdoor: false,
302
- presets: [],
303
- buttonsSensors: []
304
- };
305
-
306
- //presets
307
- for (const preset of devicePresetsOnMelcloud) {
308
- const presetId = preset.ID;
309
- const presetName = preset.NumberDescription;
310
-
311
- preset.id = presetId;
312
- preset.name = presetName;
313
- preset.displayType == 0;
314
- preset.namePrefix = false;
315
- newDevices.atwPresets.push(preset);
316
- };
317
- textErvPresets = `ERV Presets: ${newDevices.ErvPresets.length}`
318
-
319
- deviceErv.presets = deviceErv.ervPresets;
320
- newDevices.erv.push(deviceErv);
321
- };
322
- pluginConfig[0].accounts[this.deviceIndex].ervDevices = newDevices.erv;
323
- textErv = `ERV: ${newDevices.erv.length}`
297
+ //presets
298
+ for (const preset of devicePresets) {
299
+ const presetId = preset.ID;
300
+ const presetName = preset.NumberDescription;
301
+
302
+ preset.id = presetId;
303
+ preset.name = presetName;
304
+ preset.displayType == 0;
305
+ preset.namePrefix = false;
306
+ newDevices.atwPresets.push(preset);
324
307
  };
325
- });
308
+ textErvPresets = `ERV Presets: ${newDevices.ErvPresets.length}`
309
+
310
+ deviceErv.presets = deviceErv.ervPresets;
311
+ newDevices.erv.push(deviceErv);
312
+ };
313
+ pluginConfig[0].accounts[this.deviceIndex].ervDevices = newDevices.erv;
314
+ textErv = `ERV: ${newDevices.erv.length}`
326
315
 
327
316
  const newDevicesCount = newDevices.ata.length + newDevices.atw.length + newDevices.erv.length ?? 0;
328
317
  const newPresetsCount = newDevices.ataPresets.length + newDevices.atwPresets.length + newDevices.ervPresets.length ?? 0;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "MELCloud Control",
3
3
  "name": "homebridge-melcloud-control",
4
- "version": "3.1.3-beta.7",
4
+ "version": "3.1.3-beta.9",
5
5
  "description": "Homebridge plugin to control Mitsubishi Air Conditioner, Heat Pump and Energy Recovery Ventilation.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",