UNPKG

matterbridge-roborock-vacuum-plugin

Version:
233 lines 12.6 kB
import { RvcCleanMode } from 'matterbridge/matter/clusters'; import { CleanSequenceType } from '../enums/CleanSequenceType.js'; import { MopRoute, MopWaterFlow, VacuumSuctionPower } from '../enums/index.js'; import { CleanModeSetting } from './CleanModeSetting.js'; // prettier-ignore export var CleanModeDisplayLabel; (function (CleanModeDisplayLabel) { CleanModeDisplayLabel["SmartPlan"] = "Smart Plan"; CleanModeDisplayLabel["VacuumAndMopDefault"] = "Vacuum & Mop: Default"; CleanModeDisplayLabel["VacuumAndMopQuick"] = "Vacuum & Mop: Quick"; CleanModeDisplayLabel["VacuumAndMopMax"] = "Vacuum & Mop: Max"; CleanModeDisplayLabel["VacuumAndMopMin"] = "Vacuum & Mop: Min"; CleanModeDisplayLabel["VacuumAndMopQuiet"] = "Vacuum & Mop: Quiet"; CleanModeDisplayLabel["VacuumAndMopEnergySaving"] = "Vacuum & Mop: Energy Saving"; CleanModeDisplayLabel["VacFollowedByMop"] = "Vacuum & Mop: Vac Follow by Mop"; CleanModeDisplayLabel["VacuumAndMopDeep"] = "Vacuum & Mop: Deep"; CleanModeDisplayLabel["MopDefault"] = "Mop: Default"; CleanModeDisplayLabel["MopMax"] = "Mop: Max"; CleanModeDisplayLabel["MopMin"] = "Mop: Min"; CleanModeDisplayLabel["MopQuick"] = "Mop: Quick"; CleanModeDisplayLabel["MopDeep"] = "Mop: Deep"; CleanModeDisplayLabel["VacuumDefault"] = "Vacuum: Default"; CleanModeDisplayLabel["VacuumMin"] = "Vacuum: Min"; CleanModeDisplayLabel["VacuumMax"] = "Vacuum: Max"; CleanModeDisplayLabel["VacuumQuiet"] = "Vacuum: Quiet"; CleanModeDisplayLabel["VacuumQuick"] = "Vacuum: Quick"; CleanModeDisplayLabel["GoVacation"] = "Go Vacation"; })(CleanModeDisplayLabel || (CleanModeDisplayLabel = {})); // prettier-ignore export const CleanModeLabelInfo = { [CleanModeDisplayLabel.SmartPlan]: { mode: 4, label: CleanModeDisplayLabel.SmartPlan }, [CleanModeDisplayLabel.VacuumAndMopDefault]: { mode: 5, label: CleanModeDisplayLabel.VacuumAndMopDefault }, [CleanModeDisplayLabel.VacuumAndMopQuick]: { mode: 6, label: CleanModeDisplayLabel.VacuumAndMopQuick }, [CleanModeDisplayLabel.VacuumAndMopMax]: { mode: 7, label: CleanModeDisplayLabel.VacuumAndMopMax }, [CleanModeDisplayLabel.VacuumAndMopMin]: { mode: 8, label: CleanModeDisplayLabel.VacuumAndMopMin }, [CleanModeDisplayLabel.VacuumAndMopQuiet]: { mode: 9, label: CleanModeDisplayLabel.VacuumAndMopQuiet }, [CleanModeDisplayLabel.VacuumAndMopEnergySaving]: { mode: 10, label: CleanModeDisplayLabel.VacuumAndMopEnergySaving }, [CleanModeDisplayLabel.VacFollowedByMop]: { mode: 11, label: CleanModeDisplayLabel.VacFollowedByMop }, [CleanModeDisplayLabel.VacuumAndMopDeep]: { mode: 12, label: CleanModeDisplayLabel.VacuumAndMopDeep }, [CleanModeDisplayLabel.MopDefault]: { mode: 31, label: CleanModeDisplayLabel.MopDefault }, [CleanModeDisplayLabel.MopMax]: { mode: 32, label: CleanModeDisplayLabel.MopMax }, [CleanModeDisplayLabel.MopMin]: { mode: 33, label: CleanModeDisplayLabel.MopMin }, [CleanModeDisplayLabel.MopQuick]: { mode: 34, label: CleanModeDisplayLabel.MopQuick }, [CleanModeDisplayLabel.MopDeep]: { mode: 35, label: CleanModeDisplayLabel.MopDeep }, [CleanModeDisplayLabel.VacuumDefault]: { mode: 66, label: CleanModeDisplayLabel.VacuumDefault }, [CleanModeDisplayLabel.VacuumMax]: { mode: 67, label: CleanModeDisplayLabel.VacuumMax }, [CleanModeDisplayLabel.VacuumQuiet]: { mode: 68, label: CleanModeDisplayLabel.VacuumQuiet }, [CleanModeDisplayLabel.VacuumQuick]: { mode: 69, label: CleanModeDisplayLabel.VacuumQuick }, [CleanModeDisplayLabel.GoVacation]: { mode: 99, label: CleanModeDisplayLabel.GoVacation }, }; /** * Base clean mode configurations shared across all device types. */ export const baseCleanModeConfigs = [ { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Auto }, ], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopQuick].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopQuick].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Medium, 0, MopRoute.Fast, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quick }, ], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopMax].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopMax].mode, setting: new CleanModeSetting(VacuumSuctionPower.Max, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Max }, ], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopMin].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopMin].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Low, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Min }, ], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopQuiet].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopQuiet].mode, setting: new CleanModeSetting(VacuumSuctionPower.Quiet, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quiet }, ], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopEnergySaving].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopEnergySaving].mode, setting: new CleanModeSetting(VacuumSuctionPower.Custom, MopWaterFlow.Custom, 0, MopRoute.Custom, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.LowEnergy }, ], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.MopDefault].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.MopDefault].mode, setting: new CleanModeSetting(VacuumSuctionPower.Off, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Auto }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.MopMax].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.MopMax].mode, setting: new CleanModeSetting(VacuumSuctionPower.Off, MopWaterFlow.High, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Max }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.MopMin].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.MopMin].mode, setting: new CleanModeSetting(VacuumSuctionPower.Off, MopWaterFlow.Low, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Min }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.MopQuick].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.MopQuick].mode, setting: new CleanModeSetting(VacuumSuctionPower.Off, MopWaterFlow.Medium, 0, MopRoute.Fast, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Quick }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.MopDeep].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.MopDeep].mode, setting: new CleanModeSetting(VacuumSuctionPower.Off, MopWaterFlow.Medium, 0, MopRoute.Deep, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.DeepClean }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumDefault].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumDefault].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Off, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Auto }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumMax].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumMax].mode, setting: new CleanModeSetting(VacuumSuctionPower.Max, MopWaterFlow.Off, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Max }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumQuiet].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumQuiet].mode, setting: new CleanModeSetting(VacuumSuctionPower.Quiet, MopWaterFlow.Off, 0, MopRoute.Standard, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quiet }], }, { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumQuick].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumQuick].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Off, 0, MopRoute.Fast, CleanSequenceType.Persist), modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quick }], }, ]; /** * Smart Plan mode configuration. * Exported for use in deviceCapabilityRegistry.ts. */ export const smartPlanModeConfig = { label: CleanModeLabelInfo[CleanModeDisplayLabel.SmartPlan].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.SmartPlan].mode, setting: new CleanModeSetting(0, 0, 0, MopRoute.Smart, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Auto }, ], }; /** * Vacuum Followed by Mop mode configuration. * Exported for use in deviceCapabilityRegistry.ts. */ export const vacFollowedByMopModeConfig = { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacFollowedByMop].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacFollowedByMop].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Low, 0, MopRoute.Standard, CleanSequenceType.OneTime), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.VacuumThenMop }, ], }; export const vacAndMopDeepModeConfig = { label: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDeep].label, mode: CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDeep].mode, setting: new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Medium, 0, MopRoute.Deep, CleanSequenceType.Persist), modeTags: [ { value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.DeepClean }, ], }; /** * Smart device-specific mode configurations. * @deprecated Use deviceCapabilityRegistry.ts to manage per-device modes. */ export const smartCleanModeConfigs = [ smartPlanModeConfig, vacFollowedByMopModeConfig, ...baseCleanModeConfigs, ]; /** * Helper functions to extract different views of the configuration. */ export function getModeDisplayMap(configs) { return Object.fromEntries(configs.map((c) => [c.mode, c.label])); } export function getModeSettingsMap(configs) { return Object.fromEntries(configs.map((c) => [c.mode, c.setting])); } export function getModeOptions(configs) { return configs.map((c) => ({ mode: c.mode, label: c.label, modeTags: c.modeTags, })); } //# sourceMappingURL=cleanModeConfig.js.map