Hi all, has anyone run the rPI support server stuff in a docker container, or is that even possible? If so, then can you point me to the instructions on how to do that? Thanks!
Looks like the rest980 dev has created a docker image: Docker
docker pull koalazak/rest980
I'd imagine the setup/config within the container, once started, is similar? I didn't read the whole page.
Your ears must've been ringing, I was working with this all morning and was gonna post an update. I found that and worked through a few issues and finally got it going. Thanks for replying.
For anyone using Docker on an rPI with Portainer. Using the image direct from the git didn't work, I would get an 'exec format error'. Come to find out after some digging that the image may not be built for an rPI platform. I used Portainer and created a new image from the Dockerfile located in the git, using the git URL not a copy/paste of the docker file. Once I got that built on the platform it fired right up. Made a container for each Roomba (I have 2) set the ports to 3000 and 3001 , loaded this app, and the devices came right up.
Hi @dkilgore90, I've got the devices up and running and I've extracted the map and region information using the method described in the Rest980 git. I'm unsure how to get the map ids into the driver or how to use the cleanroom function. It didn't look like the driver extracted the map ids or anything. I started with using just the region ID only but based on what I read here I've created a full JSON command in the format described in the link in post 74. I get an error that Text must not be null or empty. I'm using this format just to test 1 room (with my map ids). Any ideas or help would be appreciated. Thanks
{
"ordered": 1,
"pmap_id": "ABCDEFG123456FGKS789",
"regions": [
{ "region_id": "4", "type": "rid"}
],
"user_pmapv_id": "190917T20125Z"
}
Can you elaborate on the error you're seeing? Is it in the hub UI/App page? Or in the logs? I don't immediately see any issue with the JSON you posted...
Yes, sorry, I put this JSON in the 'cleanroom' section of the device and the error I received was in the Hubitat logs. I had the roomba vac the 'hallway' and from that I was able to get the map and region IDs.
This is what I put into the cleanroom section.
{
"ordered": 1,
"pmap_id": "allElNEOzqAnkgUxc",
"regions": [
{ "region_id": "4", "type": "rid"}
],
"user_pmapv_id": "230718T133851"
}
This is the error I get in the logs...
I removed the 'tabs' and 'spaces' and put this JSON is one, monolithic line and it made no difference.
Hmm - reviewing the involved flow, maybe it is failing because no "default rooms" have been specified under the i7/s9 options in the App page? Can you confirm if this has / has not been populated?
If empty, try filling this for now with just an empty JSON object, e.g. {}
I believe you got it. This is what I had setup...
I've changed it to this,,,
and you are correct, I took the same JSON format that had failed previously and it worked fine after making this change. I'll check out the other rooms and let the group know if there are any issues.
Thanks for the great app and support!
Hello,
I managed to get the Pi working with Hubitat and my Roomba connected. I just want to know if its possible to run the device commands for the Roomba via a Tile in the dashboard? The Roomba Tile that is in the step by step guide is only an attribute so its not actionable. I don't plan on using schedules and would prefer to just be able to press a tile and have the Roomba clean or a tile to have it dock. Is this possible?
Some different options in this regard, depending on how specific you want it to be.
I have a dashboard where I placed the attribute tile for the Roomba, then directly on top of it (same grid location), a switch tile for the Roomba. Noting the tile id (in my case, 54), I added the following custom css:
#tile-54 .tile-contents, #tile-54 .tile-primary {color: rgba(0, 0, 0, 0); text-shadow: none !important;}
#tile-54 .tile-secondary {color: rgba(0, 0, 0, 0); text-shadow: none !important;}
#tile-54 .tile-title {color: rgba(0, 0, 0, 0); text-shadow: none !important;}
I may have also updated the color settings for a switch tile.
From the iRobot Scheduler App page in HE, you can set the "off" behavior to "dock"
Alternatively, you can create virtual buttons or switches in Hubitat, and map them to desired behaviors via Button Controller, Basic Rules, Rule Machine, etc. Then create tiles on your dashboard for those buttons.
Thanks for the reply. Not sure why I didn't see that off behavior setting when I was initially configuring the Roomba. Is there a simple way to change the "on" behavior to "clean room"? Or would that be where the virtual buttons or switches come into play?
Yes, this is under the i7/s9 options, along with defining the default rooms data to be used for this action.
You of course don't have to layer the attribute/switch tiles as I did, and can set them up individually - stacking them just gave me the look I wanted.
Curious if anyone has figured out a simple/elegant way to know if the vacuum has completed cleaning in situations where the robot requires mid-cleaning docking to charge. I had been using Switch=Off as the cleaning-is-done event, but this driver produces an Off event even when the robot is just taking a breather to, ahem, relieve itself.
Anyone solved this? I can't figure it out for the life of me -- so my hacked solution is to wait a couple hours to make sure it doesn't start again and call that done. It works, but it's painfully slow.
Would love other ideas from this oh-so-smart community.
My guess is that we can derive such a state by combining a couple of the many data points reported by rest980 - maybe the cycle and phase? If you can capture the /api/local/info/state
data from your rest980 server - during a normal charge, and a mid-cycle charge, (and maybe mid-cycle while running), that would help. I'll collect some data from my own robot to see what I can find.
Super sounds good. Unfortunately this is at our vacation home and we leave in the morning -- won't return until January. I'll be sure to follow-up with you around then if the community hasn't figured out a solution by that point.
Sorry to be so slow. And appreciate the help just the same!
I've noticed today that the "Last Activity" state doesn't seem to be correctly updating on my Braava Jet M6. It's correct in the iRobot app history, but doesn't seem to pull through to the iRobot Scheduler. The device information in the scheduler is also reporting "Total Time Cleaning" as "null hours and null minutes". Is there a possibility of rectifying this please? Happy to help in any way I can.
@evojim -- I took a peek, and currently the Last Activity attribute is only updated if the roomba/braava is activated from Hubitat via a device command (on
, start
, cleanRoom
). I'll look into dynamically updating this based on the polling data pulled from rest980 -- presumably anytime it is "running" would be counted as activity, so we would just mark the last timestamp of such a state?
For Total Time Cleaning, I see that I added a comment in the code last year that the attribute from rest980 that is used to populate this no longer works. In that comment I did note a potential alternative, will add this to the list.
I've been sitting on changes for @mluck's use case for a month... will try to push that out along with some of your items this weekend.
Sounds perfect, thanks very much I only noticed because I set up a reminder in webcore based on “last activity” and manually started the mop from the iRobot app to update its state.
I have my neato botvac’s activate a when we go to bed, or or if the hub changes to away mode, and the mop automatically starts once the botvac finishes, turning lights on for the duration of its cycle if it’s night mode, providing that the tank is present and full, but I quite often lose track of how long it’s been since the floor has been mopped lol, hence the need for a reminder to fill and fit the tank
New app/driver versions 2.0.0 released with the above described changes -- so on your next cycle it should update Last Activity, regardless of whether it was triggered from HE or the iRobot app.
@mluck this includes switch value changes as well -- should remain on for mid-cycle pauses/charging, and only transition to off when the cycle fully completes.