mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-27 22:54:53 +00:00
feat: enhance PowerClamp service with energy consumption procedures and enums
This commit is contained in:
@ -19,6 +19,8 @@ import {
|
||||
} from 'firebase/database';
|
||||
import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories';
|
||||
import { ProductType } from '@app/common/constants/product-type.enum';
|
||||
import { PowerClampService } from '@app/common/helper/services/power.clamp.service';
|
||||
import { PowerClampEnergyEnum } from '@app/common/constants/power.clamp.enargy.enum';
|
||||
@Injectable()
|
||||
export class DeviceStatusFirebaseService {
|
||||
private tuya: TuyaContext;
|
||||
@ -26,6 +28,7 @@ export class DeviceStatusFirebaseService {
|
||||
constructor(
|
||||
private readonly configService: ConfigService,
|
||||
private readonly deviceRepository: DeviceRepository,
|
||||
private readonly powerClampService: PowerClampService,
|
||||
private deviceStatusLogRepository: DeviceStatusLogRepository,
|
||||
) {
|
||||
const accessKey = this.configService.get<string>('auth-config.ACCESS_KEY');
|
||||
@ -75,29 +78,12 @@ export class DeviceStatusFirebaseService {
|
||||
const device = await this.getDeviceByDeviceTuyaUuid(
|
||||
addDeviceStatusDto.deviceTuyaUuid,
|
||||
);
|
||||
if (device.productDevice.prodType === ProductType.PC) {
|
||||
const energyStatus = addDeviceStatusDto.status.find(
|
||||
(status) =>
|
||||
status.code === 'EnergyConsumed' ||
|
||||
status.code === 'EnergyConsumedA' ||
|
||||
status.code === 'EnergyConsumedB' ||
|
||||
status.code === 'EnergyConsumedC',
|
||||
);
|
||||
|
||||
if (energyStatus) {
|
||||
console.log(
|
||||
device.productDevice.prodType,
|
||||
device.uuid,
|
||||
addDeviceStatusDto.log,
|
||||
new Date().toLocaleDateString('en-CA'), // Format as YYYY-MM-DD
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (device?.uuid) {
|
||||
return await this.createDeviceStatusFirebase({
|
||||
deviceUuid: device.uuid,
|
||||
...addDeviceStatusDto,
|
||||
productType: device.productDevice.prodType,
|
||||
});
|
||||
}
|
||||
// Return null if device not found or no UUID
|
||||
@ -235,6 +221,25 @@ export class DeviceStatusFirebaseService {
|
||||
});
|
||||
await this.deviceStatusLogRepository.save(newLogs);
|
||||
|
||||
if (addDeviceStatusDto.productType === ProductType.PC) {
|
||||
const energyCodes = new Set([
|
||||
PowerClampEnergyEnum.ENERGY_CONSUMED,
|
||||
PowerClampEnergyEnum.ENERGY_CONSUMED_A,
|
||||
PowerClampEnergyEnum.ENERGY_CONSUMED_B,
|
||||
PowerClampEnergyEnum.ENERGY_CONSUMED_C,
|
||||
]);
|
||||
|
||||
const energyStatus = addDeviceStatusDto?.log?.properties?.find((status) =>
|
||||
energyCodes.has(status.code),
|
||||
);
|
||||
|
||||
if (energyStatus) {
|
||||
await this.powerClampService.updateEnergyConsumedHistoricalData(
|
||||
addDeviceStatusDto.deviceUuid,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Return the updated data
|
||||
const snapshot: DataSnapshot = await get(dataRef);
|
||||
return snapshot.val();
|
||||
|
||||
Reference in New Issue
Block a user