---
title: CircuitBodge
publishedDate: 2022-11-13
tags:
    - projects
---
# The Problem

Most student accomodation in the United Kingdom uses Circuit Laundry to provide managed laundry to residents. Talk to a student who's used Circuit and they'll tell you how rubbish of an experience it is - it has a variety of problems, ranging from not being able to top-up your account to getting your laundry locked in a machine. It's not well liked.

One especially frustrating problem that Circuit has is its inability to actually tell you when your laundry will be finished. When you start a load of washing or drying, you're given a "time remaining". This seems fine until you realise that it often seriously underestimates this amount of time. 

It doesn't help that Circuit's own app, the one that's required to use the machines, also gets this wrong. It'll tell you when your laundry is finished, but it only bases that off the initial estimate. It doesn't update the timer while the machine is running, as you'd hope it might.

More times than not, I'll rock up to the laundry room expecting my machine to be ready to unload, only to see it's still got 10 more minutes on the clock.

This came to a head late last week when I had to wait an extra 15 minutes past the estimated completion time when I was in a hurry to get out of the flat. At that point, I decided I wanted to fix the problem.

# My Solution

Usefully, Circuit has a wonderful service called CircuitView - it lets you remotely see the state of the washing machines in your accomodation's laundry room so you can see if there's a spare machine.

![CircuitView](circuitview.png)

It also lets you see how long that's remaining on a running machines. 

From this, I build a web scraper using Python, Flask and BeautifulSoup that collects information about each of the machines at a given site.

Through an associated web UI, it's possible to "watch" a machine and have my app notify you near-instantly when a given machine has finished doing its thing. This was done with a super simple push notification service called [Ntfy](https://ntfy.sh).

> A quick note about Ntfy - it's such a wonderful tool to have around! It's super simple and easy to use, and is open source and selfhostable if you want to go down that route. It's perfect for this kind of small, hobbyist-level stuff. Props to [Philipp Heckel](https://github.com/binwiederhier), its author!

This then means that, instead of setting a best-guess timer and getting frustrated when it's wrong, or leaving your washing sat in a machine for ages after it's completed, you get a push notification to pretty much any device you want when your washing is finished! It makes the whole process that little bit more frictionless. It's great.

![Notifications](notifications.png)

You can see [the source code here](https://git.tdpain.net/codemicro/circuitbodge).
