Adding WiFi To A Roomba


There are two very clear signs that I'm getting old. The first is that I bought a domestic robot to help me with the chores. The second is that, rather than spending my evenings and weekends reading decades old forum postings, reverse engineering serial interfaces, and soldering components together - I plunked €99 on a bit of kit which "just works".

Enter the Thinking Cleaner - it's a replacement faceplate for Roombas which adds WiFi and a sweet hackable API.

This post looks at how the unit performs - its good points and its flaws - and how the API works.

Let's take a step back. The Roomba 620 is iRobot's entry level vacuum cleaning robot.
Unlike the more expensive models, the 620 doesn't have any scheduling - you have to manually set the Roomba to clean. The Thinking Cleaner is a cheap way of adding a brain and extra connectivity to an otherwise simple robot.

A few days after ordering, the package arrived from the Netherlands.
Thinking Cleaner Box

The instructions say that you should carefully remove the cover from the Roomba. To be honest, I was a little nervous about this. The plastic feels fragile and tightly clipped on. That said, it pealed off easily without breaking.

Naked Roomba

The whole process really was as quick as this video demonstrates :

The replacement cover is delightful gunmetal grey - I think it looks better than the white original. Although the WiFi unit protrudes from the surface, it doesn't seem any taller than the Roomba's sensor.

Incidentally, flipping the cover over reveals the WiFi unit. I may be wrong, but the casing looks 3D printed.

3D Printed

The cover also has a sticker with the MAC address on it.

Clipping the new cover on took seconds. Resulting in a little flashing LED on the unit.

Flashing Light

Set Up

Ok, here's where things went a little awry. The Thinking Cleaner needs to connect to a WiFi network. To set this up, you need to connect to the Roomba via an app. When I initially installed it, the Android App didn't yet work on Lollipop. I had to dig out an old Android tablet to get it connected. Literally two hours afterwards the Android app updated - whereupon it worked flawlessly with Lollipop!

The unit only works on 2.4GHz WiFi - not a huge problem. If you're in the US, the unit won't work on channels 12 and 13.

The App is simple enough to use - allowing you to set the Roomba cleaning, drive it yourself, set up a schedule, and get alerts from the cleaner.

Thinking Cleaner Android App-fs8

It will also send you notifications when something interesting happens to your robot.

WiFi Roomba In App Notifications-fs8

The Web Interface

The app doesn't tell you the IP address which the Roomba is using. This is an annoying oversight. You'll need to pop on to your WiFi router and see what it has been assigned.

There is a basic web interface but there is no security available - not even a username and password. Any one who has access to your your WiFi network will also have full access to your Roomba. Make sure that when any friends come round, you give them access to a guest WiFi network - and try to make sure that your WiFi and LAN are as secure as possible.

There is currently no way to set a user name and password.

The web interface is basically fine - it doesn't look brilliant, and the colours are a bit intense - but it allows you to control the Roomba and set up scheduling.
Thinking Cleaner Web Site-fs8

It also works well on mobile web browsers :
Thinking Cleaner Mobile Web Site-fs8

That's pretty handy if you're inside your house - but what if you want to get notifications or control it while you are away?

Remote Access

In order to access your device when about and about, you need to sign up for a free ThinkingSync. That's a safer and easier option than teaching users how to set up Port Forwarding and getting them to punch holes in their firewalls - they have a detailed privacy page which explains their reasoning.

To connect to your Thinking Cleaner when you are not at home without modifying your home network settings, you need a (free) account on Thinkingsync server. Thinking Cleaner will periodically contact the server and check for updates. Maximum delay is approximately 1 minute. You can log in or sign up here.
For push notifications on your smartphone you need an account. Without an account you can only use the app when your are connected to the same wifi network as your Thinking Cleaner.
Firmware updates are only possible when logged in to your account.
Documentation

