# CoffeePi - Automating portafilter machines CoffeePi is an openly available project for customizing and automating portafilter machines. This project is deployed on a raspberry Pi 3 and a Astoria Argenta AEP. For connecting all sensors and actuators to the IoT-Device, a breakoutboard was develeoped. ## Features of this project The following features are currently implemented or in progress: - Openhab interface - SQLite Database backend - 16x2 LC-Display and two buttons for user interaction - Multithreaded and signal based Software architecture with very low CPU workload - 3 5V/230V Relays controlling the main power, pump and the heating circuit - 1-Wire Temperatur sensor (DS18B20) - RGB LED Stripe with Controller - Logging Framework with different verbosity levels - Timer Framework - Display Page Management corresponding to the machine state with delayed pages, prepages (page before the actual page corresponding to the current state) and postpages (similar to prepages) - FSM controlling the and responding to the hardwarestate of the machine - Event Manager with threads registering events and event subscriber ## Software Features - Auto-Brewing with predefinded Preinfusion (Amount-triggered) and predefinded Soak-Time. The brewing itself stops automatically after 30s or 65ml - Cleaning Program - Tracking of the number of brewed espressi and the comsumed energy (in kWh) - Cleaning reminder after 35 cups or 90 days - large user menu with information and settings (in progress) - Reboot of the device and restart of the software available through the menu - LCD Backlight turn off during idle ## Deploy the project in your own coffeemachine: All sensors(Buttons, LCD, Temperatur-Sensor, I2C-RGB-Stripe Controller) have to be available. The relays have to intercept the powercircuit, pump circuit and the heating circuit. All hardware access is either in a dedicated class (like 1-Wire) or in the hardware abstraction class (hal.h)