> aidens.dev_

Latest Posts

Designing Freedeck's UI/UX

October 16, 2025

This article is still being written! This article will explain my thought process behind Freedeck...

Read Post

Creating a CSS grid-swapping JavaScript library for my app.

October 16, 2025

Why and how I created a library for vanilla JS for use with the CSS grid. ## I: Freedeck / The Pr...

Read Post

Posts

This article is still being written!

How I ended up from simply making an HTTP interface to reverse engineering the local firmware of the robot requires an explanation.

The Issue

iRobot's robot vacuum cleaner (the Roomba) lacks greater support in Home Assistant. Currently, it can start/stop/pause/dock, standard features, but few entities are exposed and I missed one major feature the Roomba advertises: selective room cleaning.

There does exist ha-rest980-roomba by jeremywillans, but I find it also lacks: it doesn't natively integrate with HA through its system; it uses the YAML configuration method.

Developing a Solution

First, we need to research the Roomba and it's inner workings a little bit. Under the hood, many programs use dorita980 to communicate with the iRobot, so I started there.

dorita980 is the library that communicates/'controls' with the Roomba through MQTT.

rest980 converts HTTP requests (like those of /api/status/...) to dorita980 commands, and repeats the output back.

Prototyping a Solution

jeremywillans' integration was a heavy inspiration. Infact, I even attempted to retain as much of the functionality as if you were to just migrate from the YAML configuration to this integration.

Source?

Finally, the source for the roomba_rest980 integration is on GitHub. Try it out!

Go Back