mirror of
https://github.com/Hypfer/Valetudo.git
synced 2025-10-26 11:27:27 +00:00
feat(vendor.dreame): MopDockMopAutoDryingControlCapability
This commit is contained in:
parent
847093aa4d
commit
6fcfc6a5c1
@ -177,6 +177,7 @@ class DreameL10SProUltraHeatValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
capabilities.DreameMopDockMopWashTemperatureControlCapabilityV1,
|
||||
capabilities.DreameMopTwistControlCapabilityV2,
|
||||
capabilities.DreameMopExtensionFurnitureLegHandlingControlCapability,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -190,7 +191,6 @@ class DreameL10SProUltraHeatValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE),
|
||||
|
||||
@ -182,6 +182,7 @@ class DreameL10SUltraValetudoRobot extends DreameGen2LidarValetudoRobot {
|
||||
capabilities.DreameCollisionAvoidantNavigationControlCapability,
|
||||
capabilities.DreameAutoEmptyDockAutoEmptyIntervalControlCapabilityV1,
|
||||
capabilities.DreameMopTwistControlCapabilityV1,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -196,7 +197,6 @@ class DreameL10SUltraValetudoRobot extends DreameGen2LidarValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.WATER_HOOKUP_TEST_TRIGGER),
|
||||
]
|
||||
|
||||
@ -161,6 +161,7 @@ class DreameL10UltraValetudoRobot extends DreameGen2LidarValetudoRobot {
|
||||
capabilities.DreameCollisionAvoidantNavigationControlCapability,
|
||||
capabilities.DreameAutoEmptyDockAutoEmptyIntervalControlCapabilityV1,
|
||||
capabilities.DreameMopTwistControlCapabilityV1,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -174,7 +175,6 @@ class DreameL10UltraValetudoRobot extends DreameGen2LidarValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DRYING_TIME),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_CLEANING_PROCESS_TRIGGER),
|
||||
]
|
||||
|
||||
@ -183,6 +183,7 @@ class DreameL40UltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
capabilities.DreameMopDockMopWashTemperatureControlCapabilityV2,
|
||||
capabilities.DreameMopTwistControlCapabilityV2,
|
||||
capabilities.DreameMopExtensionFurnitureLegHandlingControlCapability,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -196,7 +197,6 @@ class DreameL40UltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE),
|
||||
|
||||
@ -183,6 +183,7 @@ class DreameMovaP10ProUltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
capabilities.DreameMopDockMopWashTemperatureControlCapabilityV2,
|
||||
capabilities.DreameMopTwistControlCapabilityV2,
|
||||
capabilities.DreameMopExtensionFurnitureLegHandlingControlCapability,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -196,7 +197,6 @@ class DreameMovaP10ProUltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE),
|
||||
|
||||
@ -180,6 +180,7 @@ class DreameMovaS20UltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
capabilities.DreameAutoEmptyDockAutoEmptyIntervalControlCapabilityV2,
|
||||
capabilities.DreameCameraLightControlCapability,
|
||||
capabilities.DreameMopTwistControlCapabilityV1,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -193,7 +194,6 @@ class DreameMovaS20UltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE),
|
||||
|
||||
@ -467,51 +467,6 @@ class DreameQuirkFactory {
|
||||
}
|
||||
}
|
||||
});
|
||||
case DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING:
|
||||
return new Quirk({
|
||||
id: id,
|
||||
title: "Mop Auto drying",
|
||||
description: "Select if the dock should automatically dry the mop after a cleanup",
|
||||
options: ["on", "off"],
|
||||
getter: async () => {
|
||||
const res = await this.helper.readProperty(
|
||||
DreameMiotServices["GEN2"].VACUUM_2.SIID,
|
||||
DreameMiotServices["GEN2"].VACUUM_2.PROPERTIES.MISC_TUNABLES.PIID
|
||||
);
|
||||
|
||||
const deserializedResponse = DreameUtils.DESERIALIZE_MISC_TUNABLES(res);
|
||||
switch (deserializedResponse.AutoDry) {
|
||||
case 0:
|
||||
return "off";
|
||||
case 1:
|
||||
return "on";
|
||||
default:
|
||||
throw new Error(`Received invalid value ${deserializedResponse.AutoDry}`);
|
||||
}
|
||||
},
|
||||
setter: async (value) => {
|
||||
let val;
|
||||
|
||||
switch (value) {
|
||||
case "off":
|
||||
val = 0;
|
||||
break;
|
||||
case "on":
|
||||
val = 1;
|
||||
break;
|
||||
default:
|
||||
throw new Error(`Received invalid value ${value}`);
|
||||
}
|
||||
|
||||
return this.helper.writeProperty(
|
||||
DreameMiotServices["GEN2"].VACUUM_2.SIID,
|
||||
DreameMiotServices["GEN2"].VACUUM_2.PROPERTIES.MISC_TUNABLES.PIID,
|
||||
DreameUtils.SERIALIZE_MISC_TUNABLES_SINGLE_TUNABLE({
|
||||
AutoDry: val
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
||||
case DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK:
|
||||
return new Quirk({
|
||||
id: id,
|
||||
@ -967,7 +922,6 @@ DreameQuirkFactory.KNOWN_QUIRKS = {
|
||||
MOP_DOCK_DETERGENT: "a2a03d42-c710-45e5-b53a-4bc62778589f",
|
||||
MOP_DOCK_WET_DRY_SWITCH: "66adac0f-0a16-4049-b6ac-080ef702bb39",
|
||||
MOP_DOCK_AUTO_REPAIR_TRIGGER: "ae753798-aa4f-4b35-a60c-91e7e5ae76f3",
|
||||
MOP_DOCK_AUTO_DRYING: "6efc4d62-b5a4-474e-b353-5746a99ee8f9",
|
||||
DRAIN_INTERNAL_WATER_TANK: "3e1b0851-3a5a-4943-bea6-dea3d7284bff",
|
||||
CARPET_DETECTION_AUTO_DEEP_CLEANING: "9450a668-88d7-4ff3-9455-a78b485fb33b",
|
||||
MOP_DOCK_WATER_USAGE: "2d4ce805-ebf7-4dcf-b919-c5fe4d4f2de3",
|
||||
|
||||
@ -183,6 +183,7 @@ class DreameX40MasterValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
capabilities.DreameMopDockMopWashTemperatureControlCapabilityV2,
|
||||
capabilities.DreameMopTwistControlCapabilityV2,
|
||||
capabilities.DreameMopExtensionFurnitureLegHandlingControlCapability,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -196,7 +197,6 @@ class DreameX40MasterValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE),
|
||||
|
||||
@ -183,6 +183,7 @@ class DreameX40UltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
capabilities.DreameMopDockMopWashTemperatureControlCapabilityV2,
|
||||
capabilities.DreameMopTwistControlCapabilityV2,
|
||||
capabilities.DreameMopExtensionFurnitureLegHandlingControlCapability,
|
||||
capabilities.DreameMopDockMopAutoDryingControlCapability,
|
||||
].forEach(capability => {
|
||||
this.registerCapability(new capability({robot: this}));
|
||||
});
|
||||
@ -196,7 +197,6 @@ class DreameX40UltraValetudoRobot extends DreameGen4ValetudoRobot {
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_DETERGENT),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WET_DRY_SWITCH),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_REPAIR_TRIGGER),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_AUTO_DRYING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DRAIN_INTERNAL_WATER_TANK),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING),
|
||||
quirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE),
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
const DreameMiotHelper = require("../DreameMiotHelper");
|
||||
const DreameMiotServices = require("../DreameMiotServices");
|
||||
const DreameUtils = require("../DreameUtils");
|
||||
const MopDockMopAutoDryingControlCapability = require("../../../core/capabilities/MopDockMopAutoDryingControlCapability");
|
||||
const {sleep} = require("../../../utils/misc");
|
||||
|
||||
/**
|
||||
* @extends MopDockMopAutoDryingControlCapability<import("../DreameValetudoRobot")>
|
||||
*/
|
||||
class DreameMopDockMopAutoDryingControlCapability extends MopDockMopAutoDryingControlCapability {
|
||||
|
||||
/**
|
||||
* @param {object} options
|
||||
* @param {import("../DreameValetudoRobot")} options.robot
|
||||
*/
|
||||
constructor(options) {
|
||||
super(options);
|
||||
|
||||
this.siid = DreameMiotServices["GEN2"].VACUUM_2.SIID;
|
||||
this.piid = DreameMiotServices["GEN2"].VACUUM_2.PROPERTIES.MISC_TUNABLES.PIID;
|
||||
|
||||
this.helper = new DreameMiotHelper({robot: this.robot});
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
async isEnabled() {
|
||||
const res = await this.helper.readProperty(this.siid, this.piid);
|
||||
const deserializedResponse = DreameUtils.DESERIALIZE_MISC_TUNABLES(res);
|
||||
|
||||
return deserializedResponse.AutoDry === 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async enable() {
|
||||
await this.helper.writeProperty(
|
||||
this.siid,
|
||||
this.piid,
|
||||
DreameUtils.SERIALIZE_MISC_TUNABLES_SINGLE_TUNABLE({
|
||||
AutoDry: 1
|
||||
})
|
||||
);
|
||||
|
||||
await sleep(100); // Give the robot some time to think
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async disable() {
|
||||
await this.helper.writeProperty(
|
||||
this.siid,
|
||||
this.piid,
|
||||
DreameUtils.SERIALIZE_MISC_TUNABLES_SINGLE_TUNABLE({
|
||||
AutoDry: 0
|
||||
})
|
||||
);
|
||||
|
||||
await sleep(100); // Give the robot some time to think
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = DreameMopDockMopAutoDryingControlCapability;
|
||||
@ -32,6 +32,7 @@ module.exports = {
|
||||
DreameMappingPassCapability: require("./DreameMappingPassCapability"),
|
||||
DreameMopDockCleanManualTriggerCapability: require("./DreameMopDockCleanManualTriggerCapability"),
|
||||
DreameMopDockDryManualTriggerCapability: require("./DreameMopDockDryManualTriggerCapability"),
|
||||
DreameMopDockMopAutoDryingControlCapability: require("./DreameMopDockMopAutoDryingControlCapability"),
|
||||
DreameMopDockMopWashTemperatureControlCapabilityV1: require("./DreameMopDockMopWashTemperatureControlCapabilityV1"),
|
||||
DreameMopDockMopWashTemperatureControlCapabilityV2: require("./DreameMopDockMopWashTemperatureControlCapabilityV2"),
|
||||
DreameMopDockWaterUsageControlCapability: require("./DreameMopDockWaterUsageControlCapability"),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user