Roomba (Rest980)
ia74/roomba_rest980 · vv1.19.2
An open source software reverse engineering project meant to decouple Roomba (i7, j7+, etc.) and other iRobot products from the cloud and easily integrate with Home Assistant. Jailbreak coming soon!
In Apple Home through HomeKit Bridge
What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.
| Entity | Shows up as | Note |
|---|---|---|
camera | Camera | Needs its own HomeKit Bridge in accessory mode |
sensor | Sensor (temperature, humidity, air quality…) | |
vacuum | Vacuum (as a switch) | |
button | Button (as a switch) | |
select | Mode picker (as switches) |
What people report
Local Roomba control via rest980; cloud matching for some models like the J9+ was fixed, and multi-robot accounts had button issues.
- Works1
- Partly works1
| Device | In Home Assistant | In Apple Home | What they said | Source |
|---|---|---|---|---|
| iRobot Roomba Combo J9+ | Works Local | Cloud SKU matching fixed for mismatched SKUSaved copySummary - Fix cloud robot matching that fails on some models (e.g. Roomba Combo J9+) where the local SKU differs from the cloud SKU - Replace strict equality check with a scoring system that handles SKU, software version format, and case mismatches ## Problem The `_async_match_blid` function matches local and cloud robots using an exact comparison of SKU, software version, and name. On some models like the Roomba Combo J9+: - Local SKU is `c975840` (serial number prefix), cloud SKU is `C910840` (product SKU), different values - Local softwareVer is `topaz+1.12.11+2025-04-30-...`, cloud … Excerpt saved from GitHub on 2026-10-23. | PR #47 · 2026-06 | |
| Multiple Roombas on one iRobot account | Partly works | Favorite buttons created for every robot and send to wrong robotSaved copyRelated to #17 (multiple robots on one account). ### What happens Favorites are account-wide in the iRobot cloud, and `button.py` creates a `FavoriteButton` for every favorite on every robot's config entry. The button then sends the favorite's `commanddefs[0]` to *its own entry's* `base_url`: [code] So with two robots, each robot's device gets buttons for the other robot's favorites, and pressing one sends the other robot's command (including its `pmap_id` / `regions`) to the wrong robot. ### Setup - Roomba i7 (`i715840`) + Braava jet m6 (`m613840`) on one iRobot account - Two … Excerpt saved from GitHub on 2026-10-23. | Issue #60 · 2026-10 |
Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.
How it connects
Local polling
Talks to the device on your network, asking it for updates every so often.
Found automatically over
- DHCP
- Bonjour (zeroconf)
Details
| Installs (analytics) | 177 (0.02%) |
|---|---|
| GitHub stars | 61 |
| Latest version | v1.19.2 (2026-10-06) |
| Set up in the UI | Yes |
| Maintainers | @ia74 |
| License | GPL-3.0 |
In ReReHome
Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.
Bridges get their own settings page listing the accessories behind them.
Sources
- Documentation: https://github.com/ia74/roomba_rest980
- Source code: https://github.com/ia74/roomba_rest980
- Issues: https://github.com/ia74/roomba_rest980/issues
- HACS: https://hacs.xyz