iRobot Roomba i7+ Configuration using Rest980

Hi @Syrius, we’re getting closer!!!

I now see the response for info/state, and I’ve set up the secrets, etc.
When triggering a room-clean from LoveLace, I see the following error in the Rest980 log:


POST //api/local/action/cleanRoom 404 3.601 ms - 136
Error: Endpoint not found.
    at /usr/src/app/app.js:63:13
    at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
    at /usr/src/app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
    at /usr/src/app/node_modules/express/lib/router/index.js:635:15
    at next (/usr/src/app/node_modules/express/lib/router/index.js:260:14)
    at jsonParser (/usr/src/app/node_modules/body-parser/lib/types/json.js:101:7)
    at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
    at /usr/src/app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/usr/src/app/node_modules/express/lib/router/index.js:174:3)
    at router (/usr/src/app/node_modules/express/lib/router/index.js:47:12)
    at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
    at /usr/src/app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
    at authHandler (/usr/src/app/app.js:23:48)

Any idea?

You have an extra / at the front. It should only be one, not two

Thanks again @Syrius - but if this is the Log entry after I clicked the button in LoveLace, why would the POST call contain it? Where in the configuration do you think I made the mistake to have the LoveLace button click result in a // ?

This is passed from the vacuum_action secret, can you check and verify this?

I have just released new versions of both ha-rest980-roomba and the lovelace-roomba-vacuum-card

NOTE: BREAKING CHANGES IN LOVELACE CARD

  • vacuum_action has been renamed to robot_action
  • vac_states has been renamed to robot_states

The lovelace card now has native support for Braava :partying_face: along with the inclusion of the clean_mode attribute (which needs to be renamed from clean_passes in vacuum.yaml)

I have recently purchased a Braava m6, so have been able to properly prepare the configurations and published them. In my particular apartment, the tiles areas are not joined, so they are treated as separate maps by the Braava.

This has lead to the development of the Multi-Floor solution! You can find further details on GitHub, and a section in the FAQ.

Reach out for any issues, and please raise an issue/PR if I have missed something

Cheers :beers:

1 Like

@Syrius I’m not able to select only a zone and hit the clean rooms button. There is still the lock.

@Daniel76, the lock in lovelace is reflected by the state of group.vacuum_rooms. Make sure all your input_booleans representing your rooms are in this group.

When clicking the clean rooms button, I get the following in my logs:
2021-07-31 00:09:24 WARNING (MainThread) [homeassistant.components.rest_command] Error. Url: http://192.168.5.120:3002/api/local/info/action/cleanRoom. Status code 400. Payload: b’{\n “ordered”: 1,\n “pmap_id”: “16kzuDeVTsCaZSZTacphbA”,\n “regions”: [\n unknown\n ]\n}’

this is what my secrets file has:
vacuum_action: http://192.168.5.120:3002/api/local/info/action/

The error shows that regions is unknown, which means it’s not populating correctly.

Can you check item 12 in the FAQ which explains how rooms are selected.

Let me know if this dosent help :+1:

I got this working in about 30 minutes. The simple Windows exe for getting the initial tokens helped significantly, and from there it was pretty plain sailing.

One hopefully easy question.

Is there an easy way to send the Vacuum home? I am trying to setup both a button and an automation which can just send the vacuum home. The automation will fire if someone comes home, it stops what it is doing and just goes back to its base.
It would also be good if there was a button I could put separately to send it home (I know it is in the Lovelace card). I have an “emergency stop” page which allows most things to be stopped or turned off from a single page.

How do I update to this version without breaking my install?

I’m having issues with my Braava m6 now after updating. When I select rooms to clean it immediately fails, the Braava dings and says “See the app for help”. I then get notified “Mop ended the job stuck.” Not sure what may be causing this. I verified that the region id’s are the same as before and believe i’ve updated every section appropriately and have tried a soft reset on the mop. Any idea where to look?

Thanks

this is how you can trigger it from Dev Tools, you can use this in your code elsewhere -
note: if your roomba is already docked (with clean base) this will also trigger the evac.

service: rest_command.vacuum_action
data:
  command: dock

