Roidmi EVA Integration

It is the correct entity,
When trying manually i get notification code’: -4006

Hi Sagidam

Sorry just saw this message :roll_eyes: So have you managed to get it working?

No, it still not working :frowning:

Hi,

I had similar problem - I could control my Eva via Lovelace Vacuum Map card, but when I tried Developer Tools > Services > xiaomi_miot.call_action, I was constatly getting -4006.

I have finally managed get it work with this sintax:

service: xiaomi_miot.call_action
data:
  entity_id: vacuum.roidmi_v66_75c4_robot_cleaner
  siid: 14
  aiid: 1
  params:
    - 2
    - "{\"mapId\":1688842369,\"segmentId\":[\"4\"]}"

Hope it helps…

Spent quite some hours deleting and re adding the Eva to the Xiaomi app. Adding/binding works smoothly every time. However nothing works from within the Xiaomi app, and therefor not in HA either.
I even can load the maps in HA. (But again no respons)

The only thing it responds to is remote control mode, and back home from there. That’s it.

After 12 fruitless tries I updated the base firmware, but all remains unchanged.

Anyone who can point me in the direction of a resolution?

@Jask747

Could you please elaborate on how you managed to get the EVA in the Xiaomi app in the first place?
I can integrate it there flawlessly, but nothing works. There is no response / error on whichever command I send via the Xiaomi app.

That said, if I integrate it in HA, I have the same result. It seems to be collecting all data, so the connection works, but every command fails.

In other words: If it doesn’t function in the Xiaomi app / cloud, it will never do so in HA.

I have tried several (Apple) devices, numerous times, but I get the same result on every device.

Hi @paqpaqpaq

I use the Mi Home app on Android no problems. Haven’t tried on Apple.

coincidentally, I will receive an Android tablet tonight. I will fiddle around with that one to see what happens. I don’t get it though. Binding is binding, right?

Hello,

I have a Roidmi EVE Plus . I have tried all kinds of instructions by now, but I can’t get it into the Miio integration of HA.
I have tried both the cloud and the manual version.
The error message is always the same Miio does not want to recognise the Eve plus.

How do I manage this? I have also not found a path for the Miio integration on SSD (via file manager) in the installation.

I and especially my better half would be very grateful for help.

I have read out the token. The vacuum cleaner can be controlled via the Xiaomi app on the iPhone.


@Jask747
No luck on the Android device either. All is exactly the same as on iOS.
Just as if Xiaomi has changed something that makes it impossible to get a Roidmi device working within the Xiaomi cloud. Which makes no sense since it is under their flag…
Maybe I should bug report on the Xiaomi board.

@niemehrarbeiten Can you operate the EVE from the Xiaomi app?

Hello, yes it is fully controllable via the xiaomi Home.

Hello,
after some tinkering, the robot has landed in HA. It can also be controlled and displays the sensors (battery level, etc.).
Now still extract the cards and set up the individual room cleaning.
I would prefer to operate him totally cloud-free, for example, with Valetudo. I have so far but nothing found in this regard. Does anyone know anything about this?

Thank you very much.

@Jask747 Somebody on github made me aware of that you’d need to contact Roidmi in order to have a restriction lifted.
wut? :thinking:
So I sent them an app, gave my mi id, and b00m… all worked.

Wow… :crazy_face:

@paqpaqpaq that is weird. So the app you are using is Mi Home?

Screenshot_2023-08-19-08-28-28-854

No, but keep us posted :slightly_smiling_face:

Hello, we used Xiaomi Home on our iPhones.
Registration of the device went without problems.
Attached are a few pictures from the app and now from HA.image




Mi Home / Xiaomi Home points to the same app, and yes.
Others have followed the same steps with Roidmi now, and have the same (working) outcome.

@niemehrarbeiten I don’t think I have had this issue with the EVE, only the EVA.

1 Like

@niemehrarbeiten

Hi

I have e working Roidmi Eve Plus with the standard roidmi app. I would like to integrate it in HA. I tried a few months ago to integrate it to the mi home app. It didn’t worked for me back then.

I saw you used the Xiaomi home app. What are the steps?

  • Reset Wifi Settings on the eve plus
  • Add to Xiaomi home app
  • Create new map
  • Extract Tokens
  • Map Extraction
  • Add Miot Integration to HA

Some guys mentioned to ask Roidmi to remove the restriction for the Xiaomi home app is this still needed?

Best regards

Mike

Hello,
first reset the Roidmi and added it in the xiaomi home app. Then extracted the token. set up the Miot integration in HA, then I installed and set up the Xiaomi Cloud Map Extractor and the Xiaomi Vacuum Map Card. I then used /config for the location of the map storage. I can then conveniently download the map there using Samba.

I just manage to configure my Roidmi Eva in Home Assistant.
Will try to put step-by-step instruction here, hope it will save some of your time.
Generally you need to have 3 HACS plugins and 3 configuration to be done:

0. Connect Roidmi Eva to Mi Home app
  1. Install “Mi Home” for Android or iOs.
  2. Add Roidmi Eva to “Mi Home” app (instruction).
1. Add Roidmi Eva device to Home Assistant to be able to control vacuum
  1. In your Home Assistant using HACS download “Xiaomi Miot Auto” Integration
  2. Go to Settings → “Device & Services”, add and configure “Xiaomi Miot Auto” integration.
  3. Make sure to not filter out Roidmi Eva (if filter is “include” you should check vacuum and vice versa).

As a final verification: you should have new vacuum device added to Home Assistant and you should be able to run cleaning and track status.

