[Under New Management] iRobot Scheduler

Kid's named ours Mr. Sucky.

1 Like

Maybe I'm dense, but where do you get this app? I can't find a link to anything anywhere but this post.

My denseness confirmed. It was right there but my brain parsed it as an inserted web page ad and I just skipped over it. Thanks!


having rest980 folders in /share made the difference. Hope it helps someone.

Hope that someone can help me. I don't have much experience with Pi. But I have been able to successfully add 2 of my 4 roombas.

When working with the other 2 roomba I can't seem to get them to open the port (3002) listed in the default.json. I ran the start service command below and then a status command stating that

sudo systemctl start roomba21.service
systemctl status roomba21.service

โ— roomba21.service - Roomba Service
Loaded: loaded (/etc/systemd/system/roomba21.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2020-07-04 15:56:58 BST; 957ms ago
Process: 8378 ExecStart=/usr/local/bin/npm start (code=exited, status=200/CHDIR)
Main PID: 8378 (code=exited, status=200/CHDIR)

If I
sudo systemctl enable roomba21.service
and then
systemctl status roomba21.service
I get this:
โ— roomba21.service - Roomba Service
Loaded: loaded (/etc/systemd/system/roomba21.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2020-07-04 15:56:58 BST; 5min ago
Main PID: 8378 (code=exited, status=200/CHDIR)

Jul 04 15:56:58 PiHoleSecondary systemd[1]: roomba21.service: Service RestartSec=100ms expired, scheduling restart.
Jul 04 15:56:58 PiHoleSecondary systemd[1]: roomba21.service: Scheduled restart job, restart counter is at 5.
Jul 04 15:56:58 PiHoleSecondary systemd[1]: Stopped Roomba Service.
Jul 04 15:56:58 PiHoleSecondary systemd[1]: roomba21.service: Start request repeated too quickly.
Jul 04 15:56:58 PiHoleSecondary systemd[1]: roomba21.service: Failed with result 'exit-code'.
Jul 04 15:56:58 PiHoleSecondary systemd[1]: Failed to start Roomba Service.

And If I try journalctl _PID=8378 I get
Jul 04 16:06:02 PiHoleSecondary systemd[8378]: roomba21.service: Changing to the requested working directory failed: No such file or directory

Jul 04 16:06:02 PiHoleSecondary systemd[8378]: roomba21.service: Failed at step CHDIR spawning /usr/local/bin/npm: No such file or directory

But the /rest980-21 directory is there and I even CHMOD 777 the directory as well.

not sure how to move forward. I have double checked my rest980 working directory which is /rest980-21. Get the same results. Here is my successful roomba.service reutls for my 1st unit. Which is what I used to create the 2nd unit without issue but not so for 3 and 4.

โ— roomba.service - Roomba Service
Loaded: loaded (/etc/systemd/system/roomba.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-07-04 01:41:14 BST; 14h ago
Main PID: 334 (npm)
Tasks: 23 (limit: 2077)
Memory: 55.0M
CGroup: /system.slice/roomba.service
โ”œโ”€334 npm
โ”œโ”€505 sh -c node ./bin/www
โ””โ”€507 node ./bin/www

Jul 04 16:32:33 PiHoleSecondary npm[334]: GET /api/local/info/state 200 102.903 ms - 1933
Jul 04 16:33:03 PiHoleSecondary npm[334]: GET /api/local/info/state 200 102.949 ms - 1933
Jul 04 16:33:33 PiHoleSecondary npm[334]: GET /api/local/info/state 200 102.037 ms - 1933
Jul 04 16:34:03 PiHoleSecondary npm[334]: GET /api/local/info/state 200 101.859 ms - 1933
Jul 04 16:34:33 PiHoleSecondary npm[334]: GET /api/local/info/state 200 103.094 ms - 1933
Jul 04 16:35:03 PiHoleSecondary npm[334]: GET /api/local/info/state 200 102.026 ms - 1933
Jul 04 16:35:33 PiHoleSecondary npm[334]: GET /api/local/info/state 200 102.806 ms - 1933
Jul 04 16:36:03 PiHoleSecondary npm[334]: GET /api/local/info/state 200 102.842 ms - 1933
Jul 04 16:36:33 PiHoleSecondary npm[334]: GET /api/local/info/state 200 101.620 ms - 1933
Jul 04 16:37:03 PiHoleSecondary npm[334]: GET /api/local/info/state 200 103.102 ms - 1933

Please let me know if there is something that you can think of. Sorry for the updates.

Trying to get this going on a Mac mini. Does anyone know how to make it start as a service on a mac instead of PI?

Also when I save the app I get this in the log and then it just spins forever and never completes

EDIT: never mind got in running on my synolgy NAS which is better for me anyway (one less device)

Thanks @plantucha for posting this

As of 7/25/2020 continued development of iRobot Scheduler has ceased. If another developer would like to continue these efforts then please fork the GitHub and also follow the licensing constraints and ownership of the code and intellectual property within the license.

:sob: :sob: :sob:


Appreciate your work on this app. It has worked flawlessly for me. Hope someone doesn't come along and break your great work.



1 Like

I've been building on this recently for my own purposes - integrated the cleanRooms capability for i7/s9 roombas, currently this uses a single "default" regions JSON specified in the App preferences/inputs. iRobot/Roomba at master ยท dkilgore90/iRobot ยท GitHub

I'm happy to provide some community support moving forward - not sure if the repo target change will cause issues with those using the 3rd-party Hubitat Package Manager (I don't use it myself)?

@aaron if you don't mind double-checking that I've properly followed your licensing constraints / appended to ownership :slight_smile:


You are fine. Hope you can continue carrying the torch!


Get this when I try to import the raw code from URL or pasting in everything.

This is great news! I had been hoping this would come along soon. Glad test it out when it is ready. I have several robots that are multi-room capable and would love to free myself from the iRobot app scheduling dependencies and let it all be handled with the Hubitat.

Oops - missing a comma at the end of line 80. Will fix.


@dkilgore90 What is the format for the Input default rooms for cleaning field?


It utilizes the same JSON as the dorita980 method args: GitHub - koalazak/dorita980: Unofficial iRobot Roomba and Braava (i7/i7+, 980, 960, 900, e5, 690, 675, m6, etc) node.js library (SDK) to control your robot

For convenience, if the roomba in question only has 1 map saved, it will use that pmap_id and user_pmapv_id, without needing to specify them in the default rooms JSON -- otherwise these are mandatory to correlate to the proper map.

As an example, mine is currently set to

{"regions": [{"region_id":"20", "type":"rid"}, {"region_id":"22", "type":"rid"}]}

to clean two of the front rooms in my house.

@pmusselman for now you have to change the preferences input if you want to change which rooms are to be cleaned -- but it should be a small leap to allow the command to be called with a JSON arg each time - which would allow different rooms to be cleaned via RM triggers, etc. The next step would be different sets of rooms per-schedule. On my to-do list, but not yet coded...

1 Like

Seems a recent irobot update may have broken this convenience feature - it seems to overwrite the creation date of the map with the date it was last used - this was embedded in the user_pmapv_id. Simple workaround to include these IDs in the default regions JSON.

1 Like

I'm new to the community, so this might be obvious to others. But when I see deprecated in the title, I'm more hesitant on using it. Is there a better approach to connecting Roomba to Hubitat, or is this all we have at the moment?