UNPKG

matterbridge-roborock-vacuum-plugin

Version:
41 lines 2.6 kB
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