2. Add Vacuum Map as a camera device to be able to see the map
  1. In your Home Assistant using HACS download “Xiaomi Cloud Map Extractor” Integration.
  2. Go to Developer tools → States search for “vacuum” or open Roidmi Eva attributes for Lan IP value. (It will be better to make it static on your router settings). Save your device IP.
  3. Go to Developer tools → Service, select service “Xiaomi Miot Auto: Get token”, put device IP address as a name and click “Call Service”. Save your Device Token.
  4. Add to configuration.yaml next setting:
camera:
  - platform: xiaomi_cloud_map_extractor
    name: Roidmi Eva Vacuum Map
    host: !secret xiaomi_vacuum_host
    token: !secret xiaomi_vacuum_token
    username: !secret xiaomi_cloud_username
    password: !secret xiaomi_cloud_password
    country: cn
    auto_update: true
    scan_interval: 10
    force_api: roidmi
    draw: ["all"]
    attributes:
      - calibration_points
      - charger
      - country
      - map_name
      - room_numbers
      - rooms
      - vacuum_position
  1. Put to your secrets.yaml file:
xiaomi_vacuum_host: 192.168.1.100                       # Device IP address
xiaomi_vacuum_token: 12345678901234567890123456789123   # Device Token
xiaomi_cloud_username: [email protected]               # You Mi Home user email
xiaomi_cloud_password: password                         # Your Mi Home User password

As a final verification: you should have new camera device added to Home Assistant and you should be able to see picture of your vacuum map.

3. Add Lovelace plugin to be able to clean specific room
  1. In your Home Assistant using HACS download “Xiaomi Vacuum Map Card” Lovelace integration.
  2. Go to dashboard where you want to add a card.
  3. Click “Add Card” and select “Vacuum Map Card configurator”.
  4. Vacuum and camera entities should be selected automatically, if no, please do it.
  5. Set Vacuum Platform to “al-one/hass-xiaomi-miot”
  6. Click “Generate Static Config”.
  7. Click “Generate Room Config”.
  8. Click to “Show Code Editor”.
  9. If you need “Zone Cleanup” replace it with code below, otherwise you can remove this section.
  - name: Zone cleanup
    icon: mdi:select-drag
    selection_type: MANUAL_RECTANGLE
    service_call_schema:
      evaluate_data_as_template: true
      service: xiaomi_miot.call_action
      service_data:
        entity_id: '[[entity_id]]'
        siid: 14
        aiid: 1
        params:
          - 2
          - '{"MapId":[[mapId]],"ExtraAreas":[{"vertexs":[[{% set s=[[[selection_unwrapped]]] %}{{s[0]}},{{s[3]}}],[{{s[2]}},{{s[3]}}],[{{s[2]}},{{s[1]}}],[{{s[0]}},{{s[1]}}]],"active":"normal","mode":"area"}]}'
    predefined_selections: []
    variables: {}
  1. If you need “Pin & Go” replace it with code below, otherwise you can remove this section. You can change “point_size” to make area bigger or smaller. Generally according to logs point cleaning is working just like regular zone cleanup with 1600(800*2) perimeter around the point you selected.
  - name: Single Point
    icon: mdi:map-marker-radius-outline
    selection_type: MANUAL_POINT
    run_immediately: true
    service_call_schema:
      evaluate_data_as_template: true
      service: xiaomi_miot.call_action
      service_data:
        entity_id: '[[entity_id]]'
        siid: 14
        aiid: 1
        params:
          - 4
          - >-
            {"MapId":[[map_id]],"ExtraAreas":[{"id":301,"tag":"5","vertexs":[[{{[[point_x]]-[[point_size]]}},{{[[point_y]]+[[point_size]]}}],[{{[[point_x]]+[[point_size]]}},{{[[point_y]]+[[point_size]]}}],[{{[[point_x]]+[[point_size]]}},{{[[point_y]]-[[point_size]]}}],[{{[[point_x]]-[[point_size]]}},{{[[point_y]]-[[point_size]]}}]],"active":"normal","mode":"point"}]}
    predefined_selections: []
    variables:
      point_size: 800
  1. In “Rooms” map mode replace service_call_schema with next code:
    service_call_schema:
      service: xiaomi_miot.call_action
      service_data:
        entity_id: '[[entity_id]]'
        siid: 14
        aiid: 1
        params:
          - 2
          - '{"mapId":[[mapId]],"segmentId":[[selection]]}'
  1. Remove “max_repeats” and “repeats_type”, as double cleaning should be send as a separate request, you can add it by adding this icon:
  - icon: mdi:numeric-2-box-multiple-outline
    tooltip: Clean area twice
    conditions:
      - entity: vacuum.roidmi_eva_vacuum
        attribute: custom.double_clean
        value: true
    tap_action:
      action: call-service
      service: xiaomi_miot.set_miot_property
      service_data:
        entity_id: vacuum.roidmi_eva_vacuum
        siid: 8
        piid: 20
        value: false
  - icon: mdi:numeric-1-box-outline
    tooltip: Clean area once
    conditions:
      - entity: vacuum.roidmi_eva_vacuum
        attribute: custom.double_clean
        value_not: true
    tap_action:
      action: call-service
      service: xiaomi_miot.set_miot_property
      service_data:
        entity_id: vacuum.roidmi_eva_vacuum
        siid: 8
        piid: 20
        value: true
  1. On the top level add map id configuration, best instruction which I found so far is here:
internal_variables:
  mapId: 1234567890

Special thanks to:
@Jask747 - for many comments and ideas posted here.
@bouyssic - for testing instruction.

1 Like