@pietrolubini/homebridge-ecoflow
Version:
Homebridge plugin for EcoFlow devices
76 lines • 3.79 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.GlacierSimulator = void 0;
const glacierHttpApiContracts_1 = require("@ecoflow/accessories/glacier/interfaces/glacierHttpApiContracts");
const glacierMqttApiContracts_1 = require("@ecoflow/accessories/glacier/interfaces/glacierMqttApiContracts");
const simulator_1 = require("@ecoflow/apis/simulations/simulator");
const characteristicContracts_1 = require("@ecoflow/characteristics/characteristicContracts");
class GlacierSimulator extends simulator_1.SimulatorTyped {
generateQuota() {
const quotaType = this.getRandomNumber(0, 100);
if (quotaType >= 0 && quotaType < 25) {
const quotaEmsStatus = {
typeCode: glacierMqttApiContracts_1.GlacierMqttMessageType.EMS,
params: {
lcdSoc: this.getRandomNumber(0, 100),
minDsgSoc: this.getRandomNumber(0, 20),
},
};
return quotaEmsStatus;
}
else if (quotaType >= 25 && quotaType < 50) {
const quotaBmsStatus = {
typeCode: glacierMqttApiContracts_1.GlacierMqttMessageType.BMS,
params: {
amp: this.getRandomNumber(0, 1000),
inWatts: this.getRandomNumber(0, 1000),
outWatts: this.getRandomNumber(0, 1000),
vol: this.getRandomNumber(1800, 2400),
},
};
return quotaBmsStatus;
}
else {
const quotaPdStatus = {
typeCode: glacierMqttApiContracts_1.GlacierMqttMessageType.PD,
params: {
coolMode: this.getRandomBoolean() ? glacierHttpApiContracts_1.CoolModeType.Normal : glacierHttpApiContracts_1.CoolModeType.Eco,
doorStat: this.getRandomBoolean() ? glacierHttpApiContracts_1.ContactSensorType.Closed : glacierHttpApiContracts_1.ContactSensorType.Opened,
flagTwoZone: this.getRandomBoolean() ? glacierHttpApiContracts_1.CoolingZoneType.Single : glacierHttpApiContracts_1.CoolingZoneType.Dual,
pwrState: this.getRandomBoolean() ? characteristicContracts_1.EnableType.Off : characteristicContracts_1.EnableType.On,
tmpAver: this.getRandomNumber(-25, 10),
tmpL: this.getRandomNumber(-25, 10),
tmpR: this.getRandomNumber(-25, 10),
tmpLSet: this.getRandomNumber(-25, 10),
tmpRSet: this.getRandomNumber(-25, 10),
tmpMSet: this.getRandomNumber(-25, 10),
tmpUnit: this.getRandomBoolean() ? glacierHttpApiContracts_1.TemperatureType.Celsius : glacierHttpApiContracts_1.TemperatureType.Fahrenheit,
},
};
if (this.getRandomBoolean()) {
quotaPdStatus.params.icePercent = this.getRandomNumber(0, 100);
quotaPdStatus.params.iceMkMode = this.getRandomBoolean()
? glacierHttpApiContracts_1.MakeIceStatusType.SmallInProgress
: glacierHttpApiContracts_1.MakeIceStatusType.LargeInProgress;
}
else {
quotaPdStatus.params.fsmState = this.getRandomInt(2, 5);
}
return quotaPdStatus;
}
}
generateSetReplyTyped(message) {
const reply = {
id: message.id,
version: message.version,
moduleType: message.moduleType,
operateType: message.operateType,
data: {
ack: false,
},
};
return reply;
}
}
exports.GlacierSimulator = GlacierSimulator;
//# sourceMappingURL=glacierSimulator.js.map