I found that working with jeremywillans' implementation was nice and almost effortless, but I'd prefer to not have a YAML configuration and work with it by a more native integration that adds entities and isn't bound to making a lot of helpers per room.
> I recommend that you use [the lovelace-roomba-vacuum-card](https://github.com/jeremywillans/lovelace-roomba-vacuum-card) until I remake it for this integration.
## Step 1: Setting up rest980: Grab Robot Credentials
If you already have it setup, and you know its url (like `http://localhost:3000`), you may skip this step.
First, you must gather your robot's on-device password and BLID (identifier).
> NOTE: You cannot have the iRobot app running on your phone, or anything else connected to it during this step!
<detailsopen>
<summary>
For Docker users
</summary>
Execute this command:
```sh
docker run -it node sh -c "npm install -g dorita980 && get-roomba-password <robotIP>"
```
and follow the on-screen instructions.
</details>
<details>
<summary>
HA Addon by jeremywillans
</summary>
Add `https://github.com/jeremywillans/hass-addons` to the Addons tab.
Locate and install the `roombapw` addon, following the included instructions.
</details>
<details>
<summary>
Other HA installation method
</summary>
If you dont have direct access to Docker, you can clone and install the dorita980 package locally.
See [dorita980's instructions on how to get the credentials](https://github.com/koalazak/dorita980#how-to-get-your-usernameblid-and-password).
</details>
### Setting up rest980: Bringing The Server Up
Now that you have your robot's IP, BLID, and password, we need to actually start rest980.
<detailsopen>
<summary>
For Docker users (docker-compose)
</summary>
[Download the docker-compose.yaml file, and bring the service up.](docker-compose.yaml)
To bring the service up (just rest980) and leave it in the background, run
```sh
docker-compose up -d rest980
```
You may also add the service to an existing configuration. You do not need to add file binds/mounts, as there are not any.
</details>
<details>
<summary>
HA Addon by jeremywillans
</summary>
If you haven't, add `https://github.com/jeremywillans/hass-addons` to the Addons tab.
Locate and install the `rest980` addon, then update and save the configuration options with the credentials you got from the previous step.
Add this custom repository, https://github.com/ia74/roomba_rest980 to HACS as an Integration. Search for the addon ("iRobot Roomba (rest980)") and install it!
Clone this repository, https://github.com/ia74/roomba_rest980 , and add the custom component folder (`roomba_rest980`) to your Home Assistant's `config/custom_components` folder.
You may also input your iRobot credentials now, if you want to use cloud features that are coming soon. You must check "Enable cloud features?" for the cloud API to be used.
If you did it right, you'll see a success screen that has also gotten your given name for the Roomba!
iRobot does some quite interesting things with their API. As of current, my implementation does not use the cloud MQTT server (yet). However, even with the iRobot app and every instance of a connection closed, you may get ratelimited (*sometimes*) with the error "No mqtt slot available". There isn't a workaround for this that I know of, except to restart HA/reload the robot's config entry in ~5 minutes.
From this part on, the guide will not diverge into Cloud/Local unless required and will assume you are using Cloud features, but most of it should be generically implemented.
The integration adds all the attributes that you would expect from [jeremywillans implementation](https://github.com/jeremywillans/ha-rest980-roomba), making it compatible with [the lovelace-roomba-vacuum-card](https://github.com/jeremywillans/lovelace-roomba-vacuum-card).