diff --git a/README.md b/README.md new file mode 100644 index 0000000..6639a3c --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# roomba_rest980 + +Drop-in native integration/replacement for [jerrywillans/ha-rest980-roomba](https://github.com/jeremywillans/ha-rest980-roomba). + +Still work in progress, but the vacuum entity has been fully ported over. + +## Roadmap + +- [x] Feature parity (minus actions) with vacuum entity +- [ ] Actions +- [ ] Dynamically grab rooms and add them to the UI + +## Setup + +### Prerequisites / Recommendations + +- HACS +- rest980 + - If you don't have it yet, don't worry; this guide will show you how to add it. +- Rooms mapped/setup in iRobot app + - Note that everytime you remap and a room changes, it's ID may change! +- Knowledge of your Roomba's IP + +> 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! + +
+ + For Docker users + +Execute this command: +```sh +docker run -it node sh -c "npm install -g dorita980 && get-roomba-password " +``` +and follow the on-screen instructions. +
+ +
+ + HA Addon by jeremywillans + + +Add `https://github.com/jeremywillans/hass-addons` to the Addons tab. +Locate and install the `roombapw` addon, following the included instructions. + +
+ +
+ + Other HA installation method + + +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). + +
+ +### Setting up rest980: Bringing The Server Up + +Now that you have your robot's IP, BLID, and password, we need to actually start rest980. + +
+ + For Docker users (docker-compose) + + +[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. + +
+ +
+ + HA Addon by jeremywillans + + +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. +> NOTE: Rest980 Firmware option 2 implies v2+ (inclusive of 3.x) + +
+ +
+ + Other HA installation method + + + Clone and start the [rest980 server by koalazak, and note your computer's IP and port.](https://github.com/koalazak/rest980) + +
+ +## Step 2: Setting up the Integration + +
+ + For HACS users + + Add this custom repository, `https://github.com/ia74/roomba_rest980` to HACS as an Integration. Search for the addon ("iRobot Roomba (rest980)") +
+ +
+ + Manual installation + + 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. +
\ No newline at end of file diff --git a/roomba_rest980/RoombaSensor.py b/custom_components/roomba_rest980/RoombaSensor.py similarity index 100% rename from roomba_rest980/RoombaSensor.py rename to custom_components/roomba_rest980/RoombaSensor.py diff --git a/roomba_rest980/__init__.py b/custom_components/roomba_rest980/__init__.py similarity index 100% rename from roomba_rest980/__init__.py rename to custom_components/roomba_rest980/__init__.py diff --git a/roomba_rest980/config_flow.py b/custom_components/roomba_rest980/config_flow.py similarity index 100% rename from roomba_rest980/config_flow.py rename to custom_components/roomba_rest980/config_flow.py diff --git a/roomba_rest980/const.py b/custom_components/roomba_rest980/const.py similarity index 100% rename from roomba_rest980/const.py rename to custom_components/roomba_rest980/const.py diff --git a/roomba_rest980/manifest.json b/custom_components/roomba_rest980/manifest.json similarity index 100% rename from roomba_rest980/manifest.json rename to custom_components/roomba_rest980/manifest.json diff --git a/roomba_rest980/sensor.py b/custom_components/roomba_rest980/sensor.py similarity index 100% rename from roomba_rest980/sensor.py rename to custom_components/roomba_rest980/sensor.py diff --git a/roomba_rest980/services.yaml b/custom_components/roomba_rest980/services.yaml similarity index 100% rename from roomba_rest980/services.yaml rename to custom_components/roomba_rest980/services.yaml diff --git a/roomba_rest980/strings.json b/custom_components/roomba_rest980/strings.json similarity index 100% rename from roomba_rest980/strings.json rename to custom_components/roomba_rest980/strings.json diff --git a/roomba_rest980/switch.py b/custom_components/roomba_rest980/switch.py similarity index 100% rename from roomba_rest980/switch.py rename to custom_components/roomba_rest980/switch.py diff --git a/roomba_rest980/vacuum.py b/custom_components/roomba_rest980/vacuum.py similarity index 100% rename from roomba_rest980/vacuum.py rename to custom_components/roomba_rest980/vacuum.py diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..deb1c08 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,13 @@ +services: + rest980: + container_name: rest980 + image: koalazak/rest980:latest + ports: + - "3000:3000" + environment: + # Replace the following with the credentials you got in the last step. + - BLID= + - PASSWORD= + - ROBOT_IP= + - FIRMWARE_VERSION=2 + restart: unless-stopped \ No newline at end of file diff --git a/hacs.json b/hacs.json new file mode 100644 index 0000000..90de87c --- /dev/null +++ b/hacs.json @@ -0,0 +1,5 @@ +{ + "name": "iRobot Roomba (rest980)", + "homeassistant": "2025.5.0", + "hacs": "2.0.5" +} \ No newline at end of file