matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
153 lines (144 loc) • 4.91 kB
text/typescript
import { RvcCleanMode, RvcOperationalState, RvcRunMode } from 'matterbridge/matter/clusters';
import { RvcCleanMode as RvcCleanModeDisplayMap } from './default.js';
import { ExperimentalFeatureSetting } from '../../../model/ExperimentalFeatureSetting.js';
export function getDefaultSupportedRunModes(): RvcRunMode.ModeOption[] {
return [
{
label: 'Idle',
mode: 1,
modeTags: [{ value: RvcRunMode.ModeTag.Idle }],
},
{
label: 'Cleaning',
mode: 2,
modeTags: [{ value: RvcRunMode.ModeTag.Cleaning }],
},
{
label: 'Mapping',
mode: 3,
modeTags: [{ value: RvcRunMode.ModeTag.Mapping }],
},
];
}
export function getDefaultSupportedCleanModes(enableExperimentalFeature: ExperimentalFeatureSetting | undefined): RvcCleanMode.ModeOption[] {
const result = [
{
label: RvcCleanModeDisplayMap[5],
mode: 5,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Auto }],
},
{
label: RvcCleanModeDisplayMap[6],
mode: 6,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quick }],
},
{
label: RvcCleanModeDisplayMap[7],
mode: 7,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Max }],
},
{
label: RvcCleanModeDisplayMap[8],
mode: 8,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Min }],
},
{
label: RvcCleanModeDisplayMap[9],
mode: 9,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quiet }],
},
{
label: RvcCleanModeDisplayMap[10],
mode: 10,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.LowEnergy }],
},
{
label: RvcCleanModeDisplayMap[31],
mode: 31,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Auto }],
},
{
label: RvcCleanModeDisplayMap[32],
mode: 32,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Max }],
},
{
label: RvcCleanModeDisplayMap[33],
mode: 33,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Min }],
},
{
label: RvcCleanModeDisplayMap[34],
mode: 34,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Quick }],
},
{
label: RvcCleanModeDisplayMap[35],
mode: 35,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.DeepClean }],
},
{
label: RvcCleanModeDisplayMap[66],
mode: 66,
modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Auto }],
},
{
label: RvcCleanModeDisplayMap[67],
mode: 67,
modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Max }],
},
{
label: RvcCleanModeDisplayMap[68],
mode: 68,
modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quiet }],
},
{
label: RvcCleanModeDisplayMap[69],
mode: 69,
modeTags: [{ value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Quick }],
},
];
if (enableExperimentalFeature?.advancedFeature?.useVacationModeToSendVacuumToDock ?? false) {
return [
...result,
{
label: RvcCleanModeDisplayMap[99],
mode: 99,
modeTags: [{ value: RvcCleanMode.ModeTag.Mop }, { value: RvcCleanMode.ModeTag.Vacuum }, { value: RvcCleanMode.ModeTag.Vacation }],
},
];
}
return result;
}
export function getDefaultOperationalStates(): RvcOperationalState.OperationalStateStruct[] {
return [
{
operationalStateId: RvcOperationalState.OperationalState.Stopped,
operationalStateLabel: 'Stopped',
},
{
operationalStateId: RvcOperationalState.OperationalState.Running,
operationalStateLabel: 'Running',
},
{
operationalStateId: RvcOperationalState.OperationalState.Paused,
operationalStateLabel: 'Paused',
},
{
operationalStateId: RvcOperationalState.OperationalState.Error,
operationalStateLabel: 'Error',
},
{
operationalStateId: RvcOperationalState.OperationalState.SeekingCharger,
operationalStateLabel: 'SeekingCharger',
},
{
operationalStateId: RvcOperationalState.OperationalState.Charging,
operationalStateLabel: 'Charging',
},
{
operationalStateId: RvcOperationalState.OperationalState.Docked,
operationalStateLabel: 'Docked',
},
];
}