{"id":16521477,"url":"https://github.com/yours3lf/roast","last_synced_at":"2025-03-03T01:17:41.196Z","repository":{"id":177687805,"uuid":"527159417","full_name":"Yours3lf/roast","owner":"Yours3lf","description":"Coffee roasting software for the Raspberry Pi","archived":false,"fork":false,"pushed_at":"2024-02-19T21:03:16.000Z","size":290,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-13T11:50:42.858Z","etag":null,"topics":["coffee","raspberry-pi","roasting"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yours3lf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-21T09:25:40.000Z","updated_at":"2024-02-10T16:41:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"652bac39-b62c-4159-86fc-0bc1cfee739e","html_url":"https://github.com/Yours3lf/roast","commit_stats":{"total_commits":69,"total_committers":1,"mean_commits":69.0,"dds":0.0,"last_synced_commit":"f2f52071bca2002dbd85d31cf8a1991c5cd7edda"},"previous_names":["yours3lf/roast"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yours3lf%2Froast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yours3lf%2Froast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yours3lf%2Froast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yours3lf%2Froast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yours3lf","download_url":"https://codeload.github.com/Yours3lf/roast/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241592149,"owners_count":19987311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coffee","raspberry-pi","roasting"],"created_at":"2024-10-11T16:56:19.480Z","updated_at":"2025-03-03T01:17:41.173Z","avatar_url":"https://github.com/Yours3lf.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Roast coffee roasting software\n\n## Overview\nIt utilises a client-server model where the server runs on a Raspberry Pi (3B+).\nThere it gathers data from a BME280 temperature, humidity and pressure sensor and an MLX90640 thermal camera.\nIt sends this data over using the websockets protocol to a client that runs inside a webpage running on a PC.\nThis client visualises the thermal camera data and allows the user to log roasting and control events.\nIt also allows the user to note various properties of the coffee beans (pre/post roast weight etc.)\nand take notes on the roasting process and resulting coffee flavour.\nThis data can then be saved to a JSON file, shared and loaded on demand.\n\n## Hardware setup\n- Behmor 2020SR Plus\n  - with light bulb changed to a natural 6500k led bulb\n  - hole drilled on left side for the thermal camera\n  - thermal camera is mounted over the hole with an aluminium bracket\n  - a coke can is modified to serve as an air funnel, taped to the side using insulating tape\n  - aluminium foil over the door with a cutout for observing the coffee\n  - plugged into a watt meter for monitoring\n- 120mm PC fan with a variable voltage ac-dc power supply\n  - pointed down the coke can towards the thermal camera\n  - together with the coke can it provides positive air pressure so that the thermal camera stays clean and cool (like the Aillio IBTS)\n- Raspberry Pi 3B+\n  - BME280 air temperature, humidity, pressure sensor\n  - MLX90640 thermal camera\n- Laptop\n- Hair dryer on cold setting for improved cooling phase performance\n\n## Usage\n- Create makefile using Cmake. Needs:\n  - system threads lib\n  - OpenSSL\n  - MLX90640 API lib\n  - BME280 python lib\n  - Python 3\n- Use make to compile Server executable\n- Run the server: `./roast [ip address] [optional port] [optional thermal cam refresh rate]`\n  - Default port: 50000\n  - Default refresh rate: 4HZ\n- Open the Client.html file in Chrome\n- Click the cog icon in the top left corner to open the settings dialog\n- Connect to the server by entering the websocket address and clicking the connect button\n  - Websocket address: `ws://[ip address]:[port]`\n  - Observe successful connection message\n- Close settings dialog\n- Start roasting on your Behmor\n  - Select weight\n  - Press start\n  - Select manual heat setting\n- Click the start button on the left to start recording data\n\n## Calibrating beanFilterMask\nDepending on your physical setup, ie. where your thermal camera points, you need a different beanFilterMask array than provided.\n- To calibrate this crucial mask heat up about 250g of roasted (brown) coffee to about 180c. \n- Then add these hot coffee beans into the roaster basket.\n- Next, start your roasting session\n  - on the lowest power setting (P1 manual, ie. heating off)\n  - the highest drum speed setting.\n- Record the thermal camera output through the roasting client. The hot beans should be clearly distinguishable from the cold background.\n- You can edit your beanFilterMask by ticking that little box by the thermal camera output.\n- Select pixels with the left mouse button and deselect with the right mouse button.\n- When satisfied you can print your mask using printBeanFilterMask() through the javascript console.\n- Replacing the beanFilterMask in the html code with this should calibrate your mask.\n- Reload your client file to inspect the results\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyours3lf%2Froast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyours3lf%2Froast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyours3lf%2Froast/lists"}