@pietrolubini/homebridge-ecoflow
Version:
Homebridge plugin for EcoFlow devices
87 lines • 3.81 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PowerOceanAccessory = void 0;
const ecoFlowAccessoryWithQuotaBase_1 = require("@ecoflow/accessories/ecoFlowAccessoryWithQuotaBase");
const outletReadOnlyService_1 = require("@ecoflow/services/outletReadOnlyService");
class PowerOceanAccessory extends ecoFlowAccessoryWithQuotaBase_1.EcoFlowAccessoryWithQuotaBase {
inverterOutletService;
solarOutletService;
batteryOutletService;
constructor(platform, accessory, config, log, httpApiManager, mqttApiManager, batteryStatusProvider) {
super(platform, accessory, config, log, httpApiManager, mqttApiManager);
this.inverterOutletService = new outletReadOnlyService_1.OutletReadOnlyService(this, batteryStatusProvider, 'INV', config.powerOcean?.inverterAdditionalCharacteristics);
this.solarOutletService = new outletReadOnlyService_1.OutletReadOnlyService(this, batteryStatusProvider, 'PV', config.powerOcean?.pvAdditionalCharacteristics);
this.batteryOutletService = new outletReadOnlyService_1.OutletReadOnlyService(this, batteryStatusProvider, 'BAT', config.powerOcean?.batteryAdditionalCharacteristics);
}
getServices() {
return [this.inverterOutletService, this.solarOutletService, this.batteryOutletService];
}
processQuotaMessage(message) {
const params = message.params;
if (params.bpPwr !== undefined) {
this.quota.bpPwr = params.bpPwr;
}
if (params.bpSoc !== undefined) {
this.quota.bpSoc = params.bpSoc;
}
if (params.evPwr !== undefined) {
this.quota.evPwr = params.evPwr;
}
if (params.sysGridPwr !== undefined) {
this.quota.sysGridPwr = params.sysGridPwr;
}
if (params.sysLoadPwr !== undefined) {
this.quota.sysLoadPwr = params.sysLoadPwr;
}
this.updateValues(params);
}
initializeQuota(quota) {
const result = quota ?? {};
return result;
}
updateInitialValues(initialData) {
const message = {
params: initialData,
};
this.processQuotaMessage(message);
}
updateValues(params) {
this.updateSolarValues(params);
this.updateBatteryValues(params);
this.updateInverterValues(params);
}
updateSolarValues(params) {
if (params.evPwr !== undefined) {
this.solarOutletService.updateState(params.evPwr > 0);
this.solarOutletService.updateOutputConsumption(params.evPwr);
}
}
updateBatteryValues(params) {
if (params.bpPwr !== undefined) {
if (params.bpPwr >= 0) {
this.batteryOutletService.updateState(params.bpPwr > 0);
this.batteryOutletService.updateChargingState(false);
this.batteryOutletService.updateOutputConsumption(params.bpPwr);
}
if (params.bpPwr <= 0) {
const watts = Math.abs(params.bpPwr);
this.batteryOutletService.updateChargingState(watts > 0);
this.batteryOutletService.updateInputConsumption(watts);
}
}
if (params.bpSoc !== undefined) {
this.batteryOutletService.updateBatteryLevel(params.bpSoc, 20);
}
}
updateInverterValues(params) {
if (params.sysLoadPwr !== undefined) {
this.inverterOutletService.updateOutputConsumption(params.sysLoadPwr);
this.inverterOutletService.updateState(true);
}
if (params.sysGridPwr !== undefined) {
this.inverterOutletService.updateInputConsumption(params.sysGridPwr);
}
}
}
exports.PowerOceanAccessory = PowerOceanAccessory;
//# sourceMappingURL=powerOceanAccessory.js.map