Giter Club home page Giter Club logo

espresso-controller's Introduction

Espresso Controller

PID temperature control and monitoring for a Rancilio Silvia or comparable espresso machine. dashboard configuration

Table of Contents

Tech Stack

The application is a single Go binary implementing:

  • gRPC API as defined in espresso.proto,
  • dashboard web app using React and Material-UI, and
  • /metrics web endpoint for Prometheus scraping

serving on a single port (default 8080) of a Raspberry Pi.

Installation

Requirements

Wiring

Here is the original circuit diagram from the manual: unmodified Rewire it like this (default gpio pin numbers shown): modified

Note on Thermocouple Placement

The thermocouple should be attached securely to the outer wall of the boiler. On the Rancilio Silvia, a convenient way to accomplish this is to loosen the screw holding down the factory thermostat to the boiler. Then, the thermocouple can be slipped into the gap between the boiler and thermostat.

Raspi Setup

  1. Follow the Raspberry Pi Getting Started Guide. Be sure to connect it to a wifi network.

  2. Ensure wifi power saving mode is off.

    pi@raspberrypi:~ $ sudo iw wlan0 set power_save off
    pi@raspberrypi:~ $ iw wlan0 get power_save
    Power save: off
  3. Take note of the Raspberry Pi's private ip address.

    pi@raspberrypi:~ $ hostname -I
    192.168.1.124
  4. Download the application and start it.

    pi@raspberrypi:~ $ curl -L -o espresso https://github.com/gregorychen3/espresso-controller/releases/download/v0.2.5/espresso
    pi@raspberrypi:~ $ chmod +x espresso
    pi@raspberrypi:~ $ ./espresso --help
    Control and monitor an espresso machine
    
    Usage:
      espresso [flags]
    
    Flags:
          --boiler-therm-clk-pin int    The GPIO pin connected to the boiler thermometer's max31855 clock (default 4)
          --boiler-therm-cs-pin int     The GPIO pin connected to the boiler thermometer's max31855 chip select, aka chip enable (default 3)
          --boiler-therm-miso-pin int   The GPIO pin connected to the boiler thermometer's max31855 data output (default 2)
      -h, --help                        help for espresso
      -p, --port string                 Port on which the espresso server should listen (default "8080")
      -r, --relay-pin int               The GPIO connected to the relay (default 21)
      -v, --verbose                     verbose output
    pi@raspberrypi:~ $ ./espresso -v
    
         ╓▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
        █▀─╓▄         ┌▄▄┌         ▄▄ ╙█
        █ ╫█╠█ ╔▓▓  ▄█▀╟█╙█▄  ╔▓▓ █▌╟█ ██▓▄
        █  ╙╙       █  ╘▀  █▄      ╙╙  █─▐█
        █ ╔█▀█ ╓▄▄  █▌    ▄█  ╓▄▄ ▓██▌ █▄██
        █  ▀▀▀       ╙▀▀▀▀╙       ╙▀▀└ █╨
        ╙▀██▓▓▓▓▓▓██▓▓▓▓▓▓▓▓██▓██▓▓▓██▀╙
     ╔▓▓▓▓██▓▓▓▓▓▓█▌        ▐▌ ▐█▓▓▓██▓▓▓▄
     ╫█▄▄▄▄▄▄▄▄▄▄▄██▄▄▄▄▄▄▄▄██      ▐█ ▄██▄
          ╫▌          █▌▄█          ▐█ █▌▐█
          ╫▌           └└─          ▐█ █▄▐█
          ╫▌      ╒▓▓▓▓▓▓▓▓▓▓▓▓▓▄   ▐█ ╙╙╙└
          ╫▌      ▐█▄▄▄▄▄▄▄▄██  █▌  ▐█
          ╫▌      ╘█        █▀▀▀▀   ▐█
          █▌       ╠█▓▄┌ ▄▄█▌       ▐█
        █▀╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙╙█
        █                              █─
        ╙▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
    
    For more information, go to https://github.com/gregorychen3/espresso-controller
    
    2020-05-24T16:45:27.372-0400	INFO	espresso/server.go:115	Initializing gRPC server	{"port": 8080}
    2020-05-24T16:45:27.372-0400	INFO	espresso/server.go:123	Initializing gRPC web server	{"port": 8080}

    Or, start as a background process and leave it running.

    pi@raspberrypi:~ $ ./espresso &
    pi@raspberrypi:~ $ exit

Control and monitor

Finally, visit http://<ip_addr_from_step_2>:8080 using a web browser. Control and monitor the system from the dashboard there.

Finished

finished installation

Contributing

See the development README.

Credits

Logo icon made by catkuro from flaticon.com and converted to ASCII art using asciiart.club.

espresso-controller's People

Contributors

kev-guy avatar luiccn avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.