homebridge-melcloud-control 4.0.0-beta.43 → 4.0.0-beta.430
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/README.md +12 -11
- package/config.schema.json +272 -314
- package/homebridge-ui/public/index.html +104 -64
- package/homebridge-ui/server.js +5 -9
- package/index.js +38 -20
- package/package.json +6 -3
- package/src/constants.js +15 -22
- package/src/deviceata.js +199 -188
- package/src/deviceatw.js +7 -5
- package/src/deviceerv.js +28 -26
- package/src/functions.js +124 -3
- package/src/melcloud.js +312 -131
- package/src/melcloudata.js +139 -308
- package/src/melcloudatw.js +3 -228
- package/src/melclouderv.js +5 -162
- package/src/melcloudhometoken.js +231 -0
- package/src/restful.js +1 -1
package/src/melcloudatw.js
CHANGED
|
@@ -6,12 +6,13 @@ import Functions from './functions.js';
|
|
|
6
6
|
import { ApiUrls } from './constants.js';
|
|
7
7
|
|
|
8
8
|
class MelCloudAtw extends EventEmitter {
|
|
9
|
-
constructor(device, contextKey, devicesFile) {
|
|
9
|
+
constructor(device, contextKey, devicesFile, defaultTempsFile) {
|
|
10
10
|
super();
|
|
11
11
|
this.deviceId = device.id;
|
|
12
12
|
this.logWarn = device.log?.warn;
|
|
13
13
|
this.logDebug = device.log?.debug;
|
|
14
14
|
this.devicesFile = devicesFile;
|
|
15
|
+
this.defaultTempsFile = defaultTempsFile;
|
|
15
16
|
this.functions = new Functions();
|
|
16
17
|
|
|
17
18
|
//set default values
|
|
@@ -61,8 +62,7 @@ class MelCloudAtw extends EventEmitter {
|
|
|
61
62
|
async checkState() {
|
|
62
63
|
try {
|
|
63
64
|
//read device info from file
|
|
64
|
-
const
|
|
65
|
-
const devicesData = JSON.parse(data);
|
|
65
|
+
const devicesData = await this.functions.readData(this.devicesFile, true);
|
|
66
66
|
|
|
67
67
|
if (!Array.isArray(devicesData)) {
|
|
68
68
|
if (this.logWarn) this.emit('warn', `Device data not found`);
|
|
@@ -72,110 +72,17 @@ class MelCloudAtw extends EventEmitter {
|
|
|
72
72
|
if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
|
|
73
73
|
|
|
74
74
|
//device info
|
|
75
|
-
const deviceId = deviceData.DeviceID;
|
|
76
|
-
const deviceName = deviceData.DeviceName;
|
|
77
|
-
const buildingId = deviceData.BuildingID;
|
|
78
|
-
const buildingName = deviceData.BuildingName;
|
|
79
|
-
const floorId = deviceData.FloorID;
|
|
80
|
-
const floorName = deviceData.FloorName;
|
|
81
|
-
const areaId = deviceData.AreaID;
|
|
82
|
-
const areaName = deviceData.AreaName;
|
|
83
|
-
const imageId = deviceData.ImageID;
|
|
84
|
-
const installationDate = deviceData.InstallationDate;
|
|
85
|
-
const lastServiceDate = deviceData.LastServiceDate;
|
|
86
|
-
|
|
87
|
-
//presets
|
|
88
|
-
const presets = deviceData.Presets ?? [];
|
|
89
|
-
|
|
90
|
-
//device info
|
|
91
|
-
const ownerId = deviceData.OwnerID;
|
|
92
|
-
const ownerName = deviceData.OwnerName;
|
|
93
|
-
const ownerEmail = deviceData.OwnerEmail;
|
|
94
|
-
const accessLevel = deviceData.AccessLevel;
|
|
95
|
-
const directAccess = deviceData.DirectAccess;
|
|
96
|
-
const endDate = deviceData.EndDate;
|
|
97
|
-
const zone1Name = deviceData.Zone1Name;
|
|
98
|
-
const zone2Name = deviceData.Zone2Name;
|
|
99
|
-
const minTemperature = deviceData.MinTemperature;
|
|
100
|
-
const maxTemperature = deviceData.MaxTemperature;
|
|
101
|
-
const hideVaneControls = deviceData.HideVaneControls;
|
|
102
|
-
const hideDryModeControl = deviceData.HideDryModeControl;
|
|
103
|
-
const hideRoomTemperature = deviceData.HideRoomTemperature;
|
|
104
|
-
const hideSupplyTemperature = deviceData.HideSupplyTemperature;
|
|
105
|
-
const hideOutdoorTemperature = deviceData.HideOutdoorTemperature;
|
|
106
|
-
const buildingCountry = deviceData.BuildingCountry;
|
|
107
|
-
const ownerCountry = deviceData.OwnerCountry;
|
|
108
|
-
const adaptorType = deviceData.AdaptorType;
|
|
109
|
-
const linkedDevice = deviceData.LinkedDevice;
|
|
110
|
-
const type = deviceData.Type;
|
|
111
|
-
const macAddress = deviceData.MacAddress;
|
|
112
75
|
const serialNumber = deviceData.SerialNumber ?? 'Undefined';
|
|
113
76
|
|
|
114
77
|
//device
|
|
115
78
|
const device = deviceData.Device ?? {};
|
|
116
|
-
const listHistory24Formatters = Array.isArray(device.ListHistory24Formatters) ? device.ListHistory24Formatters : [];
|
|
117
|
-
const listHistory24FormattersCount = listHistory24Formatters.length;
|
|
118
|
-
const pCycleActual = device.PCycleActual;
|
|
119
|
-
const errorMessages = device.ErrorMessages;
|
|
120
|
-
const deviceType = device.DeviceType;
|
|
121
|
-
const canHeat = device.CanHeat;
|
|
122
|
-
const canCool = device.CanCool;
|
|
123
79
|
const hasHotWaterTank = device.HasHotWaterTank ?? false;
|
|
124
|
-
const fTCVersion = device.FTCVersion;
|
|
125
|
-
const fTCRevision = device.FTCRevision;
|
|
126
|
-
const lastFTCVersion = device.LastFTCVersion;
|
|
127
|
-
const lastFTCRevision = device.LastFTCRevision;
|
|
128
|
-
const fTCModel = device.FTCModel;
|
|
129
|
-
const refridgerentAddress = device.RefridgerentAddress; // TODO: Typo in MELCloud service?
|
|
130
|
-
const dipSwitch1 = device.DipSwitch1;
|
|
131
|
-
const dipSwitch2 = device.DipSwitch2;
|
|
132
|
-
const dipSwitch3 = device.DipSwitch3;
|
|
133
|
-
const minTempHeat = device.DipSwitch4;
|
|
134
|
-
const dipSwitch5 = device.DipSwitch5;
|
|
135
|
-
const dipSwitch6 = device.DipSwitch6;
|
|
136
|
-
const hasThermostatZone1 = device.HasThermostatZone1;
|
|
137
|
-
const hasThermostatZone2 = device.HasThermostatZone2;
|
|
138
80
|
const temperatureIncrement = device.TemperatureIncrement;
|
|
139
|
-
const defrostMode = device.DefrostMode;
|
|
140
|
-
const heatPumpFrequency = device.HeatPumpFrequency;
|
|
141
|
-
const maxSetTemperature = device.MaxSetTemperature;
|
|
142
|
-
const minSetTemperature = device.MinSetTemperature;
|
|
143
81
|
const roomTemperatureZone1 = device.RoomTemperatureZone1;
|
|
144
82
|
const roomTemperatureZone2 = device.RoomTemperatureZone2;
|
|
145
83
|
const outdoorTemperature = device.OutdoorTemperature;
|
|
146
|
-
const flowTemperature = device.FlowTemperature;
|
|
147
|
-
const flowTemperatureZone1 = device.FlowTemperatureZone1;
|
|
148
|
-
const flowTemperatureZone2 = device.FlowTemperatureZone2;
|
|
149
|
-
const flowTemperatureBoiler = device.FlowTemperatureBoiler;
|
|
150
|
-
const returnTemperature = device.ReturnTemperature;
|
|
151
|
-
const returnTemperatureZone1 = device.ReturnTemperatureZone1;
|
|
152
|
-
const returnTemperatureZone2 = device.ReturnTemperatureZone2;
|
|
153
|
-
const returnTemperatureBoiler = device.ReturnTemperatureBoiler;
|
|
154
|
-
const boilerStatus = device.BoilerStatus;
|
|
155
|
-
const boosterHeater1Status = device.BoosterHeater1Status;
|
|
156
|
-
const boosterHeater2Status = device.BoosterHeater2Status;
|
|
157
|
-
const boosterHeater2PlusStatus = device.BoosterHeater2PlusStatus;
|
|
158
|
-
const immersionHeaterStatus = device.ImmersionHeaterStatus;
|
|
159
|
-
const waterPump1Status = device.WaterPump1Status;
|
|
160
|
-
const waterPump2Status = device.WaterPump2Status;
|
|
161
|
-
const waterPump3Status = device.WaterPump3Status;
|
|
162
|
-
const valveStatus3Way = device.ValveStatus3Way;
|
|
163
|
-
const valveStatus2Way = device.ValveStatus2Way;
|
|
164
|
-
const waterPump4Status = device.WaterPump4Status;
|
|
165
|
-
const valveStatus2Way2a = device.ValveStatus2Way2a;
|
|
166
|
-
const valveStatus2Way2b = device.ValveStatus2Way2b;
|
|
167
84
|
const tankWaterTemperature = device.TankWaterTemperature;
|
|
168
85
|
const unitStatus = device.UnitStatus;
|
|
169
|
-
const heatingFunctionEnabled = device.HeatingFunctionEnabled;
|
|
170
|
-
const serverTimerEnabled = device.ServerTimerEnabled;
|
|
171
|
-
const thermostatStatusZone1 = device.ThermostatStatusZone1;
|
|
172
|
-
const thermostatStatusZone2 = device.ThermostatStatusZone2;
|
|
173
|
-
const thermostatTypeZone1 = device.ThermostatTypeZone1;
|
|
174
|
-
const thermostatTypeZone2 = device.ThermostatTypeZone2;
|
|
175
|
-
const mixingTankWaterTemperature = device.MixingTankWaterTemperature;
|
|
176
|
-
const condensingTemperature = device.CondensingTemperature;
|
|
177
|
-
const effectiveFlags = device.EffectiveFlags;
|
|
178
|
-
const lastEffectiveFlags = device.LastEffectiveFlags;
|
|
179
86
|
const power = device.Power;
|
|
180
87
|
const ecoHotWater = device.EcoHotWater;
|
|
181
88
|
const operationMode = device.OperationMode;
|
|
@@ -184,126 +91,18 @@ class MelCloudAtw extends EventEmitter {
|
|
|
184
91
|
const setTemperatureZone1 = device.SetTemperatureZone1;
|
|
185
92
|
const setTemperatureZone2 = device.SetTemperatureZone2;
|
|
186
93
|
const setTankWaterTemperature = device.SetTankWaterTemperature;
|
|
187
|
-
const targetHCTemperatureZone1 = device.TargetHCTemperatureZone1;
|
|
188
|
-
const targetHCTemperatureZone2 = device.TargetHCTemperatureZone2;
|
|
189
94
|
const forcedHotWaterMode = device.ForcedHotWaterMode;
|
|
190
95
|
const holidayMode = device.HolidayMode;
|
|
191
96
|
const prohibitHotWater = device.ProhibitHotWater;
|
|
192
97
|
const prohibitHeatingZone1 = device.ProhibitHeatingZone1;
|
|
193
98
|
const prohibitHeatingZone2 = device.ProhibitHeatingZone2;
|
|
194
|
-
const prohibitCoolingZone1 = device.ProhibitCoolingZone1;
|
|
195
|
-
const prohibitCoolingZone2 = device.ProhibitCoolingZone2;
|
|
196
|
-
const serverTimerDesired = device.ServerTimerDesired;
|
|
197
|
-
const secondaryZoneHeatCurve = device.SecondaryZoneHeatCurve;
|
|
198
99
|
const setHeatFlowTemperatureZone1 = device.SetHeatFlowTemperatureZone1;
|
|
199
100
|
const setHeatFlowTemperatureZone2 = device.SetHeatFlowTemperatureZone2;
|
|
200
101
|
const setCoolFlowTemperatureZone1 = device.SetCoolFlowTemperatureZone1;
|
|
201
102
|
const setCoolFlowTemperatureZone2 = device.SetCoolFlowTemperatureZone2;
|
|
202
|
-
const thermostatTemperatureZone1 = device.ThermostatTemperatureZone1;
|
|
203
|
-
const thermostatTemperatureZone2 = device.ThermostatTemperatureZone2;
|
|
204
|
-
const dECCReport = device.DECCReport;
|
|
205
|
-
const cSVReport1min = device.CSVReport1min;
|
|
206
|
-
const zone2Master = device.Zone2Master;
|
|
207
|
-
const dailyEnergyConsumedDate = device.DailyEnergyConsumedDate;
|
|
208
|
-
const dailyEnergyProducedDate = device.DailyEnergyProducedDate;
|
|
209
|
-
const currentEnergyConsumed = device.CurrentEnergyConsumed;
|
|
210
|
-
const currentEnergyProduced = device.CurrentEnergyProduced;
|
|
211
|
-
const currentEnergyMode = device.CurrentEnergyMode;
|
|
212
|
-
const heatingEnergyConsumedRate1 = device.HeatingEnergyConsumedRate1;
|
|
213
|
-
const heatingEnergyConsumedRate2 = device.HeatingEnergyConsumedRate2
|
|
214
|
-
const coolingEnergyConsumedRate1 = device.CoolingEnergyConsumedRate1;
|
|
215
|
-
const coolingEnergyConsumedRate2 = device.CoolingEnergyConsumedRate2;
|
|
216
|
-
const hotWaterEnergyConsumedRate1 = device.HotWaterEnergyConsumedRate1;
|
|
217
|
-
const hotWaterEnergyConsumedRate2 = device.HotWaterEnergyConsumedRate2;
|
|
218
|
-
const heatingEnergyProducedRate1 = device.HeatingEnergyProducedRate1;
|
|
219
|
-
const heatingEnergyProducedRate2 = device.HeatingEnergyProducedRate2;
|
|
220
|
-
const coolingEnergyProducedRate1 = device.CoolingEnergyProducedRate1;
|
|
221
|
-
const coolingEnergyProducedRate2 = device.CoolingEnergyProducedRate2;
|
|
222
|
-
const hotWaterEnergyProducedRate1 = device.HotWaterEnergyProducedRate1;
|
|
223
|
-
const hotWaterEnergyProducedRate2 = device.HotWaterEnergyProducedRate2;
|
|
224
|
-
const errorCode2Digit = device.ErrorCode2Digit;
|
|
225
|
-
const sendSpecialFunctions = device.SendSpecialFunctions;
|
|
226
|
-
const requestSpecialFunctions = device.RequestSpecialFunctions;
|
|
227
|
-
const specialFunctionsState = device.SpecialFunctionsState;
|
|
228
|
-
const pendingSendSpecialFunctions = device.PendingSendSpecialFunctions;
|
|
229
|
-
const pendingRequestSpecialFunctions = device.PendingRequestSpecialFunctions;
|
|
230
|
-
const hasSimplifiedZone2 = device.HasSimplifiedZone2;
|
|
231
|
-
const canSetTankTemperature = device.CanSetTankTemperature;
|
|
232
|
-
const canSetEcoHotWater = device.CanSetEcoHotWater;
|
|
233
|
-
const hasEnergyConsumedMeter = device.HasEnergyConsumedMeter;
|
|
234
|
-
const hasEnergyProducedMeter = device.HasEnergyProducedMeter;
|
|
235
|
-
const canMeasureEnergyProduced = device.CanMeasureEnergyProduced;
|
|
236
|
-
const canMeasureEnergyConsumed = device.CanMeasureEnergyConsumed;
|
|
237
|
-
const zone1InRoomMode = device.Zone1InRoomMode;
|
|
238
|
-
const zone2InRoomMode = device.Zone2InRoomMode;
|
|
239
|
-
const zone1InHeatMode = device.Zone1InHeatMode;
|
|
240
|
-
const zone2InHeatMode = device.Zone2InHeatMode;
|
|
241
|
-
const zone1InCoolMode = device.Zone1InCoolMode;
|
|
242
|
-
const zone2InCoolMode = device.Zone2InCoolMode;
|
|
243
|
-
const allowDualRoomTemperature = device.AllowDualRoomTemperature;
|
|
244
|
-
const isGeodan = device.IsGeodan;
|
|
245
|
-
const hasEcoCuteSettings = device.HasEcoCuteSettings;
|
|
246
|
-
const hasFTC45Settings = device.HasFTC45Settings;
|
|
247
|
-
const hasFTC6Settings = device.HasFTC6Settings;
|
|
248
|
-
const canEstimateEnergyUsage = device.CanEstimateEnergyUsage;
|
|
249
|
-
const canUseRoomTemperatureCooling = device.CanUseRoomTemperatureCooling;
|
|
250
|
-
const isFtcModelSupported = device.IsFtcModelSupported;
|
|
251
|
-
const maxTankTemperature = device.MaxTankTemperature;
|
|
252
103
|
const idleZone1 = device.IdleZone1 ?? false;
|
|
253
104
|
const idleZone2 = device.IdleZone2 ?? false;
|
|
254
|
-
const minPcycle = device.MinPcycle;
|
|
255
|
-
const maxPcycle = device.MaxPcycle;
|
|
256
|
-
const maxOutdoorUnits = device.MaxOutdoorUnits;
|
|
257
|
-
const maxIndoorUnits = device.MaxIndoorUnits;
|
|
258
|
-
const maxTemperatureControlUnits = device.MaxTemperatureControlUnits;
|
|
259
|
-
//const deviceId = device.DeviceID;
|
|
260
|
-
//const macAddress = device.MacAddress;
|
|
261
|
-
//const serialNumber = device.SerialNumber;
|
|
262
|
-
const timeZoneId = device.TimeZoneID;
|
|
263
|
-
const diagnosticMode = device.DiagnosticMode;
|
|
264
|
-
const diagnosticEndDate = device.DiagnosticEndDate;
|
|
265
|
-
const expectedCommand = device.ExpectedCommand;
|
|
266
|
-
const owner = device.Owner;
|
|
267
|
-
const detectedCountry = device.DetectedCountry;
|
|
268
|
-
//const adaptorType = device.AdaptorType;
|
|
269
|
-
const firmwareDeployment = device.FirmwareDeployment;
|
|
270
|
-
const firmwareUpdateAborted = device.FirmwareUpdateAborted;
|
|
271
|
-
//const linkedDevice = device.LinkedDevice;
|
|
272
|
-
const wifiSignalStrength = device.WifiSignalStrength;
|
|
273
|
-
const wifiAdapterStatus = device.WifiAdapterStatus;
|
|
274
|
-
const position = device.Position;
|
|
275
|
-
const pCycle = device.PCycle;
|
|
276
|
-
const recordNumMax = device.RecordNumMax;
|
|
277
|
-
const lastTimeStamp = device.LastTimeStamp;
|
|
278
|
-
const errorCode = device.ErrorCode;
|
|
279
|
-
const hasError = device.HasError;
|
|
280
|
-
const lastReset = device.LastReset;
|
|
281
|
-
const flashWrites = device.FlashWrites;
|
|
282
|
-
const scene = device.Scene;
|
|
283
|
-
const sSLExpirationDate = device.SSLExpirationDate;
|
|
284
|
-
const sPTimeout = device.SPTimeout;
|
|
285
|
-
const passcode = device.Passcode;
|
|
286
|
-
const serverCommunicationDisabled = device.ServerCommunicationDisabled;
|
|
287
|
-
const consecutiveUploadErrors = device.ConsecutiveUploadErrors;
|
|
288
|
-
const doNotRespondAfter = device.DoNotRespondAfter;
|
|
289
|
-
const ownerRoleAccessLevel = device.OwnerRoleAccessLevel;
|
|
290
|
-
//const ownerCountry = device.OwnerCountry;
|
|
291
|
-
const hideEnergyReport = device.HideEnergyReport;
|
|
292
|
-
const exceptionHash = device.ExceptionHash;
|
|
293
|
-
const exceptionDate = device.ExceptionDate;
|
|
294
|
-
const exceptionCount = device.ExceptionCount;
|
|
295
|
-
const rate1StartTime = device.Rate1StartTime;
|
|
296
|
-
const rate2StartTime = device.Rate2StartTime;
|
|
297
|
-
const protocolVersion = device.ProtocolVersion;
|
|
298
|
-
const unitVersion = device.UnitVersion;
|
|
299
105
|
const firmwareAppVersion = device.FirmwareAppVersion?.toString() ?? 'Undefined';
|
|
300
|
-
const firmwareWebVersion = device.FirmwareWebVersion;
|
|
301
|
-
const firmwareWlanVersion = device.FirmwareWlanVersion;
|
|
302
|
-
const effectivePCycle = device.EffectivePCycle;
|
|
303
|
-
const mqttFlags = device.MqttFlags;
|
|
304
|
-
const hasErrorMessages = device.HasErrorMessages;
|
|
305
|
-
const offline = device.Offline ?? false;
|
|
306
|
-
const supportsHourlyEnergyReport = device.SupportsHourlyEnergyReport;
|
|
307
106
|
const hasZone2 = device.HasZone2 ?? false;
|
|
308
107
|
|
|
309
108
|
//units
|
|
@@ -357,30 +156,6 @@ class MelCloudAtw extends EventEmitter {
|
|
|
357
156
|
}
|
|
358
157
|
}
|
|
359
158
|
|
|
360
|
-
//diagnostic
|
|
361
|
-
//const diagnosticMode = deviceData.DiagnosticMode;
|
|
362
|
-
//const diagnosticEndDate = deviceData.DiagnosticEndDate;
|
|
363
|
-
const location = deviceData.Location;
|
|
364
|
-
//const detectedCountry = deviceData.DetectedCountry;
|
|
365
|
-
const registrations = deviceData.Registrations;
|
|
366
|
-
const localIPAddress = deviceData.LocalIPAddress;
|
|
367
|
-
const timeZone = deviceData.TimeZone;
|
|
368
|
-
const registReason = deviceData.RegistReason;
|
|
369
|
-
//const expectedCommand = deviceData.ExpectedCommand;
|
|
370
|
-
const registRetry = deviceData.RegistRetry;
|
|
371
|
-
const dateCreated = deviceData.DateCreated;
|
|
372
|
-
//const firmwareDeployment = deviceData.FirmwareDeployment;
|
|
373
|
-
//const firmwareUpdateAborted = deviceData.FirmwareUpdateAborted;
|
|
374
|
-
|
|
375
|
-
//permissions
|
|
376
|
-
const permissionCanSetForcedHotWater = deviceData.Permissions.CanSetForcedHotWater;
|
|
377
|
-
const permissionCanSetOperationMode = deviceData.Permissions.CanSetOperationMode;
|
|
378
|
-
const permissionCanSetPower = deviceData.Permissions.CanSetPower;
|
|
379
|
-
const permissionCanSetTankWaterTemperature = deviceData.Permissions.CanSetTankWaterTemperature;
|
|
380
|
-
const permissionCanSetEcoHotWater = deviceData.Permissions.CanSetEcoHotWater;
|
|
381
|
-
const permissionCanSetFlowTemperature = deviceData.Permissions.CanSetFlowTemperature;
|
|
382
|
-
const permissionCanSetTemperatureIncrementOverride = deviceData.Permissions.CanSetTemperatureIncrementOverride;
|
|
383
|
-
|
|
384
159
|
//display info if units are not configured in MELCloud service
|
|
385
160
|
if (unitsCount === 0) {
|
|
386
161
|
this.emit('message', `Units are not configured in MELCloud service`);
|
package/src/melclouderv.js
CHANGED
|
@@ -6,12 +6,13 @@ import Functions from './functions.js';
|
|
|
6
6
|
import { ApiUrls } from './constants.js';
|
|
7
7
|
|
|
8
8
|
class MelCloudErv extends EventEmitter {
|
|
9
|
-
constructor(device, contextKey, devicesFile) {
|
|
9
|
+
constructor(device, contextKey, devicesFile, defaultTempsFile) {
|
|
10
10
|
super();
|
|
11
11
|
this.deviceId = device.id;
|
|
12
12
|
this.logWarn = device.log?.warn;
|
|
13
13
|
this.logDebug = device.log?.debug;
|
|
14
14
|
this.devicesFile = devicesFile;
|
|
15
|
+
this.defaultTempsFile = defaultTempsFile;
|
|
15
16
|
this.functions = new Functions();
|
|
16
17
|
|
|
17
18
|
//set default values
|
|
@@ -61,8 +62,7 @@ class MelCloudErv extends EventEmitter {
|
|
|
61
62
|
async checkState() {
|
|
62
63
|
try {
|
|
63
64
|
//read device info from file
|
|
64
|
-
const
|
|
65
|
-
const devicesData = JSON.parse(data);
|
|
65
|
+
const devicesData = await this.functions.readData(this.devicesFile, true);
|
|
66
66
|
|
|
67
67
|
if (!Array.isArray(devicesData)) {
|
|
68
68
|
if (this.logWarn) this.emit('warn', `Device data not found`);
|
|
@@ -71,86 +71,17 @@ class MelCloudErv extends EventEmitter {
|
|
|
71
71
|
const deviceData = devicesData.find(device => device.DeviceID === this.deviceId);
|
|
72
72
|
if (this.logDebug) this.emit('debug', `Device Data: ${JSON.stringify(deviceData, null, 2)}`);
|
|
73
73
|
|
|
74
|
-
//deviceData
|
|
75
|
-
const deviceId = deviceData.DeviceID;
|
|
76
|
-
const deviceName = deviceData.DeviceName;
|
|
77
|
-
const buildingId = deviceData.BuildingID;
|
|
78
|
-
const buildingName = deviceData.BuildingName;
|
|
79
|
-
const floorId = deviceData.FloorID;
|
|
80
|
-
const floorName = deviceData.FloorName;
|
|
81
|
-
const areaId = deviceData.AreaID;
|
|
82
|
-
const areaName = deviceData.AreaName;
|
|
83
|
-
const imageId = deviceData.ImageID;
|
|
84
|
-
const installationDate = deviceData.InstallationDate;
|
|
85
|
-
const lastServiceDate = deviceData.LastServiceDate;
|
|
86
|
-
|
|
87
74
|
//presets
|
|
88
|
-
const presets = deviceData.Presets ?? [];
|
|
89
|
-
|
|
90
|
-
const ownerId = deviceData.OwnerID;
|
|
91
|
-
const ownerName = deviceData.OwnerName;
|
|
92
|
-
const ownerEmail = deviceData.OwnerEmail;
|
|
93
|
-
const accessLevel = deviceData.AccessLevel;
|
|
94
|
-
const directAccess = deviceData.DirectAccess;
|
|
95
|
-
const endDate = deviceData.EndDate;
|
|
96
|
-
const zone1Name = deviceData.Zone1Name;
|
|
97
|
-
const zone2Name = deviceData.Zone2Name;
|
|
98
|
-
const minTemperature = deviceData.MinTemperature;
|
|
99
|
-
const maxTemperature = deviceData.MaxTemperature;
|
|
100
|
-
const hideVaneControls = deviceData.HideVaneControls;
|
|
101
|
-
const hideDryModeControl = deviceData.HideDryModeControl;
|
|
102
75
|
const hideRoomTemperature = deviceData.HideRoomTemperature ?? false;
|
|
103
76
|
const hideSupplyTemperature = deviceData.HideSupplyTemperature ?? false;
|
|
104
77
|
const hideOutdoorTemperature = deviceData.HideOutdoorTemperature ?? false;
|
|
105
|
-
const buildingCountry = deviceData.BuildingCountry;
|
|
106
|
-
const ownerCountry = deviceData.OwnerCountry;
|
|
107
|
-
const adaptorType = deviceData.AdaptorType;
|
|
108
|
-
const linkedDevice = deviceData.LinkedDevice;
|
|
109
|
-
const type = deviceData.Type;
|
|
110
|
-
const macAddress = deviceData.MacAddress;
|
|
111
78
|
const serialNumber = deviceData.SerialNumber ?? 'Undefined';
|
|
112
79
|
|
|
113
80
|
//device
|
|
114
81
|
const device = deviceData.Device ?? {};
|
|
115
|
-
const pCycleActual = device.PCycleActual;
|
|
116
|
-
const errorMessages = device.ErrorMessages;
|
|
117
|
-
const deviceType = device.DeviceType;
|
|
118
|
-
const ervFlags = device.ErvFlags;
|
|
119
|
-
const ervModel = device.ErvModel;
|
|
120
|
-
const labelControls = device.LabelControls;
|
|
121
|
-
const devicePowerDisabled = device.DevicePowerDisabled;
|
|
122
|
-
const silentMode = device.SilentMode;
|
|
123
|
-
const deviceHolidayMode = device.DeviceHolidayMode;
|
|
124
|
-
const externalControl = device.ExternalControl;
|
|
125
|
-
const bypassVentilationSkipped = device.BypassVentilationSkipped;
|
|
126
|
-
const autoVentilationSkipped = device.AutoVentilationSkipped;
|
|
127
|
-
const fanSpeedSkipped = device.FanSpeedSkipped;
|
|
128
|
-
const fanSpeedRestricted = device.FanSpeedRestricted;
|
|
129
|
-
const hasTemperatureControlUnit = device.HasTemperatureControlUnit;
|
|
130
|
-
const hasCoolOperationMode = device.HasCoolOperationMode;
|
|
131
|
-
const hasHeatOperationMode = device.HasHeatOperationMode;
|
|
132
|
-
const hasAutoOperationMode = device.HasAutoOperationMode;
|
|
133
|
-
const hasBypassVentilationMode = device.HasBypassVentilationMode ?? false;
|
|
134
|
-
const hasAutoVentilationMode = device.HasAutoVentilationMode ?? false;
|
|
135
|
-
const hasRoomTemperature = device.HasRoomTemperature ?? false;
|
|
136
|
-
const hasSupplyTemperature = device.HasSupplyTemperature ?? false;
|
|
137
|
-
const hasOutdoorTemperature = device.HasOutdoorTemperature ?? false;
|
|
138
|
-
const hasCO2Sensor = device.HasCO2Sensor;
|
|
139
|
-
const hasPM25Sensor = device.HasPM25Sensor;
|
|
140
82
|
const pM25SensorStatus = device.PM25SensorStatus;
|
|
141
83
|
const pM25Level = device.PM25Level;
|
|
142
|
-
const numberOfFanSpeeds = device.NumberOfFanSpeeds;
|
|
143
|
-
const hasHalfDegreeIncrements = device.HasHalfDegreeIncrements;
|
|
144
|
-
const temperatureIncrementOverride = device.TemperatureIncrementOverride;
|
|
145
84
|
const temperatureIncrement = device.TemperatureIncrement;
|
|
146
|
-
const minTempCoolDry = device.MinTempCoolDry;
|
|
147
|
-
const maxTempCoolDry = device.MaxTempCoolDry;
|
|
148
|
-
const minTempHeat = device.MinTempHeat;
|
|
149
|
-
const maxTempHeat = device.MaxTempHeat;
|
|
150
|
-
const minTempAutomatic = device.MinTempAutomatic;
|
|
151
|
-
const maxTempAutomatic = device.MaxTempAutomatic;
|
|
152
|
-
const setSupplyTemperatureMode = device.SetSupplyTemperatureMode;
|
|
153
|
-
const hasAutomaticFanSpeed = device.HasAutomaticFanSpeed ?? false;
|
|
154
85
|
const coreMaintenanceRequired = device.CoreMaintenanceRequired ?? false;
|
|
155
86
|
const filterMaintenanceRequired = device.FilterMaintenanceRequired ?? false;
|
|
156
87
|
const power = device.Power ?? false;
|
|
@@ -159,80 +90,15 @@ class MelCloudErv extends EventEmitter {
|
|
|
159
90
|
const outdoorTemperature = device.OutdoorTemperature;
|
|
160
91
|
const roomCO2Level = device.RoomCO2Level;
|
|
161
92
|
const nightPurgeMode = device.NightPurgeMode ?? false;
|
|
162
|
-
const thermostatOn = device.ThermostatOn;
|
|
163
93
|
const setTemperature = device.SetTemperature;
|
|
164
94
|
const actualSupplyFanSpeed = device.ActualSupplyFanSpeed;
|
|
165
95
|
const actualExhaustFanSpeed = device.ActualExhaustFanSpeed;
|
|
166
96
|
const setFanSpeed = device.SetFanSpeed;
|
|
167
|
-
const automaticFanSpeed = device.AutomaticFanSpeed;
|
|
168
97
|
const operationMode = device.OperationMode; //0, Heat, 2, Cool, 4, 5, 6, Fan, Auto
|
|
169
|
-
const actualOperationMode = device.ActualOperationMode;
|
|
170
98
|
const ventilationMode = device.VentilationMode; //Lossnay, Bypass, Auto
|
|
171
|
-
const actualVentilationMode = device.ActualVentilationMode; //Lossnay, Bypass
|
|
172
|
-
const effectiveFlags = device.EffectiveFlags;
|
|
173
|
-
const lastEffectiveFlags = device.LastEffectiveFlags;
|
|
174
99
|
const defaultCoolingSetTemperature = device.DefaultCoolingSetTemperature ?? 23;
|
|
175
100
|
const defaultHeatingSetTemperature = device.DefaultHeatingSetTemperature ?? 21;
|
|
176
|
-
const hasEnergyConsumedMeter = device.HasEnergyConsumedMeter;
|
|
177
|
-
const currentEnergyConsumed = device.CurrentEnergyConsumed
|
|
178
|
-
const currentEnergyAssignment = device.CurrentEnergyAssignment;
|
|
179
|
-
const coolingDisabled = device.CoolingDisabled
|
|
180
|
-
const maxOutdoorUnits = device.MaxOutdoorUnits;
|
|
181
|
-
const maxIndoorUnits = device.MaxIndoorUnits;
|
|
182
|
-
const maxTemperatureControlUnits = device.MaxTemperatureControlUnits;
|
|
183
|
-
const modelCode = device.ModelCode;
|
|
184
|
-
//const deviceId = device.DeviceID;
|
|
185
|
-
//const macAddress = device.MacAddress;
|
|
186
|
-
//const serialNumber = device.SerialNumber;
|
|
187
|
-
const timeZoneId = device.TimeZoneID;
|
|
188
|
-
const diagnosticMode = device.DiagnosticMode;
|
|
189
|
-
const diagnosticEndDate = device.DiagnosticEndDate;
|
|
190
|
-
const expectedCommand = device.ExpectedCommand;
|
|
191
|
-
const owner = device.Owner;
|
|
192
|
-
const detectedCountry = device.DetectedCountry;
|
|
193
|
-
//const adaptorType = device.AdaptorType;
|
|
194
|
-
const firmwareDeployment = device.FirmwareDeployment;
|
|
195
|
-
const firmwareUpdateAborted = device.FirmwareUpdateAborted;
|
|
196
|
-
//const linkedDevice = device.LinkedDevice;
|
|
197
|
-
const wifiSignalStrength = device.WifiSignalStrength;
|
|
198
|
-
const wifiAdapterStatus = device.WifiAdapterStatus;
|
|
199
|
-
const position = device.Position;
|
|
200
|
-
const pCycle = device.PCycle;
|
|
201
|
-
const pCycleConfigured = device.PCycleConfigured;
|
|
202
|
-
const recordNumMax = device.RecordNumMax;
|
|
203
|
-
const lastTimeStamp = device.LastTimeStamp;
|
|
204
|
-
const errorCode = device.ErrorCode;
|
|
205
|
-
const hasError = device.HasError;
|
|
206
|
-
const lastReset = device.LastReset;
|
|
207
|
-
const flashWrites = device.FlashWrites;
|
|
208
|
-
const scene = device.Scene;
|
|
209
|
-
const sSLExpirationDate = device.SSLExpirationDate;
|
|
210
|
-
const sPTimeout = device.SPTimeout;
|
|
211
|
-
const passcode = device.Passcode;
|
|
212
|
-
const serverCommunicationDisabled = device.ServerCommunicationDisabled;
|
|
213
|
-
const consecutiveUploadErrors = device.ConsecutiveUploadErrors;
|
|
214
|
-
const doNotRespondAfter = device.DoNotRespondAfter;
|
|
215
|
-
const ownerRoleAccessLevel = device.OwnerRoleAccessLevel;
|
|
216
|
-
//const ownerCountry = device.OwnerCountry;
|
|
217
|
-
const hideEnergyReport = device.HideEnergyReport;
|
|
218
|
-
const exceptionHash = device.ExceptionHash;
|
|
219
|
-
const exceptionDate = device.ExceptionDate;
|
|
220
|
-
const exceptionCount = device.ExceptionCount;
|
|
221
|
-
const rate1StartTime = device.Rate1StartTime;
|
|
222
|
-
const rate2StartTime = device.Rate2StartTime;
|
|
223
|
-
const protocolVersion = device.ProtocolVersion;
|
|
224
|
-
const unitVersion = device.UnitVersion;
|
|
225
101
|
const firmwareAppVersion = device.FirmwareAppVersion?.toString() ?? 'Undefined';
|
|
226
|
-
const firmwareWebVersion = device.FirmwareWebVersion;
|
|
227
|
-
const firmwareWlanVersion = device.FirmwareWlanVersion;
|
|
228
|
-
const effectivePCycle = device.EffectivePCycle;
|
|
229
|
-
const mqttFlags = device.MqttFlags;
|
|
230
|
-
const hasErrorMessages = device.HasErrorMessages;
|
|
231
|
-
const hasZone2 = device.HasZone2;
|
|
232
|
-
const offline = device.Offline ?? false;
|
|
233
|
-
const minPcycle = device.MinPcycle;
|
|
234
|
-
const maxPcycle = device.MaxPcycle;
|
|
235
|
-
const supportsHourlyEnergyReport = device.SupportsHourlyEnergyReport;
|
|
236
102
|
|
|
237
103
|
//units
|
|
238
104
|
const units = Array.isArray(device.Units) ? device.Units : [];
|
|
@@ -285,29 +151,6 @@ class MelCloudErv extends EventEmitter {
|
|
|
285
151
|
}
|
|
286
152
|
}
|
|
287
153
|
|
|
288
|
-
//diagnostic
|
|
289
|
-
//const diagnosticMode = deviceData.DiagnosticMode;
|
|
290
|
-
//const diagnosticEndDate = deviceData.DiagnosticEndDate;
|
|
291
|
-
const location = deviceData.Location;
|
|
292
|
-
//const detectedCountry = deviceData.DetectedCountry;
|
|
293
|
-
const registrations = deviceData.Registrations;
|
|
294
|
-
const localIPAddress = deviceData.LocalIPAddress;
|
|
295
|
-
const timeZone = deviceData.TimeZone;
|
|
296
|
-
const registReason = deviceData.RegistReason;
|
|
297
|
-
//const expectedCommand = deviceData.ExpectedCommand;
|
|
298
|
-
const registRetry = deviceData.RegistRetry;
|
|
299
|
-
const dateCreated = deviceData.DateCreated;
|
|
300
|
-
//const firmwareDeployment = deviceData.FirmwareDeployment;
|
|
301
|
-
//const firmwareUpdateAborted = deviceData.FirmwareUpdateAborted;
|
|
302
|
-
|
|
303
|
-
//permissions
|
|
304
|
-
const permissionCanSetOperationMode = deviceData.Permissions.CanSetOperationMode;
|
|
305
|
-
const permissionCanSetFanSpeed = deviceData.Permissions.CanSetFanSpeed;
|
|
306
|
-
const permissionCanSetVaneDirection = deviceData.Permissions.CanSetVaneDirection;
|
|
307
|
-
const permissionCanSetPower = deviceData.Permissions.CanSetPower;
|
|
308
|
-
const permissionCanSetTemperatureIncrementOverride = deviceData.Permissions.CanSetTemperatureIncrementOverride;
|
|
309
|
-
const permissionCanDisableLocalController = deviceData.Permissions.CanDisableLocalController;
|
|
310
|
-
|
|
311
154
|
//display info if units are not configured in MELCloud service
|
|
312
155
|
if (unitsCount === 0) {
|
|
313
156
|
this.emit('message', `Units are not configured in MELCloud service`);
|
|
@@ -366,10 +209,10 @@ class MelCloudErv extends EventEmitter {
|
|
|
366
209
|
};
|
|
367
210
|
};
|
|
368
211
|
|
|
369
|
-
async send(deviceData,
|
|
212
|
+
async send(deviceData, displayType) {
|
|
370
213
|
try {
|
|
371
214
|
//set target temp based on display mode and ventilation mode
|
|
372
|
-
switch (
|
|
215
|
+
switch (displayType) {
|
|
373
216
|
case 1: //Heather/Cooler
|
|
374
217
|
switch (deviceData.Device.VentilationMode) {
|
|
375
218
|
case 0: //LOSNAY
|