It’s been a full 2 years since I started the journey of attempting to integrate my Roomba robot vacuum cleaner with my Watchdog home automation system. I blogged about my first attempt using a RooTooth interface which ultimately failed. I later made a second attempt with a RooWifi interface. I’m disappointed to say that it failed too. Below is an analysis of the failures.
Here’s what I was attempting to do:
- Trigger the Roomba to start cleaning when the house becomes unoccupied.
- If the house becomes occupied before the cleaning is done, trigger the Roomba to dock
Simple really. Not looking to attempt to do any kind of navigation or anything like that – just letting the Roomba do what it does best, but controlling the start/stop to make it more convenient for my family.
First Attempt – RooTooth
Bluetooth technology is not the greatest choice for remote control of a Roomba, but at the time, it was the only wireless option available, so I gave it a try. My initial attempts to run it from my mobile phone were successful. Later, I got it running with an app on a PC – also successful. It’s when I attempted to create a repeated schedule spanning more than 1 day that I got into trouble.
It seems that at some point during the day/night when it is waiting for the next “wake up” call, the serial port connection puts the Roomba into some kind of zombie state. In the zombie state, the Roomba has power, but does not respond to RooTooth connection attempts. A full reset is required to release it from this state. After the reset, testing shows that it is working fine again… until the next automated attempt about 24 hours later.
At first, I thought it was because I was attempting to keep the connection open all the time to monitor the status of the Roomba. However, even after I closed the session, and attempted to do a “Just in time” connection to trigger the clean cycle, I still experienced the zombie state. It seems that even by doing nothing, just having the RooTooth connected caused the zombie state.
Soon thereafter, my Roomba 500 series, showing its age, decided not to charge its batteries any more. I attempted to buy a new battery and it did not help. All the testing with the RooTooth made it so I was skipping lots of days of cleaning and disrupted the normal routine of charging and dis-charging the battery. I have no evidence that this was a result of the RooTooth, so I chalked it up to coincidence. Rather than attempt to repair, I took the opportunity to upgrade, and invest in a Roomba 800 series.
Suspecting that the 500 Series (or even just my device) might have been the issue, I tried again on the 800 Series. Unfortunately the same results occurred – zombie state. Not wanting to risk another Roomba, I shelved the RooTooth. $100 flushed down the toilet.
P.S. iRobot – terrible decision to put the serial port underneath the handle for the 800 series! This is not “hacker friendly” at all!
Second Attempt – RooWifi
A few months later, I came across the RooWifi (based in Spain). Based on the website, this solution solved some of the challenges I was bound to have with Blue Tooth related to range. The RooWifi web site even has a section for home automation and one example of someone using their product to run their Roomba. They also had documentation about the API published. So, I crossed my fingers and placed my order. The web site also assured me that there were quantities in stock. All lies.
6 months later, I still had not received my shipment and could not get a response from the company. I was upset because the cost was high (about $75 + Shipping). Out of the blue, I get an email from someone saying that they ran out and had to to manufacture another batch. I get that stuff like that happens, but at least let me know what’s going on!
Another 3+ weeks passes and it finally arrives in the mail. I plug it in and get it running quickly. The browser-based interface is nice for configuring the device remotely. I’m liking all the options and the free mobile app they provide. It’s not ideal to have it wedged underneath the handle to connect to the serial port on the Roomba, so I start to consider some surgery to remove or cut the handle to make room. Things are going well using the RooWifi as the host. Next, I attempt to connect it to my home Wifi so I can control it from the Home Automation servers. This is where the problems begin.
Unexpectedly, Wifi devices in my house are suddenly unable to get out to the Internet. After a lot of debugging, I realize that it is the RooWifi that is acting as a DHCP server and handing out IPs. I go into the configuration and disable DHCP, but it continues to happen. The only way I can get it to stop is by disconnecting the RooWifi. Frustrated, I contact the manufacturer. It takes several attempts over the course of a month, but I finally get a response back from Xavier-Martí (a RooWifi HW/FW developer). Here is what he says:
Excuses for the misunderstood. I was reviewing the User Guide and should be a mistake that in more than one year of this version of the manual any customer saw before and no problems related with it! Really the DHCP checkbox enables and disables the DHCP Client running inside the board but the DHCP Server is a non stopable service today and this change is susceptible to be done quickly. The DHCP server enables the users to connect through its device like iPhone or PC to the module when is in hot-spot mode to try to do the connection easiest without manual configuration.
The check box is to disable the DHCP Client when trying to connect to external Wi-FI Network. I understand your comment because reviewing the user guide we don’t specify it at all and only talk about the DHCP term. We will change it as soon as possible to try to correct this possible mistake in the documentation and will include in the next revision of Firmware. In any case thank you for your feedback with this comment because it’s very important for us detecting this kind of things.
Apologies for any inconvenience caused but as told before we couldn’t modify it in a short period of time. If you would we could notify you when a new firmware revision will be released with this modified.
Ok, so they didn’t even consider the use case of having the RooWifi connect to an existing infrastructure WAP? Seriously, what kind of a design is this? In addition, I sent some follow-up emails with some other bugs that I found in the RooWifi firware:
- I noticed that after a reboot, the RooWiFi remembers all configuration setting except for the Key Type Field. The Key Type field always reverts back to the default value of “Open”. I must manually re-set this value to “WPA2 Key” before I reboot to get the RooWiFi to reconnect to the router.
- I have only 1 DNS Server (as do most home networks). The RooWiFi has the option of holding 2 DNS server IP addresses. Typically, in this case, I will leave the DNS2 field blank when working with other systems. However, when I attempted to leave this field blank, the RooWiFi would put random numbers in this field after a reboot. I had to manually delete them after the reboot. I seem to have resolved the issue by adding the same value for DNS1 and DNS2, but this needs to be addressed.
- I do not feel a sufficient amount of security is being provided for my WPA2 key. It is displayed in clear text on the screen, and also in clear text on the confirmation dialog box when Saving/Rebooting. I would prefer to have this value treated like a password and replaced with “*****”. I’m not sure if this value is transmitted un-encrypted, but that would also be something I would want to have.
I attempted multiple times after that to follow-up with regard to the timeline for the new firmware revision and these other bugs, but got no response. Fast forward one year later (May, 2015), and I discover that Rev 2 has been announced on the web site will be available in June 2015. I’m not sure if this will mean I need to buy a new unit, or can upgrade the one I have. The only Rev 2 feature discussed on the web site is improved WiFi range – no mention of DHCP service or other clean-up.
While waiting, I attempt to continue to adopt the RooWifi to suit my needs. Long story-short, the Roomba still enters zombie mode regularly. So, the RooWifi has joined the RooTooth on the shelf.
At this point, I’ve given up on the idea of integrating the Roomba. I was able to find a repeatable schedule that mostly suits my family’s needs with minimal disruption (except on holidays and snow days). It seems to me that iRobot has some things to look at in their product to prevent the zombie mode, and I need to look to another company to provide a stable, hackable cleaning platform.
For anyone considering an investment in a RooTooth (discontinued) or RooWifi R2, DON’T DO IT!!! Their claims of integration with home automation products are pure fiction. It was clear that little testing was done on the RooWifi R1, and I don’t have confidence that the R2’s will be any more stable or better tested. Frankly, It’s sloppy coding done by an inexperienced, unprofessional group. If they put a fraction of the time they spent on their website into creating the product, I’m sure they’d have something decent to sell.