Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vacuum_clean_segment for default(xiaomiMiio) uses vacuum.send_command instead of documented xiaomi_miio.vacuum_clean_segment #717

Open
3 tasks done
bartowl opened this issue Mar 1, 2024 · 9 comments
Assignees
Labels
bug Something isn't working

Comments

@bartowl
Copy link

bartowl commented Mar 1, 2024

Checklist

  • I have updated the card to the latest version available
  • I have cleared the cache of my browser
  • I have checked if the problem is already reported

The problem

Despite Documentation when I load up the card and configure rooms, this is what "copy service call" reports (which of course does not work):

{
  "domain": "vacuum",
  "service": "send_command",
  "serviceData": {
    "command": "app_segment_clean",
    "entity_id": "vacuum.roborock_vacuum_m1s",
    "params": [
      {
        "segments": [
          17
        ],
        "repeat": 1
      }
    ]
  }
}

It should use xiaomi_miio.vacuum_clean_segment and not vacuum.send_command

What version of a card has described problem?

v2.2.2

What was the last working version card?

No response

What vacuum model do you have problems with?

roborock.vacuum.m1s

Which integration do you use to control your vacuum (link)?

https://www.home-assistant.io/integrations/xiaomi_miio/

What browser (browsers/apps) does have this problem?

Edge/Chrome

What version of Home Assistant do you use?

core-2024.2.3

What type of installation are you running?

Home Assistant Container

Card's configuration

type: custom:xiaomi-vacuum-map-card
entity: vacuum.roborock_vacuum_m1s
vacuum_platform: default
map_source:
  camera: camera.xiaomi_cloud_map_extractor
calibration_source:
  camera: true
map_locked: true
map_modes:
  - template: vacuum_clean_segment
    predefined_selections:
      - id: 17
        label:
          text: Room
          x: 31200
          'y': 24000
        outline:
          - - 29150
            - 20350
          - - 32500
            - 20350
          - - 32500
            - 25950
          - - 29150
            - 25950
  - template: vacuum_goto

Javascript errors shown in the browser's console (if applicable)

No response

Additional information

No response

@bartowl bartowl added the bug Something isn't working label Mar 1, 2024
@bartowl
Copy link
Author

bartowl commented Mar 1, 2024

Located the problem here:

@bartowl
Copy link
Author

bartowl commented Mar 1, 2024

expected (working) event would be:

event_type: call_service
data:
  domain: xiaomi_miio
  service: vacuum_clean_segment
  service_data:
    entity_id:
      - vacuum.roborock_vacuum_m1s
    segments:
      - 17

I'm not sure about where to put (and if it will work) the repeat though...

@PiotrMachowski
Copy link
Owner

This has been done on purpose as a workaround for a bug in HA. Apparently this workaround doesn't work with all vacuums

@bartowl
Copy link
Author

bartowl commented Mar 1, 2024

Hmm, found the commit a3e9f48
Question is - is this issue stil present? If yes, would it be possible to create an alternative profile that does use xiaomi_miio.vacuum_clean_segment? I mean - that's why there are those profiles for (btw great idea to deal with this topic!)

@bartowl
Copy link
Author

bartowl commented Mar 1, 2024

Ok, managed to write a workaround by not using template but static code, should someone else be interested.
Basicaly I needed to replace:

  - template: vacuum_clean_segment
    predefined_selections:
      - id: 17
...

with

  - name: Rooms
    icon: mdi:floor-plan
    run_immediately: false
    coordinates_rounding: true
    coordinates_to_meters_divider: 1000
    selection_type: ROOM
    id_type: number
    max_selections: 999
    repeats_type: REPEAT
    max_repeats: 3
    service_call_schema:
      service: xiaomi_miio.vacuum_clean_segment
      service_data:
        segments: "[[selection]]"
        entity_id: "[[entity_id]]"
    predefined_selections:
      - id: 17
...

This works for me. It is then up to you if what you decide to do with this. With my vacuum vacuum.send_command does not seem to work though.

@PiotrMachowski
Copy link
Owner

#538

@PiotrMachowski
Copy link
Owner

You can use this workaround instead:

  - template: vacuum_clean_segment
    service_call_schema:
      service: xiaomi_miio.vacuum_clean_segment
      service_data:
        segments: "[[selection]]"
        entity_id: "[[entity_id]]"
    predefined_selections:
      - id: 17
...

@bartowl
Copy link
Author

bartowl commented Mar 1, 2024

Even better, thanks!

@PiotrMachowski
Copy link
Owner

#294

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants