matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
110 lines • 5.01 kB
JavaScript
import { RvcOperationalState, RvcRunMode } from 'matterbridge/matter/clusters';
import { OperationStatusCode } from '../roborockCommunication/enums/index.js';
/**
* Convert device operational status code to Matter run mode tag.
* Maps various cleaning, mapping, and idle states to appropriate Matter mode tags.
* @param state - The device operational status code
* @returns Matter run mode tag (Cleaning, Mapping, or Idle). Returns undefined for null, defaults to Idle for undefined/unknown states.
*/
export function state_to_matter_state(state) {
switch (state) {
case OperationStatusCode.RemoteControl:
case OperationStatusCode.Cleaning:
case OperationStatusCode.ReturningDock:
case OperationStatusCode.ManualMode:
case OperationStatusCode.SpotCleaning:
case OperationStatusCode.ReturnToDock:
case OperationStatusCode.GoTo:
case OperationStatusCode.ZoneClean:
case OperationStatusCode.RoomClean:
case OperationStatusCode.WashingTheMop:
case OperationStatusCode.GoingToWashTheMop:
case OperationStatusCode.EmptyingDustContainer:
case OperationStatusCode.Initiating:
case OperationStatusCode.Paused:
case OperationStatusCode.AirDryingStopping:
case OperationStatusCode.CleanMopCleaning:
case OperationStatusCode.CleanMopMopping:
case OperationStatusCode.RoomMopping:
case OperationStatusCode.RoomCleanMopCleaning:
case OperationStatusCode.RoomCleanMopMopping:
case OperationStatusCode.ZoneMopping:
case OperationStatusCode.ZoneCleanMopCleaning:
case OperationStatusCode.ZoneCleanMopMopping:
case OperationStatusCode.BackToDockWashingDuster:
return RvcRunMode.ModeTag.Cleaning;
case OperationStatusCode.Mapping:
return RvcRunMode.ModeTag.Mapping;
case OperationStatusCode.Idle:
case OperationStatusCode.Sleeping:
case OperationStatusCode.Charging:
case OperationStatusCode.FullyCharged:
default:
return RvcRunMode.ModeTag.Idle;
}
}
/**
* Convert device operational status code to Matter operational state.
* Maps device states to Running, Error, Paused, Stopped, SeekingCharger, or Docked states.
* @param state - The device operational status code
* @returns Matter operational state, or null for docked/idle states
*/
export function state_to_matter_operational_status(state) {
if (state === undefined) {
return undefined;
}
switch (state) {
case OperationStatusCode.Initiating:
case OperationStatusCode.RemoteControl:
case OperationStatusCode.Cleaning:
case OperationStatusCode.ManualMode:
case OperationStatusCode.SpotCleaning:
case OperationStatusCode.GoTo:
case OperationStatusCode.ZoneClean:
case OperationStatusCode.RoomClean:
case OperationStatusCode.InCall:
case OperationStatusCode.Mapping:
case OperationStatusCode.Patrol:
case OperationStatusCode.CleanMopCleaning:
case OperationStatusCode.CleanMopMopping:
case OperationStatusCode.RoomMopping:
case OperationStatusCode.RoomCleanMopCleaning:
case OperationStatusCode.RoomCleanMopMopping:
case OperationStatusCode.ZoneMopping:
case OperationStatusCode.ZoneCleanMopCleaning:
case OperationStatusCode.ZoneCleanMopMopping:
case OperationStatusCode.RobotStatusMopping:
return RvcOperationalState.OperationalState.Running;
case OperationStatusCode.InError:
case OperationStatusCode.ChargingError:
case OperationStatusCode.Unknown:
case OperationStatusCode.DeviceOffline:
case OperationStatusCode.Locked:
case OperationStatusCode.AirDryingStopping:
return RvcOperationalState.OperationalState.Error;
case OperationStatusCode.Paused:
return RvcOperationalState.OperationalState.Paused;
case OperationStatusCode.ShuttingDown:
return RvcOperationalState.OperationalState.Stopped;
case OperationStatusCode.ReturnToDock:
case OperationStatusCode.ReturningDock:
case OperationStatusCode.WashingTheMop:
case OperationStatusCode.WashingTheMop2:
case OperationStatusCode.GoingToWashTheMop:
case OperationStatusCode.BackToDockWashingDuster:
case OperationStatusCode.EmptyingDustContainer:
return RvcOperationalState.OperationalState.SeekingCharger;
case OperationStatusCode.Idle:
case OperationStatusCode.Sleeping:
case OperationStatusCode.Updating:
case OperationStatusCode.FullyCharged:
case OperationStatusCode.Charging:
default:
return RvcOperationalState.OperationalState.Docked;
}
}
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
export function asType(v) {
return v;
}
//# sourceMappingURL=function.js.map