Solved: Controlling Roomba 980

David Pritchard shared this idea 7 years ago
Under Consideration

If anyone has a Roomba 980 and wants to know how to control it with the Zipabox, I can explain how it's done.

Replies (15)

photo
1

I don't have it yet but I'm considering to buy one. I was actually thinking of how to do that, are you using IR Extender?

photo
1

No, the 980 isn't compatible with the such devices like earlier models. Instead it has its own wifi control via a smartphone app. But the smartphone app is pretty limited. You can set up a schedule, but it's inflexible. You can't say "every Monday, Wednesday and Friday, but not if it's a public holiday and I'm not working that day". Also, I found that the robot frequently failed to start, for no good reason. So you have to be babysitting it by checking the app to see whether it's really started when it's supposed to. And the final thing I don't like is not being able to control the time that the Roomba base is turned on (I have it plugged into a Z-Wave on/off socket) according to the current battery life.


So searching around I found that somebody had created a Node.js project called dorita980 which allows you to control the roomba via HTTP requests. I used the project to obtain the password and user name from the robot, which was fiddly, and then pieced together from forum posts and the code itself what HTTP commands I needed to operate the roomba.


Unfortunately there's another piece of the puzzle that you can't do with the Zipabox, and that's extract information via HTTP from the roomba (are you listening Zipato?). So I do that using a Google App script, which I sort of have to coordinate with my roomba scheduling. But it seems to be working quite well now. Basically I just query the battery percentage and the current state (stopped, cleaning...) and send them to a virtual meter.


Gory details available on request.

photo
2

Well, it sucks Zipato cannot use HTTP on zipato to GET status from roomba, probably is the same for several HTTP enabled devices.


If I decide to invest on the Roomba I will let you know. Thanks as always for sharing.

photo
2

Very good David. Maybe Zipato support can contact you and work with you to "officially" integrate this. It would be a very good addition, and developing HTTP get to a virtual meter directly would be a big step forward for many platforms to integrate easier into Zipato.


At least now that you have done this once, you should be able to do it easier with a lot of other devices.

Again, well done. Nice to see outside development happening.

photo
1

Yeah, I understand that there would be some complexity involved in defining how to extract the information from the data structures and place them in variables, but it seems to be a vital piece of the system. I've done the same to extract data from my Tado thermostat and from alternative weather services.

photo
1

The dorita980 project I referred to (not implemented by me!)


https://github.com/koalazak/dorita980

photo
1

Funny thing is that I have seen pics of the Tado thermostat at Zipato shows, so I thought it may have already been integrated. Obviously not.


What happens if the Roomba firmware updates?

photo
1

Nope!

Then, of course, we could be screwed. It's odd that they've chosen to make this Roomba so unhackable when previous models were easy to play with. Reflexive corporate control-freakery, I suspect.

photo
1

bumping this thread as the roomba 980 now has support for ITFFF

https://ifttt.com/irobot

photo
1

Well, i have neato so out of luck.

photo
1

Just spotted that Neato also does IFTTT - finally my vacum vill be controlled via the system.

photo
1

I neglected to mention here that the Roomba firmware was updated, and it *did* screw us. It completely broke HTTP support in favour of MQTT (I have no idea what to do with that, even though Zipato says it's now supported).

<rant>Companies obviously will claim the right to modify unpublished APIs at will, but wreaking havoc in this way really challenges what it means to own a product. </rant>


On the upside, the mobile app is now a good deal more reliable. The robot cleans at the appointed time, day in, day out.


The IFTTT support is interesting because, if it will reliably allow me to trigger the cleaning from the Zipabox, I can avoid it cleaning on my days off, which would be nice. If IFTTT works reliably, though, it will be the first time ever in my experience.


This is still inferior to the HTTP integration. I was able to use a Google App Script to get info on the robot's state, including the battery charge, and send it to the Zipabox.

photo
1

The IFTTT integration works. I was able to set the Roomba cleaning by triggering a switch in the Zipabox, then stop it and send it back to base. Now to see whether it works reliably.

photo
1

Hello,


Could you tell me how can we make it work ?


Regards

photo
1

You will need to use a virtual meter/sensor within Zipato, that will be triggered by IFTTT. In IFTTT you will need the Roomba channel and the webhooks channel. The webhooks channel is what will send the http command to Zipato.

photo
2

First, it's working very reliably. More than the scheduler of the Roomba itself, which bizarrely seems to change times or add/remove days by itself.


Second, my setup:


1. A virtual switch for each action I want the Roomba to do (Start, stop, pause...), plus an associated rule triggered with the switch. (Roomba1.jpg)

2. An HTTP request sent by the rule to IFTTT. The URL is the Webhooks URL used to trigger Webhooks events in IFTTT. (Roomba2.jpg) (Webhooks was formerly known as the Maker channel in IFTTT)

3. The WebHooks applet linked to my IFTTT account. I couldn't find a straightforward tutorial on this anywhere, but I think it's fairly self-explanatory when you do it. The end result is that they give you a key, and that key goes into a URL with this format:


https://maker.ifttt.com/trigger/<EVENT>/with/key/<BIGLONGWEBHOOKSKEY>;


For each "Webhooks" event you want to create, you simply assign a name to the event, and write it where it says <EVENT>. So:


https://maker.ifttt.com/trigger/StartRoomba/with/key/<BIGLONGWEBHOOKSKEY>;

https://maker.ifttt.com/trigger/StopRoomba/with/key/<BIGLONGWEBHOOKSKEY>;

https://maker.ifttt.com/trigger/PauseRoomba/with/key/<BIGLONGWEBHOOKSKEY>;

4. The Roomba service linked to my IFTTT account. I think you have to go to Services in the IFTTT menu and link it there.

5. An IFTTT applet for each action (Start, Stop....). Each applet is just:

if <Webhooks event received> then <run Roomba action>

The Webhooks event is just one of those URLs with the events from number 3. (Roomba3.jpg and Roomba4.jpg)


(in parts of IFTTT, Webhooks events are still confusingly referred to as "Maker events")

photo
1

try this tutorial for setting up webhooks with ifttt

https://zipato.infoserv.wiki/uncategorized/how-to-use-ifttt-with-zipato/

photo
photo
1

I'm having an issue setting up my triggers on IFTTT for the roomba. I have created my irobot account and registered my robots, downloaded the android app (irobot) and I'm able to control my roomba 980 while in local network and through the internet, however, when go to IFTTT I have succesfully added the irobot applet to my IFTTT account but when I try to create the trigger, while trying to select which robot to command it says "No options found", anyone else has had this issue?

photo
1

Hi Alberto


Did you link the Roomba service to your IFTTT account (by going to Services in the IFTTT menu) and link the WebHooks applet to your IFTTT account?

photo
1

Yes I have linked iRobot Service to my IFTTT account a few times (even deleted it and added again, I assume is the same account you create when you register your robot, created on https://store.irobot.com) and when I try to create the applet the problem is I cannot select a robot for the action. See Picture below.

b98ee6b34bee5225706807a0b8714880

photo
2

I found my issue, I downloaded the app from Mexico App Store which is different than US store, I downloaded the US one and logged in, then IFTTT appeared with robot options.

photo
Leave a Comment
 
Attach a file