iRobot Roomba i7+ Configuration using Rest980

HVAC filter! Great idea! Will be making one of those as soon as I can!

1 Like

Using diffing tool like Beyond Compare is great for these side by side comparison changes. If you are a developer its a life saver to have a tool like this one for everyday use (at work or home)
I use it over samba share for home assistant, but depending on the SSH server you can also use Beyond Compare over ssh but I think that’s the Pro version but not sure anymore.

unfortunately they have sale only a few times a year.

yeah sorry :frowning: - i changed tact and moved everything to attributes so it works easier within the custom card - and keeps it all contained :slight_smile:

i felt the indiviudal sensor method was a little lazy :yawning_face:

hopefully its only a one-time change! :smiley:

Yeah absolutely! I have a full cleaning schedule on a separate view which is super handy!

I modified the original check-button-card to add a visibility timestamp attribute which can be matched via an automation (which I use in my code).

this is used to update the custom card icon in the top corner for a quick glance if there is outstanding maintenance :+1: - can possibly even add an extra action to send a notification :wink:

Is the square meters cleaned “lifetime” or “last job”?

this one :slight_smile:

you can get last mission from
state_attr('sensor.rest980', 'cleanMissionStatus')["sqft"]

I’m trying still to get my Roomba 980 to work. Thanks to: @ddppddpp I’ve managed to get the map and everything, but as I can see the automation isn’t triggered when the robot starts to clean. Only several Stuck lines were in vacuum.log. Then I have write manually some coordinates to vacuum.log file and I can see on hassio_ip:nginix_port/image_dev.php that roomba is drawn on those coordinates. Then I have examined vacuum.yaml - automation part and I have seen that sensor.vacuum.cycle is all the time: Unknown and this is the trigger for automation part (writing to vacuum.log). I have seen that sensor.vacuum.phase is present and changing so I put this as a trigger in all automations (in the original vacuum.yaml it was only vacum.phase for stuck entries and that’s why I have only stuck entries in my vacuum.log). As I can see from automation part vacuum.phase doesn’t have Ready state so there will be no trigger for sending the proper notification to vacuum.log that the job is finished nor the image will be generated. If someone have the correct automation part for Roomba 980 to share please…
Or I could set if none of the states is present thed Roomba is Ready like in sensor.vacuum.cycle part??
Best regards

Hi @SuperMario,

I think the 980 has a cycle called ‘quick’ instead of clean which is what is breaking your setup.

I have added this in the updated version on the dev branch - otherwise if you add another mapper entry in your excising vacuum.yaml which maps quick to Cleaning (same format as clean to Cleaning) this should sort your issue.

Though I would recommend implementing then dev version as it’s much nicer :wink::rofl:

OK thanks for pointing out. It’s very strange that sensor.vacuum.cycle is all the time: Unknown. OK for clean part should be unknown but for all else it should change the state, right?
I will try to change it after the cleaning job finishes, and I will use dev branch :wink:

Update:
After finishing the cleaning job it seams that vacuum.cycle is present and now is ready (i didn’t change anything yet )
image so the state of this sensor isn’t the whole time unknown, that’s good news :smiley:

In the vacuum.yaml file I have mappers which converts the Roomba states into more friendly names. If the entry doesn’t match, then it shows as Unknown. I might actually update the code to just show the actual state so it can be flagged and fixed!

One more thing… Now when I have vacuum.log, and I have my floor.png I’m trying to scale the vacuum position to match my floorplan, but without any success. If I change the map width and height the whole image is resized not only the map of the robot. Also rotating the image it’s rotating the whole thing - floor.png and robot cleaning map. Is there a way to just rotate cleaning map and scale it without change the size and position of base floor.png layer.
As you can see on next picture:


I need to rotate the cleaning map for 180 deg and then rescale it… somehow?!

@SuperMario Perhaps try - rotate/flip the Roomba cleaning lines within image_dev.php (and image.php) until your happy with the orientation. then edit your floor.png file the reverse of what you did to the image_dev.php so that when they are combined they line up.

It’s not the easiest I know… but I haven’t had time to pull about the image file to work this out (I didn’t write it!)

Grab the new image.php on the repo - I’ve fixed the flip/rotate (for 90/180/270) for the vacuum lines only. :smiley: (Note: intermediate rotations such as 280, still WIP!)

I’ve also deleted the image_dev.php file - you can achieve the same result by deleting the latest.png file in the vacuum directory
(or running http://<ip or fqdn of docker host>:<nginxphpport>/image.phpclear=true)

@pnakashian @austech360 - FYI this might affect your map if/when you update the image.php file

@SuperMario I didn’t realize you’re using a 980 (like me). The ‘quick’ cycle should be enough to get your vacuum file populated.
For the floormap.png image I found that resizing and rotating in an image editing app gets the job done.

Yes, I’m using Roomba 980 :smiley:
Ok I can rotate, rescale floor png, but I was under impression that parameters in image_dev and image.php will do that automatically. No problem.

My pmap ids look different than the samples supplied.

When using these, and trying to start a clean job from hass to do say, “bedroom”

The roomba says in her lady voice ‘Please check app for help’ then in the irobot app it says smart map problem.

vacuum_pmap_id: wmpDUyfCS4WnQyJ75H2mRQ
vacuum_user_pmapv_id: 200212T223111
vacuum_kitchen: '{"region_id":"8","region_name":"Kitchen","region_type":"kitchen","type":"rid"}'
vacuum_hall: '{"region_id": "2","region_name": "Hall","region_type": "foyer","type":"rid"}}'
vacuum_living_room: '{"region_id": "3","region_name": "Living Room","region_type": "living_room","type":"rid"}'
vacuum_bedroom: '{"region_id": "4","region_name": "Bedroom","region_type": "bedroom","type":"rid"}'
vacuum_bedroom2: '{"region_id": "24","region_name": "Entry","region_type": "Bedroom 2","type":"rid"}'
vacuum_master_bedroom: '{"region_id": "25","region_name": "Master Bedroom","region_type": "master_bedroom","type":"rid"}'
vacuum_master_bathroom: '{"region_id": "12","region_name": "Master Bathroom","region_type": "master_bathroom","type":"rid"}'
vacuum_utility: '{"region_id": "26","region_name": "Bathroom","region_type": "utility","type":"rid"}

These also have a “type”:“rid” at the end where your samples did not. Thoughts anyone?

Navigating to http://192.168.1.10:8123/local/vacuum/image results in my browser downloading a php file. That’s probably not right… I put the vacuum directory with the php stuff inside of the www folder of hass.io

There really doesn’t seem to be any directory tree to this. And probably not enough documentation. I’d like to see a proper wiki for this project! I can tell it’s not a LOT of potential, it’s just a bit hard to get going.

Hi @austech360

I have remapped our apartment and my entries now also have rid, will amend the samples

You have an extra bracket here which will likely be causing your issues (hall entry)

HA / Hass does not have native support for PHP. You need to use the php-nginx addon which is able to render this file. Having vacuum in www is fine - when deploying the php-nginx addon you will need to amend config entity for path.

You are also missing a quote on the end of this line (utility entry)

Just updated all my stuff to your dev config and it looks good!

Now I am just looking for an easy way to track which rooms have been cleaned.

@drjared88 Actually this might not be that hard! Using multiple entity row for the input Booleans displaying last-changed ! :+1: