UNPKG

@pietrolubini/homebridge-ecoflow

Version:
87 lines 3.81 kB
"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