Skip to content

Commit acedc3a

Browse files
committed
til: roomba scheduling via rest980
1 parent 44c2d2e commit acedc3a

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
title: "How to set the internal schedule on a Roomba 960 using rest980"
3+
date: 2025-07-09
4+
tags:
5+
- home automation
6+
- rest980
7+
- curl
8+
- jq
9+
---
10+
11+
For some reason my Roomba 960 decided to fall off the cloud, or at least the official app refuses to see it.
12+
13+
I thankfully already have an instance of [rest980](https://github.com/koalazak/rest980) running in my homelab anyhow, and it is still happily chatting with
14+
the bot. And tbh, I might just block cloud access again as having everything local is better anyhow.
15+
16+
In any case, I wanted to disable the schedule currently set on it internally to switch to scheduling stuff from my home automation,
17+
but without the app working I wasn't sure on how. So I went hunting through rest980's source - as the README didn't tell me what
18+
I was looking for - and found that I could program the weekly schedule with some easy `curl` magic via the `/api/local/config/week`
19+
endpoint.
20+
21+
Firing off a `GET` against that, this is the data structure I received:
22+
23+
``` json
24+
{
25+
"cycle": [
26+
"none",
27+
"start",
28+
"start",
29+
"start",
30+
"start",
31+
"start",
32+
"none"
33+
],
34+
"h": [
35+
9,
36+
15,
37+
15,
38+
15,
39+
15,
40+
15,
41+
9
42+
],
43+
"m": [
44+
0,
45+
0,
46+
0,
47+
0,
48+
0,
49+
0,
50+
0
51+
]
52+
}
53+
```
54+
55+
`cycle` seems to be the on/off button from Sunday at index 0 to Saturday on index 6. `start` schedules a cleaning run, `none` disables it.
56+
`h` is the hours on which to start each day, and `m` the minute.
57+
58+
What I wanted to do was to set all of the days to off, and this I achieved with this combined `GET`/`POST` call with some `jq` manipulation in the middle:
59+
60+
``` bash
61+
curl $REST980_URL/api/local/config/week | \
62+
jq '.cycle[] = "none"' | \
63+
curl --json @- $REST980_URL/api/local/config/week
64+
```
65+
66+
Another problem - hopefully - solved! I'll see tomorrow if this *really* disabled the schedule 😅 but I'm optimistic!

0 commit comments

Comments
 (0)