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