Skip to content

splitkeycoffee/pyhottop

Repository files navigation

Python Hottop Client

https://readthedocs.org/projects/pyhottop/badge/?version=latest

pyHottop gives you the power to control your Hottop KN-8828b-2k+ roaster directly through python code. This library is meant to be used within applications and should not be used by itself to conduct a roast. Questions, comments or for support needs, please use the issues page on Github.

Getting Started

In order to interact with your Hottop roaster, you need to ensure your model has a USB-serial port which comes standard with the KN-8828b-2k+.

  1. Install the CP210x USB driver to read from the serial port:

https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

  1. Install the pyHotop module:

pip install pyhottop or python setup.py install

  1. Plug your Hottop roaster into your laptop.
  2. Test connectivity to the roaster by running the diagnostic utility:

pyhottop-test test

Features

This library provides full control of the Hottop roaster. Built-in callback functionality allows you to build applications that decouple the processing logic from the library from the core of your application.

  • Stream Hottop readings
    • Easy-to-use callbacks that return readings
    • Adjustable polling interval
    • Human-readable settings
    • Flexible collection of data
    • Debugging interface
  • Control the Hottop directly
    • Heater settings
    • Fan speeds
    • Drum motor toggle
    • Cooling motor toggle
    • Solenoid (drum door) toggle
    • Chaff tray (detection) reader
  • Auto-discover roaster connection
    • Loops over USB connections to find the proper serial

Changelog

2017-03-15

  • Bugfix: Capture error when validating byte sequence

2017-03-07

  • Change: Removed non-python3 dict method
  • Bugfix: Error in valid config checking

2017-02-24

  • Change: Added logic to add event code to find a valid configuration before saving

2017-02-10

  • Change: Added logic to turning point logic to avoid setting too soon

2017-12-20

  • Feature: Added a mock service to simulate a roast without being connected to a machine

2017-12-10

  • Bugfix: Removed the reset on start as it clears any properties set by the user

2017-12-06

  • Change: Keep the drum on by default to avoid any stalls

2017-12-03

  • Change: Wrap the buffer read and pull from cache if it continues to fail
  • Change: Adjusted lower bound temperature to 50
  • Feature: Reset all the roast settings when starting a roast

2017-12-02

  • Bugfix: Called the proper logging object on buffer measurement
  • Change: Added raw buffer responses to the event log
  • Feature: Added a validate routine to the buffer read to account for inaccurate responses from the roaster
  • Feature: Automatically derive charge and turning point events based on temperature data

2017-12-01

  • Bugfix: Turned drum motor on when doing a cool-down to push beans out

2017-11-29

  • Bugfix: Replaced existing extenal_temp with environment_temp
  • Bugfix: Fixed issue with buffer retry loop where it was not being called
  • Change: Adjusted default interval to 1 second to avoid buffer issues
  • Change: Toggle serial connection if having trouble reading buffer

2017-11-28

  • Change: Adjusted duration to be of format MM:SS instead of total seconds
  • Change: Return roast state when toggling monitoring

2017-11-24

  • Feature: several new methods for getting additional roast details
  • Change: Refactored code related to tracking roast properties and timing
  • Change: Updated documentation within the code
  • Bugfix: when running with python3 due to queue library