Smarter Coffee machine + Raspberry Pi = IoT coffeetime

smarter-coffee-raspberry-pi

The wifi coffee machine by smarter coffee is not a secure device. It can’t be allowed to connect to your main router, but it needs to be controlled by a group remotely …plus it’s fun to play around with right?

Solution:

Connect it to a satellite router with only a RaspberryPi for company. This satellite router can then be locked down to allow only these devices to connect. As no phones can be connected their iOS and Android apps can’t be used, so to make requests we’ll have the RaspberryPi make requests to the coffee machine instead. We can then call they by having Hubot on the Pi we can also have it connected to the office chatroom (hipchat or slack), or run a web server on it and have a secure REST API.

githubLink

You’ll need:

  • 1 Smarter Coffee machine (untested but might also work with iKettle 2.0)
  • 1 Raspberry Pi or Pi Zero
  • 1 Router – highly recommended to be a satellite off your main router

How to install, test and run it:

We’re going to create a project directory, clone the code into it, edit it for your network, and run it to test.

Open the terminal on your RaspberryPi or have it boot to command line.

$mkdir project-coffee

$cd project-coffee

$git clone https://github.com/AdenForshaw/smarter-coffee-api.git

Use Fing app or nmap to find the IP address of your coffee machine. e.g. 192.168.1.61

$cd smarter-coffee-api

$nano smarter-coffee-api.py

$change the IP address to you coffee machines

Now we’ll test it with the ‘reset’ command

$python smarter-coffee-api.py reset

If the machine lit up and says ‘reset’ then test complete!

If not then check the IP address, connections, and router settings.

Now set brew size/ strength/ brew type physically on the machine, and call the brew method –

$python smarter-coffee-api.py brew

Toast to your success!

bill-murry-coffee

Your hack is complete! What next?

Security: With any IoT device, hacked or not, you should do a security audit once its installed. In this case check the wifi router the project is on is locked down

Ai: You could store the date/time each brew method is called, then use this to predict when the next brew would be called!

Expand: You could expand on the basic API i’ve made in GitHub, and add more methods yourself, like brew size/ strength etc, and add it to the repo!

Team access: You could have a web server on the RaspPi, and have this project called as a REST API, or install Hubot and have it called from your team hipchat/slack/etc

Home automation: Create a smartthings device type and control it with your home automation switches, triggers or voice!

Whatever you do please let me know, i’m always interested!

Aden Forshaw

Aden Forshaw is Creative Director and Chief Technical Officer over at Coull.com

7 thoughts on “Smarter Coffee machine + Raspberry Pi = IoT coffeetime

  1. Hi Aden,

    Thanks for your work. Since the official android app doesn’t detect my Smarter Coffee machine, I decided to start writing my own based on your code. Currently (since yesterday) I’m prototyping a full Windows Client and your code has been a great help. One of my friends is also helping me writie an api to interface with the device, so we got a nice dev. team here.
    I was just wondering if you ever figured out any other commands to send that could be useful? Since I can’t wireshark the coffee maker to get the commands (app doesn’t connect). I’ve decompiled the APK and am filtering through the files to look for them, but it’s not that obvious (yet).
    Kind regards,
    Ngent

  2. Great work on the windows client! Unfortunately i won’t be able to have another hack at it to find the rest for at least a month. Those i found by a brute force script looping ASCII/HEX codes at the machine. Looking at the response that come back from the machine which is 3 codes long, I’m assuming that the other commands will be multiple codes long instead of the single codes used for reset & brew. PacketSender is a good app to test with if you don’t want to script.

    Further tests i would advise require an app that connects, like intercepting the codes sent by the mobile app to the machine with Wireshark, proxy the phone communication with Charles, or log data from the phone directly. It’s not a secure device so should be possible.

    Let me know how you get on though!

  3. Hi!
    I found your work when i was googeling the coffee machine. Great work!.

    I have also started to build an python client for controlling this machine. Have a look if you want some inspiration.
    I have found some more commands like set cups, strength, grinder, filter and so on..
    Im also in the early beginning of hacking this device.
    https://github.com/nanab/smartercoffee

    Perhaps we can have a full api soon!

    //Ola

  4. That’s great work, well done Ola! Great documentation in your code too, that’ll make it easy for others to build on it with the new codes you’ve found.

    I hope Smarter release an official API soon for the coffee machine and the new devices they’ve just announced at CES.

  5. Hi guys!
    Here’s a first version of the Windows Client for those who want it…
    Many improvements need to be made, but this version should function for now.

    I don’t think I’ll have a lot of time improving the next coming weeks, due to renovations, so I figured I might as well release this.
    Let me know what you think.
    I promise I’ll upload my source code too when I get version 2 finished… thanks!

    Download link:
    https://drive.google.com/open?id=0BzyonFh_-S7rZjEyN3FLdXBtRFU

    Instructions:
    -Download .zip
    -Unpack to a folder
    -Change host in .py files
    -Make coffee

  6. Hi

    I have a iKettle 2 and wrote a nice (still ugly code) interface for it with a console, monitor, command line options, ability to see and send raw messages.

    https://github.com/Tristan79/iBrew/

    I took the Smarter command codes from your source (and others I could find).
    And compiled a list

    https://github.com/Tristan79/iBrew/blob/master/smarter.txt

    It would be nice if you could contribute some raw codes of the smarter coffee machine.
    I only tested it on a iKettle, it should (maybe with some tweaking, hope not) work on the smarter coffee. Anyway. Thank!

Leave a Reply

Your email address will not be published. Required fields are marked *