UNPKG

matterbridge-roborock-vacuum-plugin

Version:
29 lines 1.85 kB
import { debugStringify } from 'matterbridge/logger'; import { PowerSource, RvcOperationalState } from 'matterbridge/matter/clusters'; import { getBatteryState, getBatteryStatus } from '../../initialData/index.js'; export async function handleBatteryUpdate(robot, message, platform) { platform.log.debug(`Handling battery update: ${debugStringify(message)}`); const batteryLevel = message.percentage; const deviceStatus = message.deviceStatus; const batteryChargeLevel = getBatteryStatus(batteryLevel); if (batteryLevel != null) { await Promise.all([ robot.updateAttribute(PowerSource.id, 'batPercentRemaining', batteryLevel * 2, platform.log), robot.updateAttribute(PowerSource.id, 'batChargeLevel', batteryChargeLevel, platform.log), ]); } if (batteryLevel != null && deviceStatus) { const batteryChargeState = getBatteryState(deviceStatus, batteryLevel); await robot.updateAttribute(PowerSource.id, 'batChargeState', batteryChargeState, platform.log); const currentOperationState = robot.getAttribute(RvcOperationalState.id, 'operationalState', platform.log); if (batteryChargeState === PowerSource.BatChargeState.IsCharging && currentOperationState === RvcOperationalState.OperationalState.Docked) { await robot.updateAttribute(RvcOperationalState.id, 'operationalState', RvcOperationalState.OperationalState.Charging, platform.log); } if (batteryChargeState === PowerSource.BatChargeState.IsAtFullCharge && currentOperationState === RvcOperationalState.OperationalState.Charging) { await robot.updateAttribute(RvcOperationalState.id, 'operationalState', RvcOperationalState.OperationalState.Docked, platform.log); } } } //# sourceMappingURL=batteryStateHandler.js.map