matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
41 lines • 2.6 kB
JavaScript
import { CleanSequenceType } from '../enums/CleanSequenceType.js';
import { MopRoute, MopWaterFlow, VacuumSuctionPower } from '../enums/index.js';
import { CleanModeDisplayLabel } from './cleanModeConfig/index.js';
import { CleanModeSetting } from './CleanModeSetting.js';
const DISTANCE_OFF_BASE = 210;
const DISTANCE_OFF_MULTIPLIER = 5;
const DISTANCE_OFF_DEFAULT = 25;
/**
* Get clean mode settings from activity name and user configuration.
* Maps user-friendly activity names to device-specific power/water/route settings.
* @param activity - Activity name (e.g., 'Mop: Default', 'Vacuum: Default')
* @param cleanModeSettings - Optional user-configured clean mode settings
* @returns Clean mode setting configuration or undefined if activity not recognized
*/
export const getSettingFromCleanMode = (activity, cleanModeSettings) => {
switch (activity) {
case CleanModeDisplayLabel.MopDefault: {
const mopSetting = cleanModeSettings?.mopping;
const waterFlow = MopWaterFlow[mopSetting?.waterFlowMode] ?? MopWaterFlow.Medium;
const distance_off = waterFlow === MopWaterFlow.CustomizeWithDistanceOff
? DISTANCE_OFF_BASE - DISTANCE_OFF_MULTIPLIER * (mopSetting?.distanceOff ?? DISTANCE_OFF_DEFAULT)
: 0;
return new CleanModeSetting(VacuumSuctionPower.Off, waterFlow, distance_off, MopRoute[mopSetting?.mopRouteMode] ?? MopRoute.Standard, CleanSequenceType.Persist);
}
case CleanModeDisplayLabel.VacuumDefault: {
const vacuumSetting = cleanModeSettings?.vacuuming;
return new CleanModeSetting(VacuumSuctionPower[vacuumSetting?.fanMode] ?? VacuumSuctionPower.Balanced, MopWaterFlow.Off, 0, MopRoute[vacuumSetting?.mopRouteMode] ?? MopRoute.Standard, CleanSequenceType.Persist);
}
case CleanModeDisplayLabel.VacuumAndMopDefault: {
const vacmopSetting = cleanModeSettings?.vacmop;
const waterFlow = MopWaterFlow[vacmopSetting?.waterFlowMode] ?? MopWaterFlow.Medium;
const distance_off = waterFlow === MopWaterFlow.CustomizeWithDistanceOff
? DISTANCE_OFF_BASE - DISTANCE_OFF_MULTIPLIER * (vacmopSetting?.distanceOff ?? DISTANCE_OFF_DEFAULT)
: 0;
return new CleanModeSetting(VacuumSuctionPower[vacmopSetting?.fanMode] ?? VacuumSuctionPower.Balanced, waterFlow, distance_off, MopRoute[vacmopSetting?.mopRouteMode] ?? MopRoute.Standard, CleanSequenceType.Persist);
}
default:
return undefined;
}
};
//# sourceMappingURL=cleanModeUtils.js.map