<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>rest980 on foosel.net</title><link>https://foosel.net/tags/rest980/</link><description>Recent content in rest980 on foosel.net</description><generator>Hugo</generator><language>en-us</language><copyright>Gina Häußge (foosel)</copyright><lastBuildDate>Wed, 09 Jul 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://foosel.net/tags/rest980/feed.xml" rel="self" type="application/rss+xml"/><item><title>How to set the internal schedule on a Roomba 960 using rest980</title><link>https://foosel.net/til/2025-07-09-how-to-set-the-internal-schedule-on-a-roomba-960-using-rest980/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0000</pubDate><guid>https://foosel.net/til/2025-07-09-how-to-set-the-internal-schedule-on-a-roomba-960-using-rest980/</guid><description>&lt;p&gt;For some reason my Roomba 960 decided to fall off the cloud, or at least the official app refuses to see it.&lt;/p&gt;
&lt;p&gt;I thankfully already have an instance of &lt;a href="https://github.com/koalazak/rest980"&gt;rest980&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;t sure on how. So I went hunting through rest980&amp;rsquo;s source - as the README didn&amp;rsquo;t tell me what
I was looking for - and found that I could program the weekly schedule with some easy &lt;code&gt;curl&lt;/code&gt; magic via the &lt;code&gt;/api/local/config/week&lt;/code&gt;
endpoint.&lt;/p&gt;</description><content:encoded><![CDATA[<p>For some reason my Roomba 960 decided to fall off the cloud, or at least the official app refuses to see it.</p>
<p>I thankfully already have an instance of <a href="https://github.com/koalazak/rest980">rest980</a> 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.</p>
<p>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&rsquo;t sure on how. So I went hunting through rest980&rsquo;s source - as the README didn&rsquo;t tell me what
I was looking for - and found that I could program the weekly schedule with some easy <code>curl</code> magic via the <code>/api/local/config/week</code>
endpoint.</p>
<p>Firing off a <code>GET</code> against that, this is the data structure I received:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;cycle&#34;</span>: [
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;none&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;start&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;start&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;start&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;start&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;start&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;none&#34;</span>
</span></span><span style="display:flex;"><span>  ],
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;h&#34;</span>: [
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">9</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">15</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">15</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">15</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">15</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">15</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">9</span>
</span></span><span style="display:flex;"><span>  ],
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;m&#34;</span>: [
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span>  ]
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p><code>cycle</code> seems to be the on/off button from Sunday at index 0 to Saturday on index 6. <code>start</code> schedules a cleaning run, <code>none</code> disables it.
<code>h</code> is the hours on which to start each day, and <code>m</code> the minute.</p>
<p>What I wanted to do was to set all of the days to off, and this I achieved with this combined <code>GET</code>/<code>POST</code> call with some <code>jq</code> manipulation in the middle:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl $REST980_URL/api/local/config/week | <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>    jq <span style="color:#e6db74">&#39;.cycle[] = &#34;none&#34;&#39;</span> | <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span>    curl --json @- $REST980_URL/api/local/config/week
</span></span></code></pre></div><p>Another problem - hopefully - solved! I&rsquo;ll see tomorrow if this <em>really</em> disabled the schedule 😅 but I&rsquo;m optimistic!</p>
]]></content:encoded></item></channel></rss>