UNPKG

matterbridge-roborock-vacuum-plugin

Version:
120 lines (119 loc) 5.73 kB
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); }); }