From c4ad2aed87b14a0245ad813667c318dc7277a7c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Beye?= Date: Sat, 14 Sep 2024 16:59:24 +0200 Subject: [PATCH] feat(vendor.dreame): Add quirk for triggering the mop dock cleaning procedure for the X40 and L10spuh --- .../DreameL10SProUltraHeatValetudoRobot.js | 1 + .../lib/robots/dreame/DreameQuirkFactory.js | 28 ++++++++++++++++++- .../dreame/DreameX40UltraValetudoRobot.js | 1 + 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/backend/lib/robots/dreame/DreameL10SProUltraHeatValetudoRobot.js b/backend/lib/robots/dreame/DreameL10SProUltraHeatValetudoRobot.js index b442d26212..80354b4e99 100644 --- a/backend/lib/robots/dreame/DreameL10SProUltraHeatValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameL10SProUltraHeatValetudoRobot.js @@ -175,6 +175,7 @@ class DreameL10SProUltraHeatValetudoRobot extends DreameGen4ValetudoRobot { QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_HEATER), QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CARPET_DETECTION_AUTO_DEEP_CLEANING), QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_WATER_USAGE), + QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_CLEANING_PROCESS_TRIGGER), ] })); diff --git a/backend/lib/robots/dreame/DreameQuirkFactory.js b/backend/lib/robots/dreame/DreameQuirkFactory.js index cc8bfe597f..b5a4274b6b 100644 --- a/backend/lib/robots/dreame/DreameQuirkFactory.js +++ b/backend/lib/robots/dreame/DreameQuirkFactory.js @@ -1134,6 +1134,31 @@ class DreameQuirkFactory { ); } }); + case DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_CLEANING_PROCESS_TRIGGER: + return new Quirk({ + id: id, + title: "Mop Dock Cleaning Process", + description: "Trigger a manual base cleaning. The robot needs to be docked. " + + "Keep a brush ready and follow the instructions the robot will give you.", + options: ["select_to_trigger", "trigger"], + getter: async () => { + return "select_to_trigger"; + }, + setter: async (value) => { + if (value === "trigger") { + return this.helper.executeAction( + DreameMiotServices["GEN2"].VACUUM_2.SIID, + DreameMiotServices["GEN2"].VACUUM_2.ACTIONS.MOP_DOCK_INTERACT.AIID, + [ + { + piid: DreameMiotServices["GEN2"].VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID, + value: "5,1" + } + ] + ); + } + } + }); default: throw new Error(`There's no quirk with id ${id}`); } @@ -1164,7 +1189,8 @@ DreameQuirkFactory.KNOWN_QUIRKS = { SIDE_BRUSH_EXTEND: "e560d60c-76de-4ccc-8c01-8ccbcece850e", EDGE_EXTENSION_FREQUENCY: "8f6a7013-794e-40d9-9bbe-8fdeed7c0b9d", CAMERA_LIGHT: "bba079c2-293b-4ad5-99b8-4102a1220b12", - DETACH_MOPS: "4a52e16b-3c73-479d-b308-7f0bbdde0884" + DETACH_MOPS: "4a52e16b-3c73-479d-b308-7f0bbdde0884", + MOP_DOCK_CLEANING_PROCESS_TRIGGER: "42c7db4b-2cad-4801-a526-44de8944a41f" }; module.exports = DreameQuirkFactory; diff --git a/backend/lib/robots/dreame/DreameX40UltraValetudoRobot.js b/backend/lib/robots/dreame/DreameX40UltraValetudoRobot.js index 122974796d..9db1227527 100644 --- a/backend/lib/robots/dreame/DreameX40UltraValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameX40UltraValetudoRobot.js @@ -181,6 +181,7 @@ class DreameX40UltraValetudoRobot extends DreameGen4ValetudoRobot { QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.EDGE_EXTENSION_FREQUENCY), QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.CAMERA_LIGHT), QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.DETACH_MOPS), + QuirkFactory.getQuirk(DreameQuirkFactory.KNOWN_QUIRKS.MOP_DOCK_CLEANING_PROCESS_TRIGGER), ] }));