Skip to main content

Interface for interacting with Hottop KN-8828b-2k+ roasters

Project description

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:

  1. Install the pyHotop module:

pip install pyhottop or python install

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

pyhottop-test test


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



  • Bugfix: Capture error when validating byte sequence


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


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


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


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


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


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


  • 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


  • 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


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


  • 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


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


  • 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

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyhottop-0.2.6.tar.gz (28.5 kB view hashes)

Uploaded source

Built Distributions

pyhottop-0.2.6-py3.6.egg (58.0 kB view hashes)

Uploaded 3 6

pyhottop-0.2.6-py2-none-any.whl (29.7 kB view hashes)

Uploaded py2

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page