diff --git a/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js b/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js index c5f172caca..c6b8a9c9ea 100644 --- a/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js @@ -26,6 +26,27 @@ class DreameD10SPlusValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js b/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js index c82d85f3e5..6866e9d973 100644 --- a/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js @@ -26,6 +26,27 @@ class DreameD10SProValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js b/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js index 39c84e031a..359082d187 100644 --- a/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js @@ -17,6 +17,27 @@ class DreameD9ProValetudoRobot extends DreameGen2LidarValetudoRobot { constructor(options) { super(options); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameCarpetModeControlCapability({robot: this})); this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ diff --git a/backend/lib/robots/dreame/DreameD9ValetudoRobot.js b/backend/lib/robots/dreame/DreameD9ValetudoRobot.js index 310f4ba9a6..79d0ff899a 100644 --- a/backend/lib/robots/dreame/DreameD9ValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameD9ValetudoRobot.js @@ -22,6 +22,27 @@ class DreameD9ValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameCarpetModeControlCapability({robot: this})); this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ diff --git a/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js b/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js index 724f5b163e..a317727912 100644 --- a/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js @@ -9,6 +9,27 @@ class DreameGen2VSlamValetudoRobot extends DreameGen2ValetudoRobot { constructor(options) { super(options); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + //Looks like this is always enabled for LIDAR robots but a toggle for vSlam ones? this.registerCapability(new capabilities.DreamePersistentMapControlCapability({ robot: this, diff --git a/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js b/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js index d770b63aa7..97ecad6bb1 100644 --- a/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js @@ -98,27 +98,6 @@ class DreameGen2ValetudoRobot extends DreameValetudoRobot { aiid: MIOT_SERVICES.AUDIO.ACTIONS.LOCATE.AIID })); - this.registerCapability(new capabilities.DreameMapSegmentationCapability({ - robot: this, - miot_actions: { - start: { - siid: MIOT_SERVICES.VACUUM_2.SIID, - aiid: MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID - } - }, - miot_properties: { - mode: { - piid: MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID - }, - additionalCleanupParameters: { - piid: MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID - } - }, - segmentCleaningModeId: 18, - iterationsSupported: 4, - customOrderSupported: true - })); - this.registerCapability(new capabilities.DreameMapSegmentEditCapability({ robot: this, miot_actions: { diff --git a/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js b/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js index 4160764855..5642e1934a 100644 --- a/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js @@ -1,3 +1,4 @@ +const capabilities = require("./capabilities"); const DreameGen2LidarValetudoRobot = require("./DreameGen2LidarValetudoRobot"); const DreameGen2ValetudoRobot = require("./DreameGen2ValetudoRobot"); const DreameMiotHelper = require("./DreameMiotHelper"); @@ -9,6 +10,28 @@ class DreameGen4ValetudoRobot extends DreameGen2LidarValetudoRobot { constructor(options) { super(options); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true, + newCustomOrderStyle: true + })); + this.helper = new DreameMiotHelper({robot: this}); } diff --git a/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js b/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js index f4ef8b97f4..f7bcd791a8 100644 --- a/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js @@ -22,6 +22,27 @@ class DreameL10ProValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js b/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js index bfab70a9a8..9ee5303cc9 100644 --- a/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js @@ -39,6 +39,27 @@ class DreameL10SProValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js b/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js index 6642395a0a..9caebfa8b6 100644 --- a/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js @@ -39,6 +39,27 @@ class DreameL10SUltraValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js b/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js index f0bbdb021f..5ebd511440 100644 --- a/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js @@ -38,6 +38,27 @@ class DreameL10UltraValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameMopValetudoRobot.js b/backend/lib/robots/dreame/DreameMopValetudoRobot.js index 2977814bd8..b89c143ae7 100644 --- a/backend/lib/robots/dreame/DreameMopValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameMopValetudoRobot.js @@ -17,6 +17,27 @@ class DreameMopValetudoRobot extends DreameGen2ValetudoRobot { constructor(options) { super(options); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameZoneCleaningCapability({ robot: this, miot_actions: { diff --git a/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js b/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js index da2ed921dd..21141276b7 100644 --- a/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js @@ -23,6 +23,27 @@ class DreameP2150ValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js b/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js index f451b268bc..967e210c98 100644 --- a/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js @@ -32,6 +32,27 @@ class DreameS10PlusValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js b/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js index ab46eff805..25cf999913 100644 --- a/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js @@ -39,6 +39,27 @@ class DreameX10PlusValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js b/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js index 418201dddd..9563322a96 100644 --- a/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js +++ b/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js @@ -23,6 +23,27 @@ class DreameZ10ProValetudoRobot extends DreameGen2LidarValetudoRobot { robot: this }); + this.registerCapability(new capabilities.DreameMapSegmentationCapability({ + robot: this, + miot_actions: { + start: { + siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID, + aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID + } + }, + miot_properties: { + mode: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID + }, + additionalCleanupParameters: { + piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID + } + }, + segmentCleaningModeId: 18, + iterationsSupported: 4, + customOrderSupported: true + })); + this.registerCapability(new capabilities.DreameWaterUsageControlCapability({ robot: this, presets: Object.keys(this.waterGrades).map(k => { diff --git a/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js b/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js index 67123fbb00..4475dd632f 100644 --- a/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js +++ b/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js @@ -26,6 +26,8 @@ class DreameMapSegmentationCapability extends MapSegmentationCapability { * @param {number} options.segmentCleaningModeId * @param {number} options.iterationsSupported * @param {boolean} options.customOrderSupported + * + * @param {boolean} [options.newCustomOrderStyle] */ constructor(options) { super(options); @@ -35,7 +37,9 @@ class DreameMapSegmentationCapability extends MapSegmentationCapability { this.segmentCleaningModeId = options.segmentCleaningModeId; this.iterationsSupported = options.iterationsSupported; - this.customOrderSupported = options.customOrderSupported; + this.customOrderSupported = options.newCustomOrderStyle; + + this.newCustomOrderStyle = !!options.newCustomOrderStyle; this.helper = new DreameMiotHelper({robot: this.robot}); } @@ -65,9 +69,14 @@ class DreameMapSegmentationCapability extends MapSegmentationCapability { return [ parseInt(segment.id), typeof options?.iterations === "number" ? options.iterations : 1, + fanSpeed, waterGrade, - i + 1 //determines the order in which the segments should be cleaned + + // On older dreames, this counter determined the order in which the segments should be cleaned + // On newer dreames (cut-off unknown, but X40 for sure), it's a static 1. + // The counter still gets evaluated, though not by newer operating modes. Those just break if it's non-one + this.newCustomOrderStyle ? 1 : i + 1 ]; });