to get the robot to stop, just replace dock with stop in the above.

unfortunately its a manual updating process, of reviewing the changes, possibly using vs code and seeing how it compares with your deployment.

are you getting any errors in the home assistant log?

Here were the errors I was receiving:

2021-08-02 19:04:07 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('IndexError: list index out of range') while processing template 'Template("{{ state_attr('sensor.rest980_2', 'pmaps')[1] | regex_findall_index("{'([\w\-]+)': '\w+'}") }}")' for attribute 'pmap1_id' in entity 'sensor.mop'
2021-08-02 19:04:07 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('IndexError: list index out of range') while processing template 'Template("{{ state_attr('sensor.rest980_2', 'pmaps')[2] | regex_findall_index("{'([\w\-]+)': '\w+'}") }}")' for attribute 'pmap2_id' in entity 'sensor.mop'
2021-08-02 19:04:07 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('IndexError: list index out of range') while processing template 'Template("{{ state_attr('sensor.rest980_2', 'pmaps')[3] | regex_findall_index("{'([\w\-]+)': '\w+'}") }}")' for attribute 'pmap3_id' in entity 'sensor.mop'
2021-08-02 19:05:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: list object has no element 1 when rendering '{{ state_attr('sensor.rest980_2', 'pmaps')[1] | regex_findall_index("{'([\w\-]+)': '\w+'}") }}'
2021-08-02 19:05:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: list object has no element 2 when rendering '{{ state_attr('sensor.rest980_2', 'pmaps')[2] | regex_findall_index("{'([\w\-]+)': '\w+'}") }}'
2021-08-02 19:05:07 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: list object has no element 3 when rendering '{{ state_attr('sensor.rest980_2', 'pmaps')[3] | regex_findall_index("{'([\w\-]+)': '\w+'}") }}'

Realized that the mop.yaml includes pmap in the Input Text section while the vacuum.yaml does not so I updated my config with the proper pmap_id received via /api/local/info/state

Although I still am getting those errors it seems to be working again as expected.

  mop_pmap_id:
    name: Mop PMap
    initial: !secret mop_pmap_id

@Midivir, you can remove the attributes for pmaps 1, 2 and 3 (leaving 0) as I have this specifically for the 4 different floor plans i have at home (given my apartment tiled areas are seperated using carpet)

Thanks. That did the trick. Was up and running with the new card in five min.

1 Like

Hi Jeremy,
I have a problem with starts map in roomba vacuum. When i get prepared all files accorind in your manual i have error

GET /image.php 404 2.512 ms - 136
Error: Endpoint not found.
    at /usr/src/app/app.js:63:13
    at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
    at /usr/src/app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
    at /usr/src/app/node_modules/express/lib/router/index.js:635:15
    at next (/usr/src/app/node_modules/express/lib/router/index.js:260:14)
    at jsonParser (/usr/src/app/node_modules/body-parser/lib/types/json.js:110:7)
    at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
    at /usr/src/app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/usr/src/app/node_modules/express/lib/router/index.js:174:3)
    at router (/usr/src/app/node_modules/express/lib/router/index.js:47:12)
    at Layer.handle [as handle_request] (/usr/src/app/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/usr/src/app/node_modules/express/lib/router/index.js:317:13)
    at /usr/src/app/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/usr/src/app/node_modules/express/lib/router/index.js:335:12)
    at next (/usr/src/app/node_modules/express/lib/router/index.js:275:10)

But from http://192.168.1.28:3002/map it is work

Hi @ajoter,

The map you are seeing is provided by the rest980 container which you are using port 3002 for.
You will need to update the vacuum_map secret to use the port you have assigned to the php-nginx container (which is usually 3001)

Thanks for your answer. I changed the port in

vacuum_map: http://192.168.1.28:3003/image.php

After finished cleaning, in catalogue vacuum , i found file with map 1628669054.png


but in roomba tabs maps not view. What can i do?

Camera.roomba points at - input_text.vacuum_map

Which points at !secret vacuum_map

Check in dev tools that these are correct, and perhaps try restarting your HA instance and clearing your browser cache for good measure.