S7 Mop control

I am wondering if I am asking for something that is already available as according to the internet every man and his dog has a roborock S7, at least they do on youtube.

So I have integrated my Roborock S7 into home assistant using the xiaomi_miio integration and some various lovelace cards in the dash. What I have found is with every vacumm setting from home assistant the retractable mop is always down. So this feature request is to ask if the integration can be add/extended to present like fan speed a mop service/state for the roborock S7. For example in the Mi Home app you can set “scrub intensity” as Close (retracted), Mild, Moderate or INTENSE!!! These settings refer to how much movement the mop attachment performs.

There is also a map route option that you can set between standard and deep this option is greyed out of the scrub intensity is set to Close so I guess this is also a mop specific feature.

+1
I would really love to be able to control the mopping with Roborock S7.

What I like to do with this robot, is letting it first vacuum the entire house at full power with no mopping, then let it charge a bit, and then sending it again to the entire house now with intense mopping only.
This way I get powerful vacuum and then effective mopping. It takes longer, but I do it when I’m not at home anyway.

I can’t do it entirely from Home Assistant because I can’t control if it mops or not, nor the power of mopping level.

I totally agree to above request :grinning:
We really need this moppings features with scrub intensity and deep cleaning.
I’m not a coding nerd, but have some basic understanding. Can I help in any way, I would love to.
Jesper

Also very interested to change this setting.

Unfortunately, it’s not even integrated in python-miio :frowning:

Not sure what is required to have control of the mop features for this vacuum, but it does seem to be integrated into python-miio ?

Mop mode; Add features for newer vacuums (eg Roborock S7) by fettlaus · Pull Request #1039 · rytilahti/python-miio · GitHub & Add features for newer vacuums (eg Roborock S7) by fettlaus · Pull Request #1039 · rytilahti/python-miio · GitHub

not really. Just the “normal” or “deep” mopping mode added, but you can’t disable it for example, or set all other modes like in the xiaomi home app

That would actually be very useful to be able to control. If you could select deep mopping, it also disables vacuuming.

1 Like

Yep, this would be awesome

1 Like

Actually they’re all on python-miio, both standard/deep and the four mopping modes.
I wish I knew how to add that into the integration…

Also interested in this but I think mop attributes should be added to the base vacuum entity first so we can just implement it as a configurable attribute similar to the vacuum speed. Adding this feature shouldn’t be too difficult since python-miio already supports it. There’s a request to add additional support options to the vacuum entity.

Edit: I created a request in the GitHub repository discussion section.

1 Like

Just ordered my S7, and found this thread, and not 100% sure what it’s about. As to my understanding, Roborock S7 vacuums and mops both the same time, and automatically lifts up the mop when it detects a carpet (and when it goes back to charging base). So, is there a specific need to control mop via app/Home Assistant then?

While it can mop and vacuum at the same time, it is not actually recommended. You should do a vacuum-only pass before doing a vacuum+mop pass. Some people even recommend 2 vacuum only passes before mopping. This is for exactly the same reason as you would manually vacuum the floor before mopping, otherwise the mop would drag larger debris along the floor, that is not a good way to clean a floor. Especially if you have polished wooden floor, you should really make sure the floor is well vacuumed before mopping, in order to avoid scratches.

Thanks for explanation. I thought separate runs are not needed since the mop part comes behind the vacuuming parts, but what you explained makes sense. After all, the robot spins around etc and doing so, the mop can probably run over parts of floor that has not been vacuumed yet.

So based on this, then yes, ability to control mop via Home Assistant would be great.

I am also interested in this ability. Best way to clean the floor is to vacuum it once at least before mopping.

1 Like

such a pity, just bought it and found out deep mopping can’t be controlled. Can it be called through an Alexa voice command? an alexa integration would do it then

1 Like

Waiting for the official integration, I found some vacuum commands and coded the following workarounds:

script:
  roborock_set_customize_mode:
    alias: "Set Roborock to use customized cleaning settings for each room"
    sequence:
      - alias: "Set vacuum mode to customized"
        service: vacuum.send_command
        target:
          entity_id: vacuum.roborock
        data:
          command: set_custom_mode
          params: [106]
      - alias: "Set mopping mode to customized"
        service: vacuum.send_command
        target:
          entity_id: vacuum.roborock
        data:
          command: set_water_box_custom_mode
          params: [204]

  roborock_set_manual_mode:
    alias: "Set Roborock manual vacuum and mopping settings"
    fields:
      vacuum:
        description: "Vacuum mode - can be: silent | balanced | turbo | max"
        example: "max"
      mopping:
        description: "Mopping mode - can be: off | low | medium | high"
        example: "off"
    sequence:
      - alias: "Config variables"
        variables:
          config_vacuum:
            silent: 101
            balanced: 102
            turbo: 103
            max: 104
          config_mopping:
            'off': 200
            low: 201
            medium: 202
            high: 203
          vacuum_mode: "{{ config_vacuum[vacuum] }}"
          mopping_mode: "{{ config_mopping[mopping] }}"
      - choose:
          - alias: "Invalid vacuum value"
            conditions: "{{ vacuum not in config_vacuum|list }}"
            sequence:
              - service: system_log.write
                data:
                  message: "Invalid vacuum value '{{ vacuum }}'. Valid values are {{ config_vacuum|list|join(', ') }}"
                  level: warning
                  logger: roborock
          - alias: "Invalid mopping value"
            conditions: "{{ mopping not in config_mopping|list }}"
            sequence:
              - service: system_log.write
                data:
                  message: "Invalid mopping value '{{ lavaggio }}'. Valid values are {{ config_mopping|list|join(', ') }}"
                  level: warning
                  logger: roborock
        default:
          - alias: "Set vacuum mode"
            service: vacuum.send_command
            target:
              entity_id: vacuum.roborock
            data:
              command: set_custom_mode
              params: "[{{ vacuum_mode }}]"
          - alias: "Set mopping mode"
            service: vacuum.send_command
            target:
              entity_id: vacuum.roborock
            data:
              command: set_water_box_custom_mode
              params: "[{{ mopping_mode }}]"

Call one of the scripts before starting the robot cleaning.

I hope this can help while the official integration implements mop control.

note: the vaccum and mopping mode set with the scripts are not reflected in the Xiaomi Home App note2: I didn’t find a way to control the mop route setting

3 Likes

where did you get the information from to put all that together? 201, 202 codes and so on?

thanks

Here: GitHub - marcelrv/XiaomiRobotVacuumProtocol: Attempt to describe the Xiaomi Robot Vacuum Protocol

1 Like

Thanks @matlar, sometimes a workaround is as good as a solution, certainly the case in this instance. The solution works perfectly for me. I am sure it must be possible to set the mopping route I might look into it when I need this level of control, for now its just nice not to have my s7 dragging a dirty dry mop around the floor.