matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
144 lines (143 loc) • 5.35 kB
JavaScript
import { RvcCleanMode, RvcOperationalState, RvcRunMode } from 'matterbridge/matter/clusters';
import { RvcCleanMode as RvcCleanModeDisplayMap } from './default.js';
export function getDefaultSupportedRunModes() {
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) {
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() {
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',
},
];
}