Roidmi EVA Integration

Heyhey HomeAssistants,

got the new Roidmi EVA (different device as Roidmi Eve(Plus)). The thing is really cool and a hughe help for my messy family :). Zoning works pretty good, mopping is great, not to talk of the nowadays basic feature vacuuming. Only one thing is missing - a working Home Assistant integration :).

As I’m not a dev, I’d need help :innocent:. Someone else got the device and is willing to create (or adapt) an integration? Possibly we can start with the Xiaomi app, in which the Roidmi can be and in my case is integrated.

Thanks and greetings

Jakob

2 Likes

If this is working under Xiaomi home app, there are many posts out there integrating existing robot mops from that app. Did you give it a try?

Link: Xiaomi Miio - Home Assistant

Yep, but the device is not recognized and I’m getting a callback error. Think, the device would need support by miio library most likely for the xiaomi vacuum integration to work. But maybe a stand-alone roidmi integration is an option too

Use Xiaomi Miot Auto, it should work there, but you will probably need manual configuration.

Unfortunately, I can’t test it myself, as after the last firmware upgrade in the base station, the vacuum cleaner stopped working in the Xiaomi Mi Home app.

hmmm…unfortunately working, as i already am unable to extract the secret via miio python script ;-(

This is not necessary when using the cloud.

Hi dears, any news about the ROIDMI EVA integration? Willing to buy one :slight_smile:

1 Like

I have the Roidmi Eva and all working fine in HA. Pretty much the same as the Roidmi Eve Plus.

Took a bit of work to get my head around the initial setup. Using HACS install

Xiaomi Miot Auto
Xiaomi Cloud Map Extractor

On Android install the modified Mi Home app (Universal). On your Android device create a folder on root on Internal Storage “/vevs/logs” Go into app and make sure access to modify Files on device allowed so it writes log files. In app select Profile>Experimental features>“write custom log files” and also “Enable Developer mode”. Now you should have option in Profile>Settings>Developer option>debug. The debug will have prefixed and appended Chinese characters around the "debug "

Log into your Mi Home account and add vacuum and start mapping etc… fix up the rooms so they are to your requirements. Once all done you can save the log it created in /vevs/logs/miio folder and remove it from device. Clean a room and once finished you can look at new log in /vevs/logs/miio and search for line of text that includes the word “mapID” this will give you your Mi Home map ID.

{“params”:{“did”:“xxxxxxxxx”,“siid”:14,“aiid”:1,“in”:[2,"{“mapId”:xxxxxxxxxxx,“segmentId”:[1]}"]}} /miotspec/action
2022-12-18 20:37:49 ← {“code”:0,“message”:“ok”,“result”:{"

mapID = Mi Home map ID
did = Your vacuum Mi Home ID
segmentId = room number from the room you just cleaned.
siid = Miot Spec “sweep”
aiid = Miot Spec “start-sweep”

To get all your room numbers easily, configure Xiaomi Cloud Map Extractor and in your .yaml file also add “room_numbers” under the “attributes” section. Once that is working you can go into HA Developer Tools>States>Xiaomi Cloud Map Extractor, where you will see all your room numbers.

This should be enough to get you going.

1 Like

Hi @Jask747,

thanks for this - really a nice christmas gift :slight_smile:. Can you maybe help a bit further and paste the corresponding config yamls, you’ve been talking abount (room stuff etc)?

Thanks again and merry christmas

Jakob

Do you mean this?

alias: Clean Kitchen
sequence:

  • service: xiaomi_miot.call_action
    data:
    entity_id: vacuum.roidmi_v66_2276_robot_cleaner
    siid: 14
    aiid: 1
    params:
    - 2
    - “{“mapId”:123456782,“segmentId”:[1]}”
    mode: single

A quick script to clean a single room.

Now working on script to cater for one or room numbers depending on buttons selected in a Dashboard I am making.

Yeah…helps! Would love, if you’d continue, sharing your progress on that thing :heart:

Heyhey @Jask747,

went on with the stuff. Right now I´m stuck at the Xiaomi Cloud Map Extractor configuration.
How did you extract the token for configuring the camera entity?

camera:
- platform: xiaomi_cloud_map_extractor
host: !secret xiaomi_vacuum_host
token: !secret xiaomi_vacuum_token
username: !secret xiaomi_cloud_username
password: !secret xiaomi_cloud_password

Thanks and regards,

Jakob

Hi

I did this quite some time ago, but I think I used the PC tool from PiotrMachowski (Piotr Machowski) · GitHub

Also had luck with using his vacuum card which I be will share soon

:smiley:

I am successfully using the Lovelace Vacuum Map card now to control my Roidmi Eva easily.

GitHub - PiotrMachowski/lovelace-xiaomi-vacuum-map-card: This card provides a user-friendly way to fully control Xiaomi, Valetudo, Neato and Roomba (+ possibly other) vacuums in Home Assistant.

Once you get your Map configured with you room layouts etc… you can add this piece of code to the card configuration. This will allow you to select one or more rooms to clean.

type: custom:xiaomi-vacuum-map-card
entity: vacuum.roidmi_v66_2276_robot_cleaner
map_source:
  camera: camera.xiaomi_cloud_map_extractor
calibration_source:
  camera: true
map_modes:
  - name: Room Selection
    icon: mdi:floor-plan
    run_immediately: false
    coordinates_rounding: true
    selection_type: ROOM
    max_selections: 9
    repeats_type: EXTERNAL
    max_repeats: 3
    service_call_schema:
      service: xiaomi_miot.call_action
      service_data:
        entity_id: '[[entity_id]]'
        siid: 14
        aiid: 1
        params:
          - 2
          - '{"mapId":1671212345,"segmentId":[[selection]]}'
    predefined_selections:
      - id: 1
    .........................

max_selections is the total amount of rooms I have mapped, so this can be whatever you want to be able to select for a cleaning room count total.

I also found this method the best for creating the initial card configuration.

Basically copy the code into Developer Tools > Template. This will generate card config (you will obviously need to have a working " Xiaomi Cloud Map Extractor" integration).

Hey first i want to thank you @Jask747
I get error “failed to call service” i do all the steps dont now what the problem is

type: custom:xiaomi-vacuum-map-card
map_source:
  camera: camera.vacuum
entity: vacuum.v66_8c51093
calibration_source:
  camera: true
map_modes:
  - template: vacuum_clean_zone
  - template: vacuum_goto
  - template: vacuum_clean_segment
    service_call_schema:
      service: xiaomi_miot.call_action
      service_data:
        entity_id: '[[entity_id]]'
        siid: 14
        aiid: 1
        params:
          - 2
          - “{“mapId”:1668762567,“segmentId”:[9]}”
    predefined_selections:
      - id: '1'
        icon:
          name: mdi:broom
          x: -3124.999888241292
          'y': -4674.999538809062
        label:
          text: Room1
          x: -3124.999888241292
          'y': -4674.999538809062
          offset_y: 35
        outline:
          - - -5174.999918788672
            - -6824.9995708465585
          - - -1074.999857693911
            - -6824.9995708465585
          - - -1074.999857693911
            - -2524.999506771565
          - - -5174.999918788672
            - -2524.999506771565
      - id: '2'
        icon:
          name: mdi:broom
          x: -7724.9999567866325
          'y': 2425.000566989183
        label:
          text: Room2
          x: -7724.9999567866325
          'y': 2425.000566989183
          offset_y: 35
        outline:
          - - -10024.999991059303
            - 975.000545382499
          - - -5424.999922513963
            - 975.000545382499
          - - -5424.999922513963
            - 3875.0005885958667
          - - -10024.999991059303
            - 3875.0005885958667
      - id: '3'
        icon:
          name: mdi:broom
          x: 6250.000251457095
          'y': -7399.999579414725
        label:
          text: Room3
          x: 6250.000251457095
          'y': -7399.999579414725
          offset_y: 35
        outline:
          - - 4425.000224262475
            - -9474.999610334635
          - - 8075.000278651714
            - -9474.999610334635
          - - 8075.000278651714
            - -5324.999548494817
          - - 4425.000224262475
            - -5324.999548494817
      - id: '4'
        icon:
          name: mdi:broom
          x: -2374.999877065421
          'y': -1424.999490380288
        label:
          text: Room4
          x: -2374.999877065421
          'y': -1424.999490380288
          offset_y: 35
        outline:
          - - -6474.999938160182
            - -4024.999529123307
          - - 1725.0001840293403
            - -4024.999529123307
          - - 1725.0001840293403
            - 1175.0005483627313
          - - -6474.999938160182
            - 1175.0005483627313
      - id: '5'
        icon:
          name: mdi:broom
          x: -199.99984465539504
          'y': -5674.999553710223
        label:
          text: Room5
          x: -199.99984465539504
          'y': -5674.999553710223
          offset_y: 35
        outline:
          - - -874.9998547136788
            - -6874.999571591617
          - - 475.00016540288874
            - -6874.999571591617
          - - 475.00016540288874
            - -4474.99953582883
          - - -874.9998547136788
            - -4474.99953582883
      - id: '6'
        icon:
          name: mdi:broom
          x: -3799.9998982995758
          'y': 2175.0005632638927
        label:
          text: Room6
          x: -3799.9998982995758
          'y': 2175.0005632638927
          offset_y: 35
        outline:
          - - -5474.999923259021
            - 575.0005394220345
          - - -2124.9998733401303
            - 575.0005394220345
          - - -2124.9998733401303
            - 3775.0005871057506
          - - -5474.999923259021
            - 3775.0005871057506
      - id: '7'
        icon:
          name: mdi:broom
          x: 8450.00028423965
          'y': -99.99947063624916
        label:
          text: Room7
          x: 8450.00028423965
          'y': -99.99947063624916
          offset_y: 35
        outline:
          - - 6025.000248104333
            - -2174.9995015561585
          - - 10875.000320374966
            - -2174.9995015561585
          - - 10875.000320374966
            - 1975.0005602836602
          - - 6025.000248104333
            - 1975.0005602836602
      - id: '8'
        icon:
          name: mdi:broom
          x: 8675.000287592411
          'y': -3499.9995213001976
        label:
          text: Room8
          x: 8675.000287592411
          'y': -3499.9995213001976
          offset_y: 35
        outline:
          - - 5825.000245124101
            - -5724.999554455281
          - - 11525.00033006072
            - -5724.999554455281
          - - 11525.00033006072
            - -1274.9994881451137
          - - 5825.000245124101
            - -1274.9994881451137
      - id: '9'
        icon:
          name: mdi:broom
          x: 3825.0002153217783
          'y': -1524.999491870404
        label:
          text: Room9
          x: 3825.0002153217783
          'y': -1524.999491870404
          offset_y: 35
        outline:
          - - 1575.000181794166
            - -5074.999544769526
          - - 6075.000248849391
            - -5074.999544769526
          - - 6075.000248849391
            - 2025.0005610287185
          - - 1575.000181794166
            - 2025.0005610287185
      - id: '10'
        icon:
          name: mdi:broom
          x: -8349.999966099858
          'y': -924.9994829297071
        label:
          text: Room10
          x: -8349.999966099858
          'y': -924.9994829297071
          offset_y: 35
        outline:
          - - -10074.999991804361
            - -2574.999507516623
          - - -6624.999940395356
            - -2574.999507516623
          - - -6624.999940395356
            - 725.0005416572087
          - - -10074.999991804361
            - 725.0005416572087
      - id: '11'
        icon:
          name: mdi:broom
          x: -2149.9998737126593
          'y': -624.9994784593589
        label:
          text: Room11
          x: -2149.9998737126593
          'y': -624.9994784593589
          offset_y: 35
        outline:
          - - -3174.9998889863496
            - -1524.999491870404
          - - -1124.999858438969
            - -1524.999491870404
          - - -1124.999858438969
            - 275.00053495168623
          - - -3174.9998889863496
            - 275.00053495168623
title: rooms
map_locked: true

Have you also installed

Yes, i redownladed and update configuration.yaml and get “sucses”
but it didnt do nothing

This line is not correct.

Should be

I did it, not working any idea?

You can confirm vacuum.v66_8c51093 is the correct entity_id?

You checked in Settings > Entities ?

See if you can call service manually for a room in Developer Tools > Services > xiaomi_miot.call_action