Also worked for me. Heads up to anyone looking to do this, the Thor app is $12.99 on the iOS app store but it does the job well. I ran into issues with HA accepting my password when entering from the phone. Setting the field to show password and then pasting allowed me to continue. Not sure why and I doubt that will be everyone’s experience but just a heads up if you run into a similar problem.
FYI they updated the project to pull the password straight from the cloud so it’s easy peasy to use again. The new command format is: ./password.py <login> <password>
where do I run this command? in ssh it doesn’t work
zsh: no such file or directory: ./password.py
You run the command in
docker exec -it homeassistant bash
Does anyone know how to retrieve zones IDs?
As in what command goes before myRobot.getRobotState(waitForFields)
For the password its ./password.py but what is it for the getting the state?
You can also run it from an external machine. I used WSL on win10 to run it.
I hope this helps John.
- you need to clone the project linked at the top using
git clone https://github.com/NickWaterton/Roomba980-Python.git
- you can do this on any machine that has both git and python 3 installed (home assistant container, WSL, Linux, windows, whatever)
- if running on windows natively you will need to use pip to install the requests module (or the code will fail to retrieve the password)
thanks, that was helpful and worked (though i had to use my python install on windows as my WS is borked).
I am a beginner and I don’t understand where those commands are to be entered. I installed Python the “roomba” folder following a video tutorial. Can anyone explain to me step by step how I should do it? Thanks so much for your help.
I am new at this stuff and am I am stuck on this step (thor). I purchased the app but I don’t understand how to get the sniffer to start. There are not any tutorials online that I can find. Everything just stays blank and there doesn’t seem to be a start button anywhere.
Ho-ley mackerel … this is a major pain.
After many hours of hacking at this, managed to get the password for our J7+, using Windows 11. I’ll skip all the things that didn’t work (there were lots). I believe this will work with Windows 10 as well… if you get it to work, please let everyone else know.
- Install WSL (Windows Subsystem for Linux). Here is the Microsoft article on the subject.. Essentially, you run this command in Powershell:
wsl --install
Note: you will need to setup an account on your WSL, so remember the credentials you make – you’ll need them later).
Note: it won’t say “WSL” on it, but will have the round orange-and-white Ubuntu logo, both in the taskbar and in the upper-left corner of its window.
- Update WSL. The Linux instance won’t connect to the outside world until you do this.
sudo apt update
Note: you may be asked to enter your WSL credentials at this point. That’s the username and password I mentioned to remember in step 1.
This will display a bunch of data like this:
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
Get:3 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [1069 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:6 http://security.ubuntu.com/ubuntu focal-security/main Translation-en [197 kB]
[and so on]
- Install Python3. Honestly, I don’t know if it was already installed, but this is how I did it, and won’t hurt anything.
sudo apt install python3-pip
At some point you’ll be asked if you want to continue with this installation, and press “Y” to answer yes. A whole bunch more stuff goes by on the screen:
Do you want to continue? [Y/n]
Get:1 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 gcc-10-base amd64 10.3.0-1ubuntu1~20.04 [20.2 kB]
Get:2 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libgcc-s1 amd64 10.3.0-1ubuntu1~20.04 [41.8 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libstdc++6 amd64 10.3.0-1ubuntu1~20.04 [501 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libc6 amd64 2.31-0ubuntu9.2 [2715 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 python3.8 amd64 3.8.10-0ubuntu1~20.04.2 [387 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8 amd64 3.8.10-0ubuntu1~20.04.2 [1625 kB]
[and so on]
- Get a copy of the unofficial iRobot Roomba python library (this part is really easy):
git clone https://github.com/NickWaterton/Roomba980-Python.git
This copies a folder of information from Github to your WSL window. This consists of Python scripts for the Roomba integration, but really you need just one of those scripts.
Sanity check: After this completes, do this:
ls
This will list the items in your current Linux folder. If everything is going as planned, you should see this:
Roomba980-Python
That is the folder you just downloaded (congratulations!).
- Move to the proper folder. To make this easier, let’s just move to the correct folder…
cd Roomba980-Python
Now you are in the Roomba980-Python directory.
cd roomba
And now you are in the roomba sub-directory. Almost done!
- Run the command to get the password for your J7+ Roomba.
python3 password.py 'your_roomba_account_username' 'your_roomba_account_password'
Note: What is happening here is you are asking the “password.py” script to retrieve the password for your Roomba device from the Roomba website. To do that, it needs to unlock your account using your own Roomba username and password (not the device password but your user password… they aren’t the same thing).
If all goes according to plan, you will get back a bunch of data. Somewhere in the middle of all that should be (hopefully) something which looks like this:
"password": ":984019410f28023lna:lOUL80",
Note: I made up that password for demonstration purposes
Everything within the second set of quotes is the password you need. You’ll use that in Home Assistant when you are configuring the Roomba integration. During the setup of that Roomba integration, after it fails to automatically get the password for your Roomba device, you’ll be given an opportunity to manually enter the password. The easiest and best option is to copy-and-paste the password you just found and put it into the text box prompt for the integration.
Good luck!
Thanks! Getting around to setting up an Xmas gift and found your post here.
I will add that for anyone else that you may need username and password within single quotes, so:
password.py '[email protected]' 'mypassword%*&#'
And if you see KeyError: 'sessionInfo'
after running this you probably have your password entered wrong, as I did the first time.
I did not need to wake up the Roomba or press the home button to get it in pairing mode, etc. Running the command will initially output some info, and then after another short wait, the info retrieved from the account. I then used s
and hit enter to skip configuring the Roomba, and copied and pasted the password into the prompt provided by the integration.
Thanks. I’ve edited my post to reflect that.
I think Thor is much easier (especially since I’m on a MAC). To use it, have your Roomba app open and ready to use. In the Thor app, click the lightning bolt icon in the top center of the screen (starts a session). Immediately navigate to your Roomba app and select your robot. Now you can go back to Thor and click the lightning again to stop the session. Now, at the bottom of the screen click on the Sessions icon. The one just recorded will be at the top. Click it and look for the the line that starts with POST → .json followed by unauth1.prod.iot.irobotapi.com and tap that line. On the screen that opens, tap the Response option at the top then tap the application/json line to open it. Your BLID and password should be fairly close to the top starting with a line that says “robots”. The brown (on my phone anyway) string in quotes is the BLID, the password is the entire string in quotes under “password”
Hope this helps.
I don’t have a Mac or an IPHone so Thor wasn’t an option. You can also just SSH into the Hassio box and run all the same commands without WSL. It’s worth having WSL setup though.
If you want a free* way to do this (and don’t want to use dorita980 / roomba980 for some reason) then I would recommend using Charles Proxy. You can have it run on a windows machine and then use it as a proxy server for your phone/tablet/computer and it will show you all of the traffic. From there you can easily extract the Roomba’s password from the traffic.
‘*’ = you can use Charles Proxy in demo/trial mode for free. It will still work the same but it will limit you to 30 mins. This should be enough time to set everything up and extract the data. (You can setup the phone/tablet/machine to point to your proxy server before actually starting Charles Proxy. This will help save some time)
Reaching out to this chain since there are several others with the J7+. I have my BLID and password. But I am trying to create automations to clean specific rooms. I tried following the instructions on this thread - Add support for irobot roomba clean specific room - but I haven’t had any luck. Has anyone else been able to accomplish this?
First are you using rest980_j7?
I have a j7 and I have automations to clean specific rooms, it was challenging at first to setup but is easy now that I figured it out.
@Danny2100 Thank you so much for the advice! I spent several hours with this, but in the end had no luck. I don’t need or care about the room maps or any special lovelace UI. I just want to be able to identify my pmap_ids and region_ids so I can create automations to clean my individual rooms.
I already have my ROBOT_IP, BLID, and PASSWORD. I know these are correct because I was able to configure the core HA Roomba integration.
So I THINK all I need now is to get rest980 working. I spun up a docker container with koalazak/rest980:latest and can get to the Web UI using:
http://<my ip>:<my port>/api/local/info/state
But all it returns is an empty {}
. I tried every variation of disabling the HA integration, closing the app, and starting a room cleaning before/during the docker container start. Nothing works.
Any additional thoughts or troubleshooting steps you can recommend?
I had that issue as well, are you using the rest980 j7 image? The way the robot communicates I think is different from previous robots which is why you’re seeing the {}
I couldn’t paste the link for the addon as it’s 404 for some reason.
Just throwing this out there for anyone who is running HA in docker vs Home Assistant OS.
It took quite a while, but I finally got my J7+ to work. Not only did I want it added to HA, but I wanted to be able to create automations to clean individual rooms.
Most of the instructions came from here:
But even with my BLID
, PASSWORD
, and ROBOT_IP
, I was still having trouble getting rest980 docker container to return any info about my Roomba. I finally discovered that the J7+ uses different encryption, so one additional parameter needs to be added to the docker container: ROBOT_CIPHERS=TLS_AES_256_GCM_SHA384
I now have it up and running! Hopefully this is helpful to anyone else having trouble with the J7+!