iRobot Roomba i7+ Configuration using Rest980

This might be a RFC for the next release.

My Maintenance Entities do not change from "Entity doesn’nt exist. Create?" to a value when double clicked on it as it worked before.

Where do I find the clue to this problem?

What happens if you browse to the image directly in your browser?

Does your MQTT instance have discovery enabled?

My guess is that its not building the image correctly… are you sure its hanging and not just taking a reeeeeeeeeeeealy long time to build the image :thinking:

I’ve had this happen before, its nortoriously bad if you run the roomba native component

change made in master :+1:

1 Like
# mqtt discovery
mqtt:
  discovery: true

Try using MQTT Explorer to see if the topics are actuallty being generated when you click the button

Completely new to this. Can I run this on my mac and then connect remotely to my HA server via my lan? Is that how this works?

Yes, you can use this tool to connect to your MQTT Addon.

Thanks! You saved my day. :slight_smile:

1 Like

It feels like keeping on stalking this thread. I’m sorry.

I have these errors in my logs:

2021-02-08 13:36:56 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template("{% if state_attr('sensor.rest980', 'cleanMissionStatus')['cycle'] == 'none' and state_attr('sensor.rest980', 'cleanMissionStatus')['notReady'] == 39 %}
Pending
{% elif state_attr('sensor.rest980', 'cleanMissionStatus')['notReady'] > 0 %}
Not Ready
{% else %} {% set mapper = {
'clean' : 'Clean',
'quick' : 'Clean',
'spot' : 'Spot',
'evac' : 'Empty',
'dock' : 'Dock',
'train' : 'Train',
'none' : 'Ready' } %}
{% set state = state_attr('sensor.rest980', 'cleanMissionStatus')['cycle'] %} {{ mapper[state] if state in mapper else state }} {% endif %}")
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 353, in async_render
render_result = compiled.render(kwargs)
File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render
self.environment.handle_exception()
File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception
reraise(*rewrite_traceback_stack(source=source))
File "/usr/local/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise
raise value.with_traceback(tb)
File "<template>", line 3, in top-level template code
jinja2.exceptions.UndefinedError: 'None' has no attribute 'notReady'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 462, in async_render_to_info
render_info._result = self.async_render(variables, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 355, in async_render
raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: 'None' has no attribute 'notReady'
2021-02-08 13:36:56 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: 'None' has no attribute 'notReady'') while processing template 'Template("{% if state_attr('sensor.rest980', 'cleanMissionStatus')['cycle'] == 'none' and state_attr('sensor.rest980', 'cleanMissionStatus')['notReady'] == 39 %}
Pending
{% elif state_attr('sensor.rest980', 'cleanMissionStatus')['notReady'] > 0 %}
Not Ready
{% else %} {% set mapper = {
'clean' : 'Clean',
'quick' : 'Clean',
'spot' : 'Spot',
'evac' : 'Empty',
'dock' : 'Dock',
'train' : 'Train',
'none' : 'Ready' } %}
{% set state = state_attr('sensor.rest980', 'cleanMissionStatus')['cycle'] %} {{ mapper[state] if state in mapper else state }} {% endif %}")' for attribute '_state' in entity 'sensor.vacuum'
2021-02-08 13:37:04 ERROR (MainThread) [homeassistant.components.generic.camera] Error getting new camera image from Roomba: Cannot connect to host 192.168.0.210:3001 ssl:default [Connect call failed ('192.168.0.210', 3001)]
2021-02-08 13:37:04 ERROR (MainThread) [homeassistant.components.generic.camera] Error getting new camera image from Roomba: Cannot connect to host 192.168.0.210:3001 ssl:default [Connect call failed ('192.168.0.210', 3001)]
2021-02-08 13:38:19 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:19 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:19 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:20 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:20 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:20 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:23 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:23 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:23 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:24 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:24 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:24 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:24 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:24 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:24 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:25 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:25 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:25 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:25 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:25 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:25 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:26 WARNING (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Already running
2021-02-08 13:38:26 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Vacuum Maintenance Check: Error executing script. Error for call_service at pos 1: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'
2021-02-08 13:38:26 ERROR (MainThread) [homeassistant.components.automation.vacuum_maintenance_check] Error while executing automation automation.vacuum_maintenance_check: Error rendering service name template: TypeError: '<' not supported between instances of 'NoneType' and 'float'

Seems that something isn’t right. Can someone eloborate on that?

Seems like your sensor.rest980 is not returning a cleanMissionStatus attribue. Can you check in Developer Tools if this is the case?

Do you have the php-nginx image running and accessible on port 3001 ?

This maintenance check loops through all the sensors prefixed with sensor.vacuum_maint and comparing the value of timeout_timestamp in comparision to now(). You might need to check that these sensors actually contain this attribue? Are any still showing as “Entity does not exist” ?

1 Like

Something happened to my Roomba and it stopped being recognized by HA. Going through the roombapw process again and getting this in my logs when i try and follow the instructions.

Also in the “configuration” what number do i use for Firmware? Is it the 3 in i see in the iRobot app “Robot Software” 3.5.62.95? Or something else? Looks like Roomba hardware updated yesterday which caused this issue… Will block from internet next time.

> node ./bin/getpassword.js
Make sure your robot is on the Home Base and powered on (green lights on). Then press and hold the HOME button on your robot until it plays a series of tones (about 2 seconds). Release the button and your robot will flash WIFI light.
This step will continue in 10 seconds...
(node:18) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
node:events:353
      throw er; // Unhandled 'error' event
      ^
Error: connect EHOSTUNREACH 192.168.86.214:8883
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1138:16)
Emitted 'error' event on TLSSocket instance at:
    at emitErrorNT (node:internal/streams/destroy:188:8)
    at emitErrorCloseNT (node:internal/streams/destroy:153:3)
    at processTicksAndRejections (node:internal/process/task_queues:80:21) {
  errno: -113,
  code: 'EHOSTUNREACH',
  syscall: 'connect',
  address: '192.168.86.214',
  port: 8883
}
npm notice 
npm notice New minor version of npm available! 7.0.15 -> 7.5.3
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.5.3>
npm notice Run `npm install -g [email protected]` to update!
npm notice 
npm ERR! code 1
npm ERR! path /usr/src/app
npm ERR! command failed
npm ERR! command sh -c node ./bin/getpassword.js
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-02-12T16_43_31_438Z-debug.log

Is there some way to inform when the bin is full?

As noted in GH, this is sorted.

Yeah, you can just make a new automation similar to this -

automation:
  trigger:
    platform: state
    entity_id: sensor.vacuum
    attribute: bin
    to: "Full"
  action:
    service: !secret vacuum_notify
      data_template:
        title: "{{ state_attr('sensor.rest980', 'name') }} requires your attention"
        message: "{{ state_attr('sensor.rest980', 'name') }}'s bin is full."

Hi All. Great work.

I need suggestion with debug of map not getting populated.

It is running ok with status/mode/battery and also working for room clean start and stop function.
The map is ‘grayed’ and when pressing the picturecard after completion, I only get the black original floor.png with following information:
Started: 01:00:00 1970-01-01
Status: Running

In the /vacuum folder I have an updated vacuum.log file with coordinates and finish statement as shown below with header and timestamp:

(-32, 0, 50)

(344, -174, 0)
Finished

Any suggestions where to start looking for problem with not drawing the map,

Is the vacuum.log file reachable using the URL in the top of the image.php file?

Is there a latest.png file in the /vacuum directory? if so - try deleting this (it should be deleted on each clean commencement, but perhaps something isnt working correctly)

Hi Syrius,
Thanks alot.
The vacuum.log created ok, but the file was not reachable using the URL in the image.php file.
Map is now updated after correction of URL. Thanks.

1 Like

Hi all
Thanks for this great integration. All works very smoothly. I have one question which I thought I asked before tinkering around endlessly. Up to now, I have used the native app’s schedule. I now wanted to switch to the schedule I have seen in your integration.

I have seen in your vacuum.yaml file, you provide two schedules which also show up in the automation. Any details on the config items for the schedule? I have tried to turn it on, but it would not run for now. Not sure if I need to change the config elements in the yaml file (apart from days and hour to run, obviously).

Thanks.
Regards
Patrick

[Please discard this, just scrolled up after posting and it’s been discussed few posts above]

I got all components installed successfully.
However I’m having hard time figuring out lovelace part, I can’t seem to be able to vacuum to overview window.
Can someone please point to how-to? As an example I tried animated weather card from HACS and it worked but couldn’t figure it for this. (I’m still trying t to understand all aspects of HASS IO and HACS)

BTW I’m using HASS IO on raspberry pi

1 Like

I have added a new section in the FAQ to (hopefully) answer this for you!

Hi Syrius,

What a great integration, could you help me out i installed the _2 repo’s for a second device but can’t get it to work.
A changed al vacuum in _2 to braava but home assistant messes up the 2 device into one.

do you have a guide how to setup the second repo properly?

Thanks David