-
-
Notifications
You must be signed in to change notification settings - Fork 149
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for 600 Wifi enabled series / other Roombas #71
Comments
the best way is reversing the mobile app and sniffing the netword trafic between the mobile app and roomba or cloud. I dont own a 600 robot to try. |
I don't own a Roomba 600 or any other with v3 firmware, but according to information in the ioBroker forum, the v3 software uses MQTT via port 8883. |
@koalazak How are you sniffing the network traffic? What software are you using and how do you reverse? |
im sniffing with wireshark and charles proxy in mac. And for reversing the app I grab the .apk file from Android store and decompile it with online tools. |
Im not sure if this will help you or not, but, I spent some time sniffing packets with wireshark. Here is a dump of just traffic from/to the roomba 675. Opened the app and performed a "return to duck" request. |
I will also try to dump during the wireless setup etc later today. I am not great with python so if anyone is up for picking around let me know what else I can dump. |
Hi, sorry for the delay. That dumps are ssl encryted. Did you sign the trafic with your own CA? you need to do that to decrypt the dump content |
Hi, I was able to get this library working with my Roomba 690 (firmware 3.2). A tip that might be useful is that you can get the Roomba's IP address from the iRobot HOME app by tapping With that... const dorita980 = require('dorita980');
const myLocalRobot = new dorita980.Local('blid_here', 'password_here', 'ip_here');
myLocalRobot.on('connect', () => { console.log('connected'); }); ...works as expected |
The connection works with Firmware v3.0, but no data is received as far as I know. Other users report, that a connection is successful with Firmware v3, but no data is received. Are you able to execute any commands after connection or able to retrieve preferences? Kind regards, |
Hi @Jeff-Cortese, can you run this code and share the output please? const dorita980 = require('dorita980');
const myLocalRobot = new dorita980.Local('blid_here', 'password_here', 'ip_here');
myLocalRobot.on('connect', () => {
console.log('connected');
myLocalRobot.on('packetreceive', function (packet) {
console.log(packet);
});
}); thank you! |
@Zefau I'm not sure what ioBroker is, so probably not if it's not a part of dorita and running as a side-effect of the code I posted earlier. And yes, a few commands did work (I have only tried @koalazak I tweaked it a little to format the packet payload buffer: const dorita980 = require('dorita980');
const myLocalRobot = new dorita980.Local('blid_here', 'password_here', 'ip_here');
myLocalRobot.on('connect', () => {
console.log('connected');
myLocalRobot.on('packetreceive', packet => {
packet.payload = JSON.parse(packet.payload);
console.log(JSON.stringify(packet, null, 2));
});
}); The output is as follows (I redacted some info using X's because I'm not sure what is sensitive info).
|
Hi, @Jeff-Cortese, thanks a lot! this was very helpful. thanks again guys, |
Hi @koalazak,
I know that your project is focused on the 980 model (or it was like that at the beginning). I have another model (e5) and have tried to use your library without success. I have the impression that your implementation is close to working with that model, but I fail to get the password ("Error getting password. Follow the instructions and try again." which hints at a short response to the MQTT request. The response I get is "f005efcc3b2903", which is pretty close to the request your code sends to get the password. I could try to reverse engineer the network traffic, but where should I start? Your implementation shows that you have understood pretty well what happens between client and server (at least for your model), do you have that information somewhere so that we can start creating an unofficial documentation of the communication used by the different roomba models? Gracias! |
We discussed e5 support in Zefau/ioBroker.roomba#1. Remove "pose" from preferences worked here as well. |
Good news. The error was sitting between keyboard and chair. I did not correctly understand the message about pressing the HOME button (I was pressing the "CLEAN" button). There was a message in another thread giving that hint and it was helpful. So I can confirm that things are working well on the e5. Thanks for making it possible! |
600 and e5 series supported in dorita980@3.1.0 |
Hello,
I wanted to ask whether you guys are also planning to support other Roombas than just the 980?
The Wifi enabled 600 series (currently on a firmware 3.x) would also be interesting to support, as they are much more for the mass market (given the price) and I would be happy to help discovering supported features and requests.
Is there a way to get an API overview of the robot's API (something like wsdl was for web services) that I can post here for enhancing (or forking) dorita980 for 600 series?
The text was updated successfully, but these errors were encountered: