For some reason my Roomba 960 decided to fall off the cloud, or at least the official app refuses to see it.

I thankfully already have an instance of rest980 running in my homelab anyhow, and it is still happily chatting with the bot. And tbh, I might just block cloud access again as having everything local is better anyhow.

In any case, I wanted to disable the schedule currently set on it internally to switch to scheduling stuff from my home automation, 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 I was looking for - and found that I could program the weekly schedule with some easy curl magic via the /api/local/config/week endpoint.

Firing off a GET against that, this is the data structure I received:

{
  "cycle": [
    "none",
    "start",
    "start",
    "start",
    "start",
    "start",
    "none"
  ],
  "h": [
    9,
    15,
    15,
    15,
    15,
    15,
    9
  ],
  "m": [
    0,
    0,
    0,
    0,
    0,
    0,
    0
  ]
}

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. h is the hours on which to start each day, and m the minute.

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:

curl $REST980_URL/api/local/config/week | \
    jq '.cycle[] = "none"' | \
    curl --json @- $REST980_URL/api/local/config/week

Another problem - hopefully - solved! I’ll see tomorrow if this really disabled the schedule 😅 but I’m optimistic!