@pietrolubini/homebridge-ecoflow
Version:
Homebridge plugin for EcoFlow devices
99 lines • 5.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeltaPro3Accessory = void 0;
const deltaPro3HttpApiContracts_1 = require("@ecoflow/accessories/batteries/deltapro3/interfaces/deltaPro3HttpApiContracts");
const outletAcHvService_1 = require("@ecoflow/accessories/batteries/deltapro3/services/outletAcHvService");
const outletAcLvService_1 = require("@ecoflow/accessories/batteries/deltapro3/services/outletAcLvService");
const outletDc12vService_1 = require("@ecoflow/accessories/batteries/deltapro3/services/outletDc12vService");
const ecoFlowAccessoryWithQuotaBase_1 = require("@ecoflow/accessories/ecoFlowAccessoryWithQuotaBase");
const batteryStatusService_1 = require("@ecoflow/services/batteryStatusService");
class DeltaPro3Accessory extends ecoFlowAccessoryWithQuotaBase_1.EcoFlowAccessoryWithQuotaBase {
batteryStatusService;
outletAcHvService;
outletAcLvService;
outletDc12vService;
// private readonly switchXboostService: SwitchXboostService;
constructor(platform, accessory, config, log, httpApiManager, mqttApiManager, batteryStatusProvider) {
super(platform, accessory, config, log, httpApiManager, mqttApiManager);
this.batteryStatusService = new batteryStatusService_1.BatteryStatusService(this, batteryStatusProvider);
this.outletAcHvService = new outletAcHvService_1.OutletAcHvService(this, batteryStatusProvider);
this.outletAcLvService = new outletAcLvService_1.OutletAcLvService(this, batteryStatusProvider);
this.outletDc12vService = new outletDc12vService_1.OutletDc12vService(this, batteryStatusProvider);
// this.switchXboostService = new SwitchXboostService(this);
}
getServices() {
return [
this.batteryStatusService,
this.outletAcHvService,
this.outletAcLvService,
this.outletDc12vService,
// X-boost status:
// - Set ON/OFF - WORKS
// - Read initial value - WORKS
// - Receive updates about changes inside Ecoflow App - DOES NOT WORK (no mqtt quota messages about X-Boost changes)
// this.switchXboostService,
];
}
processQuotaMessage(message) {
const data = message;
Object.assign(this.quota, data);
this.updateSocValues(data);
this.updateInputWattsValues(data);
this.updateOutputWattsValues(data);
this.updateSwitchStateValues(data);
}
initializeQuota(quota) {
const result = quota ?? {};
return result;
}
updateInitialValues(data) {
this.processQuotaMessage(data);
}
updateSocValues(params) {
if (params.cmsBattSoc !== undefined && params.cmsMinDsgSoc !== undefined) {
this.batteryStatusService.updateBatteryLevel(params.cmsBattSoc, params.cmsMinDsgSoc);
this.outletAcHvService.updateBatteryLevel(params.cmsBattSoc, params.cmsMinDsgSoc);
this.outletAcLvService.updateBatteryLevel(params.cmsBattSoc, params.cmsMinDsgSoc);
this.outletDc12vService.updateBatteryLevel(params.cmsBattSoc, params.cmsMinDsgSoc);
}
}
updateInputWattsValues(params) {
if (params.inputWatts !== undefined) {
const isCharging = params.inputWatts > 0 && (params.outputWatts === undefined || params.inputWatts !== params.outputWatts);
this.batteryStatusService.updateChargingState(isCharging);
this.outletAcHvService.updateChargingState(isCharging);
this.outletAcLvService.updateChargingState(isCharging);
this.outletDc12vService.updateChargingState(isCharging);
this.outletAcHvService.updateInputConsumption(params.inputWatts);
this.outletAcLvService.updateInputConsumption(params.inputWatts);
this.outletDc12vService.updateInputConsumption(params.inputWatts);
}
}
updateOutputWattsValues(params) {
if (params.powGetAcHvOut !== undefined) {
this.outletAcHvService.updateOutputConsumption(Math.abs(params.powGetAcHvOut));
}
if (params.powGetAcLvOut !== undefined) {
this.outletAcLvService.updateOutputConsumption(Math.abs(params.powGetAcLvOut));
}
if (params.powGet12v !== undefined) {
this.outletDc12vService.updateOutputConsumption(Math.abs(params.powGet12v));
}
}
updateSwitchStateValues(params) {
if (params.flowInfoAcHvOut !== undefined && params.flowInfoAcHvOut !== deltaPro3HttpApiContracts_1.DeltaPro3AcEnableType.Ignore) {
this.outletAcHvService.updateState(params.flowInfoAcHvOut === deltaPro3HttpApiContracts_1.DeltaPro3AcEnableType.On);
}
if (params.flowInfoAcLvOut !== undefined && params.flowInfoAcLvOut !== deltaPro3HttpApiContracts_1.DeltaPro3AcEnableType.Ignore) {
this.outletAcLvService.updateState(params.flowInfoAcLvOut === deltaPro3HttpApiContracts_1.DeltaPro3AcEnableType.On);
}
if (params.flowInfo12v !== undefined && params.flowInfo12v !== deltaPro3HttpApiContracts_1.DeltaPro3AcEnableType.Ignore) {
this.outletDc12vService.updateState(params.flowInfo12v === deltaPro3HttpApiContracts_1.DeltaPro3AcEnableType.On);
}
// if (params.xboostEn !== undefined && params.xboostEn !== AcXBoostType.Ignore) {
// this.switchXboostService.updateState(params.xboostEn === AcXBoostType.On);
// }
}
}
exports.DeltaPro3Accessory = DeltaPro3Accessory;
//# sourceMappingURL=deltaPro3Accessory.js.map