I spent a couple of hours this weekend looking into it and got something working.
It seems the iphone app talks either directly to roomba when on wifi or via the cloud when not.
I only looked into the cloud connectivity.
HTTPS JSON Api with a username and password. Once i got around the HTTPS encryption the rest was easy.
I threw together a windows/windows phone UWP C# app to test it out and am now able to control my roomba from my desktop/phone. When I get chance I will look into turning this into a ST device and app.
The only downside is the username and password are generated by either the roomba/the smartphone/their cloud. So looking them up isn’t the easiest thing to do.
However on android i believe they are just stored in a DB with the app, so it may be easy to look them up. For now I know my username/pass and can control my Roomba.
I’ll post more details when I have more time to work on it.
Well I have to be honest I do not have or have ever used an Android phone but from what I know the security is more lacking than that of the iphone or windows phones.
Can you try and see if you can poke around in the ‘data’ directory for the irobot roomba app and let me know what you find. Feel free to PM me if you want to keep this off the forum. I think there are messaging capabilities on this board.
Hi @boreddead, can you share the specs you got at this time? host? port? scratch api reference?
can you able to obtain the VSLAM maps?
I dont see how PM to you. Can you write to me? im interesting to help, im node.js developer.
Hey sorry everyone, I have been swamped with my apartment, work and life. In the next week or so I will post my findings so someone can write a device driver as I clearly don’t have the time right now.
I will also post how to get your password and generally sniff SSL traffic decrypted.
The roomba is brilliant, i love being able to control it from my smart phone and it will definitely fit into the smartthings hub with a tiny bit of work.
you need to decrypt the traffic first, there is only one way to do that really by adding a root certificate to your device where the app is installed and forcing it to use a https proxy and then having your pc as the https proxy and the owner of the root certificate. That way it can man in the middle the SSL traffic and snoop on it.
What was the high level of how you routed the app to use an HTTPS proxy? I’ve not seen that ability, and am unfamiliar with it. I get generating a cert, and also installing it though.
update: I feel dumb–hah! Your using the wireless settings proxy, to point the traffic to a workstation with wireshark. I get it more now. Will have to try later, as I am not at the house. So high level steps:
Generate an SSL cert on a PC
Install cert to Android as root certificate
Go to wireless settings on android phone with iRobot app
Add IP/name of device with wireshark
Trace info going to iRobot.axeda.com, and grab the URL string to piece out the pieces needed