From 34ff5564864ed8d1759bd4141fc4f9442ca12560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Beye?= Date: Wed, 6 Sep 2023 20:26:09 +0200 Subject: [PATCH] feat(MockRobot): Mock more capabilities --- backend/lib/robots/mock/MockRobot.js | 10 + .../MockCarpetSensorModeControlCapability.js | 37 ++++ ...sionAvoidantNavigationControlCapability.js | 36 ++++ ...MockMopDockCleanManualTriggerCapability.js | 27 +++ .../MockMopDockDryManualTriggerCapability.js | 27 +++ .../MockOperationModeControlCapability.js | 50 +++++ ...ckPetObstacleAvoidanceControlCapability.js | 36 ++++ backend/lib/robots/mock/capabilities/index.js | 6 + docs/_pages/integrations/mqtt.md | 45 +++++ docs/_pages/usage/implementation-overview.md | 182 ++++++++++++------ 10 files changed, 402 insertions(+), 54 deletions(-) create mode 100644 backend/lib/robots/mock/capabilities/MockCarpetSensorModeControlCapability.js create mode 100644 backend/lib/robots/mock/capabilities/MockCollisionAvoidantNavigationControlCapability.js create mode 100644 backend/lib/robots/mock/capabilities/MockMopDockCleanManualTriggerCapability.js create mode 100644 backend/lib/robots/mock/capabilities/MockMopDockDryManualTriggerCapability.js create mode 100644 backend/lib/robots/mock/capabilities/MockOperationModeControlCapability.js create mode 100644 backend/lib/robots/mock/capabilities/MockPetObstacleAvoidanceControlCapability.js diff --git a/backend/lib/robots/mock/MockRobot.js b/backend/lib/robots/mock/MockRobot.js index 81978dc1475..580c25b3c82 100644 --- a/backend/lib/robots/mock/MockRobot.js +++ b/backend/lib/robots/mock/MockRobot.js @@ -46,6 +46,12 @@ class MockRobot extends ValetudoRobot { this.registerCapability(new capabilities.MockManualControlCapability({robot: this})); this.registerCapability(new capabilities.MockCurrentStatisticsCapability({robot: this})); this.registerCapability(new capabilities.MockTotalStatisticsCapability({robot: this})); + this.registerCapability(new capabilities.MockOperationModeControlCapability({robot: this})); + this.registerCapability(new capabilities.MockPetObstacleAvoidanceControlCapability({robot: this})); + this.registerCapability(new capabilities.MockCollisionAvoidantNavigationControlCapability({robot: this})); + this.registerCapability(new capabilities.MockCarpetSensorModeControlCapability({robot: this})); + this.registerCapability(new capabilities.MockMopDockCleanManualTriggerCapability({robot: this})); + this.registerCapability(new capabilities.MockMopDockDryManualTriggerCapability({robot: this})); // Raise events to make them visible in the UI options.valetudoEventStore.raise(new DustBinFullValetudoEvent({})); @@ -54,6 +60,10 @@ class MockRobot extends ValetudoRobot { options.valetudoEventStore.raise(new ErrorStateValetudoEvent({ message: "This is an error message" })); + + this.state.upsertFirstMatchingAttribute(new entities.state.attributes.DockStatusStateAttribute({ + value: entities.state.attributes.DockStatusStateAttribute.VALUE.IDLE + })); } getManufacturer() { diff --git a/backend/lib/robots/mock/capabilities/MockCarpetSensorModeControlCapability.js b/backend/lib/robots/mock/capabilities/MockCarpetSensorModeControlCapability.js new file mode 100644 index 00000000000..66f93a9e952 --- /dev/null +++ b/backend/lib/robots/mock/capabilities/MockCarpetSensorModeControlCapability.js @@ -0,0 +1,37 @@ +const CarpetSensorModeControlCapability = require("../../../core/capabilities/CarpetSensorModeControlCapability"); + +/** + * @extends CarpetSensorModeControlCapability + */ +class MockCarpetSensorModeControlCapability extends CarpetSensorModeControlCapability { + + /** + * @param {object} options + * @param {import("../MockRobot")} options.robot + */ + constructor(options) { + super(options); + + this.mode = CarpetSensorModeControlCapability.MODE.LIFT; + } + + async getMode() { + return this.mode; + } + + async setMode(newMode) { + this.mode = newMode; + } + + getProperties() { + return { + supportedModes: [ + CarpetSensorModeControlCapability.MODE.LIFT, + CarpetSensorModeControlCapability.MODE.AVOID, + CarpetSensorModeControlCapability.MODE.OFF, + ] + }; + } +} + +module.exports = MockCarpetSensorModeControlCapability; diff --git a/backend/lib/robots/mock/capabilities/MockCollisionAvoidantNavigationControlCapability.js b/backend/lib/robots/mock/capabilities/MockCollisionAvoidantNavigationControlCapability.js new file mode 100644 index 00000000000..7216a290145 --- /dev/null +++ b/backend/lib/robots/mock/capabilities/MockCollisionAvoidantNavigationControlCapability.js @@ -0,0 +1,36 @@ +const CollisionAvoidantNavigationControlCapability = require("../../../core/capabilities/CollisionAvoidantNavigationControlCapability"); + +/** + * @extends PetObstacleAvoidanceControlCapability + */ +class MockCollisionAvoidantNavigationControlCapability extends CollisionAvoidantNavigationControlCapability { + /** + * @param {object} options + * @param {import("../MockRobot")} options.robot + */ + constructor(options) { + super(options); + + this.enabled = true; + } + + async isEnabled() { + return this.enabled; + } + + /** + * @returns {Promise} + */ + async enable() { + this.enabled = true; + } + + /** + * @returns {Promise} + */ + async disable() { + this.enabled = false; + } +} + +module.exports = MockCollisionAvoidantNavigationControlCapability; diff --git a/backend/lib/robots/mock/capabilities/MockMopDockCleanManualTriggerCapability.js b/backend/lib/robots/mock/capabilities/MockMopDockCleanManualTriggerCapability.js new file mode 100644 index 00000000000..2bf18f8ae06 --- /dev/null +++ b/backend/lib/robots/mock/capabilities/MockMopDockCleanManualTriggerCapability.js @@ -0,0 +1,27 @@ +const entities = require("../../../entities"); +const MopDockCleanManualTriggerCapability = require("../../../core/capabilities/MopDockCleanManualTriggerCapability"); + +/** + * @extends MopDockCleanManualTriggerCapability + */ +class MockMopDockCleanManualTriggerCapability extends MopDockCleanManualTriggerCapability { + /** + * @returns {Promise} + */ + async startCleaning() { + this.robot.state.upsertFirstMatchingAttribute(new entities.state.attributes.DockStatusStateAttribute({ + value: entities.state.attributes.DockStatusStateAttribute.VALUE.CLEANING + })); + } + + /** + * @returns {Promise} + */ + async stopCleaning() { + this.robot.state.upsertFirstMatchingAttribute(new entities.state.attributes.DockStatusStateAttribute({ + value: entities.state.attributes.DockStatusStateAttribute.VALUE.IDLE + })); + } +} + +module.exports = MockMopDockCleanManualTriggerCapability; diff --git a/backend/lib/robots/mock/capabilities/MockMopDockDryManualTriggerCapability.js b/backend/lib/robots/mock/capabilities/MockMopDockDryManualTriggerCapability.js new file mode 100644 index 00000000000..e87b7ed56c8 --- /dev/null +++ b/backend/lib/robots/mock/capabilities/MockMopDockDryManualTriggerCapability.js @@ -0,0 +1,27 @@ +const entities = require("../../../entities"); +const MopDockDryManualTriggerCapability = require("../../../core/capabilities/MopDockDryManualTriggerCapability"); + +/** + * @extends MopDockDryManualTriggerCapability + */ +class MockMopDockDryManualTriggerCapability extends MopDockDryManualTriggerCapability { + /** + * @returns {Promise} + */ + async startDrying() { + this.robot.state.upsertFirstMatchingAttribute(new entities.state.attributes.DockStatusStateAttribute({ + value: entities.state.attributes.DockStatusStateAttribute.VALUE.DRYING + })); + } + + /** + * @returns {Promise} + */ + async stopDrying() { + this.robot.state.upsertFirstMatchingAttribute(new entities.state.attributes.DockStatusStateAttribute({ + value: entities.state.attributes.DockStatusStateAttribute.VALUE.IDLE + })); + } +} + +module.exports = MockMopDockDryManualTriggerCapability; diff --git a/backend/lib/robots/mock/capabilities/MockOperationModeControlCapability.js b/backend/lib/robots/mock/capabilities/MockOperationModeControlCapability.js new file mode 100644 index 00000000000..20c515dfe43 --- /dev/null +++ b/backend/lib/robots/mock/capabilities/MockOperationModeControlCapability.js @@ -0,0 +1,50 @@ +const entities = require("../../../entities"); +const OperationModeControlCapability = require("../../../core/capabilities/OperationModeControlCapability"); +const ValetudoSelectionPreset = require("../../../entities/core/ValetudoSelectionPreset"); +const stateAttrs = entities.state.attributes; + +/** + * @extends OperationModeControlCapability + */ +class MockOperationModeControlCapability extends OperationModeControlCapability { + /** + * @param {object} options + * @param {import("../MockRobot")} options.robot + */ + constructor(options) { + let presets = [ + new ValetudoSelectionPreset({name: entities.state.attributes.PresetSelectionStateAttribute.MODE.MOP, value: 0}), + new ValetudoSelectionPreset({name: entities.state.attributes.PresetSelectionStateAttribute.MODE.VACUUM, value: 1}), + new ValetudoSelectionPreset({name: entities.state.attributes.PresetSelectionStateAttribute.MODE.VACUUM_AND_MOP, value: 2}) + ]; + super({ + robot: options.robot, + presets: presets + }); + + this.StateAttr = new stateAttrs.PresetSelectionStateAttribute({ + type: stateAttrs.PresetSelectionStateAttribute.TYPE.OPERATION_MODE, + value: stateAttrs.PresetSelectionStateAttribute.MODE.VACUUM + }); + + this.robot.state.upsertFirstMatchingAttribute(this.StateAttr); + } + + /** + * @param {string} preset + * @returns {Promise} + */ + async selectPreset(preset) { + const matchedPreset = this.presets.find(p => { + return p.name === preset; + }); + + if (matchedPreset) { + this.StateAttr.value = matchedPreset.name; + } else { + throw new Error("Invalid Preset"); + } + } +} + +module.exports = MockOperationModeControlCapability; diff --git a/backend/lib/robots/mock/capabilities/MockPetObstacleAvoidanceControlCapability.js b/backend/lib/robots/mock/capabilities/MockPetObstacleAvoidanceControlCapability.js new file mode 100644 index 00000000000..ae40f4ce66e --- /dev/null +++ b/backend/lib/robots/mock/capabilities/MockPetObstacleAvoidanceControlCapability.js @@ -0,0 +1,36 @@ +const PetObstacleAvoidanceControlCapability = require("../../../core/capabilities/PetObstacleAvoidanceControlCapability"); + +/** + * @extends PetObstacleAvoidanceControlCapability + */ +class MockPetObstacleAvoidanceControlCapability extends PetObstacleAvoidanceControlCapability { + /** + * @param {object} options + * @param {import("../MockRobot")} options.robot + */ + constructor(options) { + super(options); + + this.enabled = true; + } + + async isEnabled() { + return this.enabled; + } + + /** + * @returns {Promise} + */ + async enable() { + this.enabled = true; + } + + /** + * @returns {Promise} + */ + async disable() { + this.enabled = false; + } +} + +module.exports = MockPetObstacleAvoidanceControlCapability; diff --git a/backend/lib/robots/mock/capabilities/index.js b/backend/lib/robots/mock/capabilities/index.js index 9f080ca11ab..c4eb9524fab 100644 --- a/backend/lib/robots/mock/capabilities/index.js +++ b/backend/lib/robots/mock/capabilities/index.js @@ -3,6 +3,8 @@ module.exports = { MockAutoEmptyDockManualTriggerCapability: require("./MockAutoEmptyDockManualTriggerCapability"), MockBasicControlCapability: require("./MockBasicControlCapability"), MockCarpetModeControlCapability: require("./MockCarpetModeControlCapability"), + MockCarpetSensorModeControlCapability: require("./MockCarpetSensorModeControlCapability"), + MockCollisionAvoidantNavigationControlCapability: require("./MockCollisionAvoidantNavigationControlCapability"), MockConsumableMonitoringCapability: require("./MockConsumableMonitoringCapability"), MockCurrentStatisticsCapability: require("./MockCurrentStatisticsCapability"), MockDoNotDisturbCapability: require("./MockDoNotDisturbCapability"), @@ -14,9 +16,13 @@ module.exports = { MockMapResetCapability: require("./MockMapResetCapability"), MockMapSegmentationCapability: require("./MockMapSegmentationCapability"), MockMappingPassCapability: require("./MockMappingPassCapability"), + MockMopDockCleanManualTriggerCapability: require("./MockMopDockCleanManualTriggerCapability"), + MockMopDockDryManualTriggerCapability: require("./MockMopDockDryManualTriggerCapability"), MockObstacleAvoidanceControlCapability: require("./MockObstacleAvoidanceControlCapability"), + MockOperationModeControlCapability: require("./MockOperationModeControlCapability"), MockPendingMapChangeHandlingCapability: require("./MockPendingMapChangeHandlingCapability"), MockPersistentMapControlCapability: require("./MockPersistentMapControlCapability"), + MockPetObstacleAvoidanceControlCapability: require("./MockPetObstacleAvoidanceControlCapability"), MockSpeakerTestCapability: require("./MockSpeakerTestCapability"), MockSpeakerVolumeControlCapability: require("./MockSpeakerVolumeControlCapability"), MockTotalStatisticsCapability: require("./MockTotalStatisticsCapability"), diff --git a/docs/_pages/integrations/mqtt.md b/docs/_pages/integrations/mqtt.md index 62956fe4a73..6d8ea87ff1b 100644 --- a/docs/_pages/integrations/mqtt.md +++ b/docs/_pages/integrations/mqtt.md @@ -74,6 +74,8 @@ Homie autodiscovery info is best viewed with something like [MQTT Explorer](http - [Go to location (`go`)](#gotolocationgo) - [Locate (`LocateCapability`)](#locatelocatecapability) - [Locate (`locate`)](#locatelocate) + - [Mode control (`OperationModeControlCapability`)](#modecontroloperationmodecontrolcapability) + - [Mode (`preset`)](#modepreset) - [Segment cleaning (`MapSegmentationCapability`)](#segmentcleaningmapsegmentationcapability) - [Clean segments (`clean`)](#cleansegmentsclean) - [Speaker volume control (`SpeakerVolumeControlCapability`)](#speakervolumecontrolspeakervolumecontrolcapability) @@ -132,6 +134,7 @@ Homie autodiscovery info is best viewed with something like [MQTT Explorer](http - [Fan (`select.mqtt`)](#fanpreset) - [Map data (`camera.mqtt`)](#rawmapdataforhomeassistantmap-data-hass) - [Map segments (`sensor.mqtt`)](#mapsegmentssegments) +- [Mode (`select.mqtt`)](#modepreset) - [Mop attachment (`binary_sensor.mqtt`)](#mopmop) - [Play locate sound (`button.mqtt`)](#locatelocate) - [Reset Consumable (`button.mqtt`)](#resettheconsumableconsumable-minutesreset) @@ -476,6 +479,48 @@ Sample payload: +#### Mode control (`OperationModeControlCapability`) + +*Node, capability: [OperationModeControlCapability](/pages/usage/capabilities-overview.html#operationmodecontrolcapability)* + +Status attributes managed by this node: + +- PresetSelectionStateAttribute + +##### Mode (`preset`) + +*Property, readable, settable, retained* + +This handle allows setting the mode. It accepts the preset payloads specified in `$format` or in the HAss json attributes. + +- Read topic: `//OperationModeControlCapability/preset` +- Set topic: `//OperationModeControlCapability/preset/set` +- Data type: [enum](https://homieiot.github.io/specification/#enum) (allowed payloads: `mop`, `vacuum`, `vacuum_and_mop`) + +{% include alert.html type="warning" content="Some information contained in this document may not be exactly what is sent or expected by actual robots, since different vendors have different implementations. Refer to the table below. + +|------+--------| +| What | Reason | +|------|--------| +| Enum payloads | Different robot models have different mode presets. Always check `$format`/`json_attributes` during startup. | +|------+--------| + +" %} + +Sample value: + +``` +vacuum +``` + +Home Assistant components controlled by this property: + +- Mode ([`select.mqtt`](https://www.home-assistant.io/integrations/select.mqtt/)) + + + + + #### Speaker volume control (`SpeakerVolumeControlCapability`) *Node, capability: [SpeakerVolumeControlCapability](/pages/usage/capabilities-overview.html#speakervolumecontrolcapability)* diff --git a/docs/_pages/usage/implementation-overview.md b/docs/_pages/usage/implementation-overview.md index 41ba7f8a950..8c21860346d 100644 --- a/docs/_pages/usage/implementation-overview.md +++ b/docs/_pages/usage/implementation-overview.md @@ -35,22 +35,24 @@ Don't take this as "Everything listed here will be 100% available and work all t 10. [MOVA Z500](#dreame_movaz500) 11. [P2148](#dreame_p2148) 12. [P2150](#dreame_p2150) - 13. [W10](#dreame_w10) - 14. [X10+](#dreame_x10) - 15. [Z10 Pro](#dreame_z10pro) + 13. [W10 Pro](#dreame_w10pro) + 14. [W10](#dreame_w10) + 15. [X10+](#dreame_x10) + 16. [Z10 Pro](#dreame_z10pro) 3. [Roborock](#roborock) - 1. [Q7 Max](#roborock_q7max) - 2. [S4 Max](#roborock_s4max) - 3. [S4](#roborock_s4) - 4. [S5 Max](#roborock_s5max) - 5. [S5](#roborock_s5) - 6. [S6 Pure](#roborock_s6pure) - 7. [S6](#roborock_s6) - 8. [S7 Pro Ultra](#roborock_s7proultra) - 9. [S7](#roborock_s7) - 10. [S8 Pro Ultra](#roborock_s8proultra) - 11. [S8](#roborock_s8) - 12. [V1](#roborock_v1) + 1. [G10S](#roborock_g10s) + 2. [Q7 Max](#roborock_q7max) + 3. [S4 Max](#roborock_s4max) + 4. [S4](#roborock_s4) + 5. [S5 Max](#roborock_s5max) + 6. [S5](#roborock_s5) + 7. [S6 Pure](#roborock_s6pure) + 8. [S6](#roborock_s6) + 9. [S7 Pro Ultra](#roborock_s7proultra) + 10. [S7](#roborock_s7) + 11. [S8 Pro Ultra](#roborock_s8proultra) + 12. [S8](#roborock_s8) + 13. [V1](#roborock_v1) 4. [Viomi](#viomi) 1. [V6](#viomi_v6) 2. [V7](#viomi_v7) @@ -60,44 +62,44 @@ Don't take this as "Everything listed here will be 100% available and work all t ## Overview -Capability | 1C | 1T | D10S Plus | D10S Pro | D9 Pro | D9 | F9 | L10 Pro | L10S Ultra | MOVA Z500 | P2148 | P2150 | W10 | X10+ | Z10 Pro | Q7 Max | S4 Max | S4 | S5 Max | S5 | S6 Pure | S6 | S7 Pro Ultra | S7 | S8 Pro Ultra | S8 | V1 | V6 | V7 | V8 ----- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- -[AutoEmptyDockAutoEmptyControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#AutoEmptyDockAutoEmptyControlCapability) | No | No | Yes | No | No | No | No | No | Yes | No | No | Yes | No | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No -[AutoEmptyDockManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#AutoEmptyDockManualTriggerCapability) | No | No | Yes | No | No | No | No | No | Yes | No | No | Yes | No | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No -[BasicControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#BasicControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[CarpetModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetModeControlCapability) | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[CarpetSensorModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetSensorModeControlCapability) | No | No | No | No | No | No | No | No | Yes | No | No | No | Yes | Yes | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No -[CollisionAvoidantNavigationControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CollisionAvoidantNavigationControlCapability) | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | No | No | No -[CombinedVirtualRestrictionsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CombinedVirtualRestrictionsCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[ConsumableMonitoringCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ConsumableMonitoringCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[CurrentStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CurrentStatisticsCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[DoNotDisturbCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#DoNotDisturbCapability) | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[FanSpeedControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#FanSpeedControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[GoToLocationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#GoToLocationCapability) | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | No | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No -[KeyLockCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#KeyLockCapability) | No | No | Yes | Yes | No | No | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No -[LocateCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#LocateCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[ManualControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ManualControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[MapResetCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapResetCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[MapSegmentEditCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentEditCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[MapSegmentRenameCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentRenameCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[MapSegmentationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentationCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[MapSnapshotCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSnapshotCapability) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | Yes | No | No | No | No | No | No | No | No -[MappingPassCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MappingPassCapability) | No | No | Yes | Yes | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No -[MopDockCleanManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockCleanManualTriggerCapability) | No | No | No | No | No | No | No | No | Yes | No | No | No | Yes | Yes | No | No | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No -[MopDockDryManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockDryManualTriggerCapability) | No | No | No | No | No | No | No | No | Yes | No | No | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No -[ObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ObstacleAvoidanceControlCapability) | No | No | Yes | Yes | No | No | No | Yes | Yes | No | No | No | No | Yes | Yes | No | No | No | No | No | No | No | No | No | Yes | Yes | No | No | No | No -[OperationModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#OperationModeControlCapability) | No | No | No | No | No | No | No | Yes | Yes | No | No | Yes | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes -[PendingMapChangeHandlingCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PendingMapChangeHandlingCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No -[PersistentMapControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PersistentMapControlCapability) | Yes | Yes | No | No | No | No | Yes | No | No | Yes | Yes | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[PetObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PetObstacleAvoidanceControlCapability) | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | No | Yes | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | No | No | No -[QuirksCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#QuirksCapability) | No | No | Yes | Yes | No | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[SpeakerTestCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerTestCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[SpeakerVolumeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerVolumeControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[TotalStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#TotalStatisticsCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No -[VoicePackManagementCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#VoicePackManagementCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes -[WaterUsageControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WaterUsageControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes -[WifiConfigurationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WifiConfigurationCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes -[ZoneCleaningCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ZoneCleaningCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +Capability | 1C | 1T | D10S Plus | D10S Pro | D9 Pro | D9 | F9 | L10 Pro | L10S Ultra | MOVA Z500 | P2148 | P2150 | W10 Pro | W10 | X10+ | Z10 Pro | G10S | Q7 Max | S4 Max | S4 | S5 Max | S5 | S6 Pure | S6 | S7 Pro Ultra | S7 | S8 Pro Ultra | S8 | V1 | V6 | V7 | V8 +---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- +[AutoEmptyDockAutoEmptyControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#AutoEmptyDockAutoEmptyControlCapability) | No | No | Yes | No | No | No | No | No | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No +[AutoEmptyDockManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#AutoEmptyDockManualTriggerCapability) | No | No | Yes | No | No | No | No | No | Yes | No | No | Yes | No | No | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No +[BasicControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#BasicControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[CarpetModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetModeControlCapability) | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[CarpetSensorModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetSensorModeControlCapability) | No | No | No | No | No | No | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No +[CollisionAvoidantNavigationControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CollisionAvoidantNavigationControlCapability) | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | No | No | Yes | No | Yes | No | No | No | No | No | No | No | No | No | Yes | Yes | No | No | No | No +[CombinedVirtualRestrictionsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CombinedVirtualRestrictionsCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[ConsumableMonitoringCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ConsumableMonitoringCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[CurrentStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CurrentStatisticsCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[DoNotDisturbCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#DoNotDisturbCapability) | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[FanSpeedControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#FanSpeedControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[GoToLocationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#GoToLocationCapability) | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | Yes | No | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No +[KeyLockCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#KeyLockCapability) | No | No | Yes | Yes | No | No | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No +[LocateCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#LocateCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[ManualControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ManualControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[MapResetCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapResetCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[MapSegmentEditCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentEditCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[MapSegmentRenameCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentRenameCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[MapSegmentationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentationCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[MapSnapshotCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSnapshotCapability) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | Yes | No | No | No | No | No | No | No | No +[MappingPassCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MappingPassCapability) | No | No | Yes | Yes | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | Yes | No | No | No | No +[MopDockCleanManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockCleanManualTriggerCapability) | No | No | No | No | No | No | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | No | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No +[MopDockDryManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockDryManualTriggerCapability) | No | No | No | No | No | No | No | No | Yes | No | No | No | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No +[ObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ObstacleAvoidanceControlCapability) | No | No | Yes | Yes | No | No | No | Yes | Yes | No | No | No | No | No | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | Yes | Yes | No | No | No | No +[OperationModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#OperationModeControlCapability) | No | No | No | No | No | No | No | Yes | Yes | No | No | Yes | Yes | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes +[PendingMapChangeHandlingCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PendingMapChangeHandlingCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No +[PersistentMapControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PersistentMapControlCapability) | Yes | Yes | No | No | No | No | Yes | No | No | Yes | Yes | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[PetObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PetObstacleAvoidanceControlCapability) | No | No | Yes | Yes | No | No | No | No | Yes | No | No | No | Yes | No | Yes | No | Yes | No | No | No | No | No | No | No | No | No | Yes | Yes | No | No | No | No +[QuirksCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#QuirksCapability) | No | No | Yes | Yes | No | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[SpeakerTestCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerTestCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[SpeakerVolumeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerVolumeControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[TotalStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#TotalStatisticsCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No +[VoicePackManagementCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#VoicePackManagementCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes +[WaterUsageControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WaterUsageControlCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes +[WifiConfigurationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WifiConfigurationCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes +[ZoneCleaningCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ZoneCleaningCapability) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes
@@ -462,6 +464,41 @@ Capability | 1C | 1T | + +#### This model supports the following capabilities: + - [BasicControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#BasicControlCapability) + - [CarpetModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetModeControlCapability) + - [CarpetSensorModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetSensorModeControlCapability) + - [CombinedVirtualRestrictionsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CombinedVirtualRestrictionsCapability) + - [ConsumableMonitoringCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ConsumableMonitoringCapability) + - [CurrentStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CurrentStatisticsCapability) + - [DoNotDisturbCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#DoNotDisturbCapability) + - [FanSpeedControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#FanSpeedControlCapability) + - [GoToLocationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#GoToLocationCapability) + - [KeyLockCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#KeyLockCapability) + - [LocateCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#LocateCapability) + - [ManualControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ManualControlCapability) + - [MapResetCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapResetCapability) + - [MapSegmentEditCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentEditCapability) + - [MapSegmentRenameCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentRenameCapability) + - [MapSegmentationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentationCapability) + - [MappingPassCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MappingPassCapability) + - [MopDockCleanManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockCleanManualTriggerCapability) + - [MopDockDryManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockDryManualTriggerCapability) + - [OperationModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#OperationModeControlCapability) + - [PendingMapChangeHandlingCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PendingMapChangeHandlingCapability) + - [PetObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PetObstacleAvoidanceControlCapability) + - [QuirksCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#QuirksCapability) + - [SpeakerTestCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerTestCapability) + - [SpeakerVolumeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerVolumeControlCapability) + - [TotalStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#TotalStatisticsCapability) + - [VoicePackManagementCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#VoicePackManagementCapability) + - [WaterUsageControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WaterUsageControlCapability) + - [WifiConfigurationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WifiConfigurationCapability) + - [ZoneCleaningCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ZoneCleaningCapability) + + ### W10 #### This model supports the following capabilities: @@ -568,6 +605,43 @@ Capability | 1C | 1T | +### G10S + +#### This model supports the following capabilities: + - [AutoEmptyDockAutoEmptyControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#AutoEmptyDockAutoEmptyControlCapability) + - [AutoEmptyDockManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#AutoEmptyDockManualTriggerCapability) + - [BasicControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#BasicControlCapability) + - [CarpetModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetModeControlCapability) + - [CarpetSensorModeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CarpetSensorModeControlCapability) + - [CollisionAvoidantNavigationControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CollisionAvoidantNavigationControlCapability) + - [CombinedVirtualRestrictionsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CombinedVirtualRestrictionsCapability) + - [ConsumableMonitoringCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ConsumableMonitoringCapability) + - [CurrentStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#CurrentStatisticsCapability) + - [DoNotDisturbCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#DoNotDisturbCapability) + - [FanSpeedControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#FanSpeedControlCapability) + - [GoToLocationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#GoToLocationCapability) + - [KeyLockCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#KeyLockCapability) + - [LocateCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#LocateCapability) + - [ManualControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ManualControlCapability) + - [MapResetCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapResetCapability) + - [MapSegmentEditCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentEditCapability) + - [MapSegmentRenameCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentRenameCapability) + - [MapSegmentationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MapSegmentationCapability) + - [MappingPassCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MappingPassCapability) + - [MopDockCleanManualTriggerCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#MopDockCleanManualTriggerCapability) + - [ObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ObstacleAvoidanceControlCapability) + - [PersistentMapControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PersistentMapControlCapability) + - [PetObstacleAvoidanceControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#PetObstacleAvoidanceControlCapability) + - [QuirksCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#QuirksCapability) + - [SpeakerTestCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerTestCapability) + - [SpeakerVolumeControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#SpeakerVolumeControlCapability) + - [TotalStatisticsCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#TotalStatisticsCapability) + - [VoicePackManagementCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#VoicePackManagementCapability) + - [WaterUsageControlCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WaterUsageControlCapability) + - [WifiConfigurationCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#WifiConfigurationCapability) + - [ZoneCleaningCapability](https://valetudo.cloud/pages/usage/capabilities-overview.html#ZoneCleaningCapability) + + ### Q7 Max #### This model supports the following capabilities: @@ -1009,4 +1083,4 @@ Capability | 1C | 1T |



This page has been autogenerated.
-Autogeneration timestamp: 2023-08-13T13:37:24.150Z +Autogeneration timestamp: 2023-09-06T18:21:46.902Z