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
Install wireshark
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
I found this page after finding pretty much the same thing as you guys did. However, I would be interested in talking to the Roomba without the cloud. This is definitely possible - I have blocked Internet traffic and the app still works, plus there is a German company that offers a solution for a certain home automation server which I do not have that does the same thing. Has anyone managed to capture traffic to and from the Roomba? https://ip_of_roomba/ seems to work, but I would need to know the actual URL to get the data and my fiddler does not show me for some obscure reason.
Good News Everyone!
I found a way to get username and password without Charles proxy or MITM attack!
Just run a script and get your username and password.
The script and source code is part of my dorita980 SDK library for iRobot Roomba 980
example:
$ git clone https://github.com/koalazak/dorita980.git
$ cd dorita980
$ npm install
$ npm run getpassword 192.168.1.103
Make sure your Roomba is on the Home Base and powered on. Then press and hold the HOME button on your roomba until it plays a series of tones (about 2 seconds). Release the button and your Roomba will flash WIFI light. Then wait...
========>
Good job!
Password: xxxxxxxxxxxxx
Username/blid: yyyyyyyyyyyy
Use this credentials in dorita980 lib :)
Firstly thanks a lot for sharing your work. Really fantastic job.
I just got a Roomba 980, I would like to try to use your sdk but I am not very good with coding. I have a Raspberry Pi with HA-Bridge installed. So I can git clone your repo and install it to my Pi. How do I use it though? Can it be called though HTTP calls? Like http:ip-address/myRobotViaCloud.start() or something like that?
You need to install node.js first on your Raspberry. Then create a directory for your project with a index.js file inside and this literal content inside index.js:
var dorita980 = require('dorita980');
var myRobotViaCloud = new dorita980.Cloud('MyUsernameBlid', 'MyPassword');
myRobotViaCloud.start().then((response) => {
console.log(response);
}).catch((err) => {
console.log(err);
});
the only thing you need to change here is the MyUsernameBlid and MyPassword strings with yours (read the readme to obtain yours). And start method if you need to do other thing like dock, etc.
Then in YOUR project directory run this to intall the sdk on your project:
$ npm install dorita980
Then to run your project just run:
$ node index.js
You dont need any url or something, just literaly this example (is in README too :p)
Good work Facu on making retrieving the password easier!
I have a prototype device driver for smartthings now. Just need to make some more tweaks before publishing it.
I was doing some testing and found that the first time I ran the command. It will take about 45 seconds for the Roomba to respond. However the subsequent times, it only takes 10 secs to respond, even if it is the same command (eg. clean). Is this the same behavior that you guys encounter?
Also I manage to get it to work with Alexa and HA-Bridge. So I can say âAlexa, turn on Roombaâ and the roomba will start cleaning and âAlexa, turn off Roombaâ will send the command to dock the Roomba. Very cool stuff, thanks again for sharing this awesome code guys.
The Cloud API is slow. I dont known why ( 5 seconds for me, not 45 :p).
Yesterday I published a Local API version (i extend the same npm module) to send commands directly to your robot in your LAN without the Cloud. Try to use this new feature (documentation is up to date)
its super fast (and super super fast if you know the robot IP address and dont use the auto-discovery option)
You need to update dorita980 to version 2.2.0. Update your package.json to do that and run npm update on your project. Or just: npm install dorita980@2.2.0 --save
Thanks facu. It works now. Sorry I am not very familiar with npm. So when there is another update I just need to do npm install dorita980@2.2.0 --save? or I need to do another git pull?
Thanks for all information so far posted. Still it does not fully work for me.
My target, control the Roomba 980 via Domoticz.
My status, a fail when running the first command
I have node.js v4.0.0 (I checked via node -v)
Gitclone⊠did not give any error messages
At npm install I get an error message:
sounds like you have two node.js instalations. In the error reporting you show says npm ERR! node -v v0.6.19. Do you see it? Its a very old node.js version.
Try to compile a new version of node.js and npm. I think the module request is not available for node 0.6.19.