There are two main problems I have with this :

  1. Availability. I've no control over the uptime of their server. If it breaks, or they decide to stop offering the service, or want to charge for it - I'm out of luck. They have indicated that they're willing to allow people to run their own servers. I'll have to give that a go!
  2. Registration is not done over https! I don't like sending passwords in clear text which then allow access to a robot operating inside my house! Call me a paranoid hacker - but it just doesn't feel safe.

I think it's time to put my Roomba on it's own VLAN!

There is only one account available per Roomba. I guess this makes sense - although I'm not quite sure if I can have cleaning alerts sent to my phone, while my wife's phone only gets low battery alerts.

If you're out of the house, the app doesn't seem to be able to access the remote driving, nor the scheduling. Again, probably sensible. You don't want to be driving blind.

The API

If you don't fancy getting your hands dirty Thinking Cleaner have some pre-built API integrations - allowing you to connect your Roomba to a variety of existing home automation services and the Pebble smart watch!

For those of us who like to fiddle, there's a (mostly) REST API with comprehensive documentation. This spits back JSON so should be fairly easy to work with.

Once again, there's no authentication - so anyone with access to your network can force your Roomba to commit suicide.
Roomba Suicide-fs8

The API allows you to take manual control of your Roomba, driving it wherever you like. You can alter its schedules and access some basic information about the unit.

Sadly, there's no way yet to get the Roomba to tell you what it is doing. In order to find out whether it has started cleaning, you would need to continually poll the API and notice when it changes state. I would like it if the unit were to make an HTTP call to a server of my choosing - then I could, say, get it to tweet when it finished cleaning.

Incidentally, a quick nmap shows that only port 80 is open.

Wish List

I've been a little harsh on the unit. For €99 it's an exceptionally good bit of kit. There are still a few bugs and kinks to work out, but for day-to-day usage it is excellent. Here's what I'd like to see in future versions of the software.

  • HTTPS everywhere! It appears that their servers do support secure connections, but it doesn't seem to be mandated. I'd be much happier if all the communications went over a secure channel.
  • Authentication! Yes, even HTTP Basic Digest would be nice. Just something to prevent people on the network fiddling where they shouldn't! If you have a kids in your house, you don't want them playing with the robot's settings.
  • A push API. Let me define an HTTP request for the Roomba to make when it has finished cleaning.
  • Open Source firmware. I'd love to be able to tinker with the look and feel of the website. At the moment they say

    The firmware running inside the Thinking Cleaner module is not going to be open source. This is because the module has to be certified and certification includes the firmware.

    I can understand that the radio module has to obey local laws. I just wish there were a way to separate the radio logic from the web server. Perhaps the code could be made open source but have the unit only accept signed versions from the manufacturer?

  • Play sounds or voices. At the moment, the software only lets the Roomba play one "jingle". It would be great if it were possible to make it play different sounds - or even get it to speak some of its stock phrases.
  • Mapping. This is one I think I can build myself! It would be great to be able to draw a map of the route taken by the Roomba on its travels.
  • More diagnostic information. Adding WiFi signal strength, for example, would make for an easy way to map your network propagation.
  • Twitter integration 🙂 I guess I'll have to build that myself as well!

Conclusion

The Thinking Cleaner upgrades even the cheapest Roomba into a WiFi connected, super cleaner. I love the fact that I can get schedule cleaning while I'm away, and play with an API. There are some minor issues, which I'm sure will be fixed as the software matures.

The Thinking Cleaner is available for €99 plus shipping (€14 to the UK). It's a fantastic little unit and I hope to write some more blog posts showing you all the cool things it can do.

And, if this blog doesn't convince you, perhaps this cheesy video will!

4 thoughts on “Adding WiFi To A Roomba

  1. Might have to get one of those, even if just so that I can retrieve Kreature from under the sofa when he manages to barge past the carefully positioned obstructions and gets stuck. (Every. Single. Time.)

  2. Hey, Matthijs from Thinking Bits here! Nice article. It's true that I wasn't using the https connection everywhere in the Android app (this is fixed in the next update). Scheduling outside the network should work, but I'll take a look into that. Thanks for noticing / using 🙂

Leave a Reply to Matthijs Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.