feat(vendor.midea): MopExtensionFurnitureLegHandlingControlCapability

This commit is contained in:
Sören Beye 2025-09-13 09:53:38 +02:00
parent 92cd7f6475
commit 7c0fc3a094
3 changed files with 64 additions and 0 deletions

View File

@ -150,6 +150,7 @@ class MideaValetudoRobot extends ValetudoRobot {
capabilities.MideaCarpetSensorModeControlCapability,
capabilities.MideaPetObstacleAvoidanceControlCapability,
capabilities.MideaMopTwistControlCapability,
capabilities.MideaMopExtensionFurnitureLegHandlingControlCapability,
].forEach(capability => {
this.registerCapability(new capability({robot: this}));
});

View File

@ -0,0 +1,62 @@
const BEightParser = require("../../../msmart/BEightParser");
const MopExtensionFurnitureLegHandlingControlCapability = require("../../../core/capabilities/MopExtensionFurnitureLegHandlingControlCapability");
const MSmartConst = require("../../../msmart/MSmartConst");
const MSmartPacket = require("../../../msmart/MSmartPacket");
const MSmartStatusDTO = require("../../../msmart/dtos/MSmartStatusDTO");
/**
* @extends MopExtensionFurnitureLegHandlingControlCapability<import("../MideaValetudoRobot")>
*/
class MideaMopExtensionFurnitureLegHandlingControlCapability extends MopExtensionFurnitureLegHandlingControlCapability {
/**
* @returns {Promise<boolean>}
*/
async isEnabled() {
const response = await this.robot.sendCommand(new MSmartPacket({
messageType: MSmartPacket.MESSAGE_TYPE.ACTION,
payload: MSmartPacket.buildPayload(MSmartConst.ACTION.GET_STATUS)
}).toHexString());
const parsedResponse = BEightParser.PARSE(response);
if (parsedResponse instanceof MSmartStatusDTO) {
return parsedResponse.furniture_legs_cleaning_switch;
} else {
throw new Error("Invalid response from robot");
}
}
/**
* @returns {Promise<void>}
*/
async enable() {
await this.robot.sendCommand(new MSmartPacket({
messageType: MSmartPacket.MESSAGE_TYPE.SETTING,
payload: MSmartPacket.buildPayload(
MSmartConst.SETTING.SET_VARIOUS_TOGGLES,
Buffer.from([
0x2f, // furniture legs cleaning
0x01 // true
])
)
}).toHexString());
}
/**
* @returns {Promise<void>}
*/
async disable() {
await this.robot.sendCommand(new MSmartPacket({
messageType: MSmartPacket.MESSAGE_TYPE.SETTING,
payload: MSmartPacket.buildPayload(
MSmartConst.SETTING.SET_VARIOUS_TOGGLES,
Buffer.from([
0x2f, // furniture legs cleaning
0x00 // false
])
)
}).toHexString());
}
}
module.exports = MideaMopExtensionFurnitureLegHandlingControlCapability;

View File

@ -21,6 +21,7 @@ module.exports = {
MideaMopDockDryManualTriggerCapability: require("./MideaMopDockDryManualTriggerCapability"),
MideaMopDockMopWashTemperatureControlCapability: require("./MideaMopDockMopWashTemperatureControlCapability"),
MideaMopExtensionControlCapability: require("./MideaMopExtensionControlCapability"),
MideaMopExtensionFurnitureLegHandlingControlCapability: require("./MideaMopExtensionFurnitureLegHandlingControlCapability"),
MideaMopTwistControlCapability: require("./MideaMopTwistControlCapability"),
MideaObstacleAvoidanceControlCapability: require("./MideaObstacleAvoidanceControlCapability"),
MideaObstacleImagesCapability: require("./MideaObstacleImagesCapability"),