matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
120 lines (119 loc) • 5.73 kB
JavaScript
import { debugStringify } from 'matterbridge/logger';
import { BehaviorRoborock } from '../../BehaviorDeviceGeneric.js';
import { RvcCleanMode as DefaultRvcCleanMode, CleanSetting as DefaultCleanSetting, getSettingFromCleanMode, RvcRunMode } from '../default/default.js';
export class BehaviorSmart extends BehaviorRoborock {
}
export var VacuumSuctionPowerSmart;
(function (VacuumSuctionPowerSmart) {
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Quiet"] = 101] = "Quiet";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Balanced"] = 102] = "Balanced";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Turbo"] = 103] = "Turbo";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Max"] = 104] = "Max";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Off"] = 105] = "Off";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Custom"] = 106] = "Custom";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["MaxPlus"] = 108] = "MaxPlus";
VacuumSuctionPowerSmart[VacuumSuctionPowerSmart["Smart"] = 110] = "Smart";
})(VacuumSuctionPowerSmart || (VacuumSuctionPowerSmart = {}));
export var MopWaterFlowSmart;
(function (MopWaterFlowSmart) {
MopWaterFlowSmart[MopWaterFlowSmart["Off"] = 200] = "Off";
MopWaterFlowSmart[MopWaterFlowSmart["Low"] = 201] = "Low";
MopWaterFlowSmart[MopWaterFlowSmart["Medium"] = 202] = "Medium";
MopWaterFlowSmart[MopWaterFlowSmart["High"] = 203] = "High";
MopWaterFlowSmart[MopWaterFlowSmart["Custom"] = 204] = "Custom";
MopWaterFlowSmart[MopWaterFlowSmart["CustomizeWithDistanceOff"] = 207] = "CustomizeWithDistanceOff";
MopWaterFlowSmart[MopWaterFlowSmart["Smart"] = 209] = "Smart";
})(MopWaterFlowSmart || (MopWaterFlowSmart = {}));
export var MopRouteSmart;
(function (MopRouteSmart) {
MopRouteSmart[MopRouteSmart["Standard"] = 300] = "Standard";
MopRouteSmart[MopRouteSmart["Deep"] = 301] = "Deep";
MopRouteSmart[MopRouteSmart["Custom"] = 302] = "Custom";
MopRouteSmart[MopRouteSmart["DeepPlus"] = 303] = "DeepPlus";
MopRouteSmart[MopRouteSmart["Fast"] = 304] = "Fast";
MopRouteSmart[MopRouteSmart["Smart"] = 306] = "Smart";
})(MopRouteSmart || (MopRouteSmart = {}));
export const RvcCleanMode = {
[4]: 'Smart Plan',
...DefaultRvcCleanMode,
};
export const CleanSetting = {
[4]: { suctionPower: 0, waterFlow: 0, distance_off: 0, mopRoute: MopRouteSmart.Smart },
...DefaultCleanSetting,
};
export function setCommandHandlerSmart(duid, handler, logger, roborockService, cleanModeSettings) {
handler.setCommandHandler('changeToMode', async (newMode) => {
const activity = RvcRunMode[newMode] || RvcCleanMode[newMode];
switch (activity) {
case 'Cleaning': {
logger.notice('BehaviorSmart-ChangeRunMode to: ', activity);
await roborockService.startClean(duid);
break;
}
case 'Go Vacation': {
logger.notice('BehaviorSmart-GoHome');
await roborockService.stopAndGoHome(duid);
break;
}
case 'Smart Plan':
case 'Mop & Vacuum: Custom': {
const setting = CleanSetting[newMode];
logger.notice(`BehaviorSmart-ChangeCleanMode to: ${activity}, setting: ${debugStringify(setting)}`);
await roborockService.changeCleanMode(duid, setting);
break;
}
case 'Mop & Vacuum: Default':
case 'Mop: Default':
case 'Vacuum: Default': {
const setting = cleanModeSettings ? (getSettingFromCleanMode(activity, cleanModeSettings) ?? CleanSetting[newMode]) : CleanSetting[newMode];
logger.notice(`BehaviorSmart-ChangeCleanMode to: ${activity}, setting: ${debugStringify(setting ?? {})}`);
if (setting) {
await roborockService.changeCleanMode(duid, setting);
}
break;
}
case 'Mop & Vacuum: Quick':
case 'Mop & Vacuum: Max':
case 'Mop & Vacuum: Min':
case 'Mop & Vacuum: Quiet':
case 'Mop: Max':
case 'Mop: Min':
case 'Mop: Quick':
case 'Mop: DeepClean':
case 'Vacuum: Max':
case 'Vacuum: Min':
case 'Vacuum: Quiet':
case 'Vacuum: Quick': {
const setting = CleanSetting[newMode];
logger.notice(`BehaviorSmart-ChangeCleanMode to: ${activity}, setting: ${debugStringify(setting ?? {})}`);
if (setting) {
await roborockService.changeCleanMode(duid, setting);
}
break;
}
default:
logger.notice('BehaviorSmart-changeToMode-Unknown: ', newMode);
break;
}
});
handler.setCommandHandler('selectAreas', async (newAreas) => {
logger.notice(`BehaviorSmart-selectAreas: ${newAreas}`);
roborockService.setSelectedAreas(duid, newAreas ?? []);
});
handler.setCommandHandler('pause', async () => {
logger.notice('BehaviorSmart-Pause');
await roborockService.pauseClean(duid);
});
handler.setCommandHandler('resume', async () => {
logger.notice('BehaviorSmart-Resume');
await roborockService.resumeClean(duid);
});
handler.setCommandHandler('goHome', async () => {
logger.notice('BehaviorSmart-GoHome');
await roborockService.stopAndGoHome(duid);
});
handler.setCommandHandler('playSoundToLocate', async () => {
logger.notice('BehaviorSmart-playSoundToLocate');
await roborockService.playSoundToLocate(duid);
});
}