During a previous hackathon, I had the chance to try out the Paulig Muki, a coffee mug which has a Bluetooth LE radio and an e-paper screen, which is powered by the heat from the liquid inside the mug. By default, the mug works like a photo frame, coming with an app that lets you send pictures to the mug. There's also an API for sending images. So I wondered how I could exploit this API to make something which is simple, fun and useful for me.

The result is BrewTube, an app that integrates with the Muki to send TFL service updates to the coffee mug. The idea is that you can get this data while having your morning coffee, so that you can change your plans if there's a delay on the line.

How I built it

It uses an Android app which contains the Muki API. The user selects a tube line, and the status is requested from TFL's open data API to find out its current status. Then, I use Android's canvas library to construct a bitmap that's the same size as the mug's e-paper screen, and populate it with the service update. Finally, I use the Muki API to push this via Bluetooth to the mug.

Challenges I ran into

  • The mug can be very temperamental, since it is powered by the change in temperature of the mug. Sometimes it also takes a little time for the phone to connect to the mug.
  • Drawing bitmap images is hard and I spend a long time rearranging things.
  • General time constraints of working solo on a hack.
  • I had no prior experience doing Android.

Accomplishments that I'm proud of

  • Well, it works

What I learned

  • I can now make Android apps

What's next for BrewTube

  • Rerouting options?
  • Automated mug connection acquisition and sending data.
  • I'm actually going to use this in real life so I'm motivated to continue working on it.

Built With

Share this project: