matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
29 lines • 1.85 kB
JavaScript
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