Roasting
Profile drive
The server drives a roast from a profile: setpoint, heater and fan curves, events by time or temperature, and auto DROP.
Profile drive lets the server roast from a profile. Every second it sends the roaster the profile's setpoint, heater and fan, and fires the profile's events (a fan step at 4:00) by time or by bean temperature. It runs in the server, so the roast carries on with every browser closed. Or leave it off and roast by hand against the profile on the scope.
It needs a roaster with full control and a heater output (roaster setup). With control off or manual, the tab offers only a ghost run: the overlay, nothing sent.
Driving a roast
- Pick the profile in the Roast page's Next step card (Profile). It is drawn on the scope from CHARGE.
- Start the roast, open the Profile drive tab, choose a mode and press Drive the roaster. The roast sequence can start it for you at CHARGE (roast sequence).
- Or try it first: tick Ghost first (dry run). A ghost run shows what it would send and sends nothing; Engage switches it to live.
- While it runs the tab shows the profile time, each channel's value and the next events, each with +15s, Now and Skip.
The drive never switches heater power on. If it is off, the tab says so and offers Turn it on.
Modes
| Mode | What it does |
|---|---|
| Setpoint | The PID follows the profile's BT curve (closed loop). The default. |
| Feedforward | Plays the profile's heater % open loop; BT is not corrected. It repeats a recorded roast exactly: good for comparing beans, not for another batch size. |
| FF + PID | The profile's heater % does most of the work and the PID trims the error. |
Feedforward and FF + PID need a profile with heater data, such as one saved from a roast.
Replay fan plays the profile's fan as well (on when the profile has fan data; off, the fan stays where you set it). With fan assist on, the profile's fan is the ceiling and the assist trims below it. A drive never sends a fan below the roaster's fan floor: a lower profile fan goes out at the floor.
Timing and loop
Under Timing and loop on the tab:
| Setting | Choices | What it does |
|---|---|---|
| Events fire | Each event's own (default), By time, By BT | By BT fires an event when BT reaches its temperature after the turning point, so a slow or fast batch still gets its changes at the same bean temperature. |
| Align on | CHARGE (default), TP, DRY, FC | Once that landmark is marked live, the profile shifts so it lines up with this roast. The temperature difference there is shown, not applied. Until then it runs from CHARGE. |
| PID runs | Auto, On the roaster, On the server | Where the BT loop runs (control). Auto picks the roaster when it can. |
Events fire and Align on can be changed while the drive runs.
In Setpoint mode the setpoint is the profile's BT a little ahead, so the PID starts turning before the curve does: Settings → Roasting → Profile lookahead, default 20 s. With Adapt to the roaster on (the default) the lead shrinks, from a minute after CHARGE, by however far BT runs ahead of the profile, so BT does not end up ahead of it.
Taking over
- Touch a control (setpoint, heater, fan or mode) and that channel pauses ("paused: yours"); the profile keeps running underneath. Resume or Resume all sends the profile's current value and puts the roaster back in the drive's mode.
- Stop ends the drive and leaves the outputs where they are. Emergency stop, DROP and completing the roast stop it too. Pausing the recording does not.
- A stopped drive: if the roaster cuts its heater or the server restarts mid-roast, the Roast page offers Heater on and resume drive (it picks up where it stopped) or Roast by hand.
- Lost readings: with no fresh sample for 8 s the drive stops renewing the roaster's control lease, so a roaster that keeps a lease falls into its safe state by itself. At 20 s the drive stops.
Auto DROP
Once a profile is dialed in, Profile drive can mark DROP for you. It is off until you choose it in the profile's editor (Profiles → the profile → Edit → Auto DROP):
| Auto DROP | Drops when | The profile needs |
|---|---|---|
| At the drop time (the curve's end) | the profile time reaches the drop time | a drop time |
| At the end temperature | BT reaches the drop temperature, counted only once first crack is marked or the profile is past its first crack time, so an early spike cannot drop the roast | a drop temperature |
| Development after first crack | the profile's development time (drop minus first crack) has passed since you marked first crack | first crack and drop times |
Before it drops, the Roast page counts down with Cancel and your phones and notification channels get a notice. The countdown (Settings → Roasting → Auto DROP countdown, 3–60 s, default 10 s) ends on the drop itself. Cancel stops it for this roast only. Then DROP runs as when you press it: heater off, the fan to cool.
Auto DROP stays off when the roaster's DROP step is off (roast sequence) and when no drive runs. A ghost run shows when it would drop and never counts down.
From the command line
roast live shows a running drive: the profile time, auto DROP's state and, for a stopped
drive, why it stopped and the call that resumes it. roast profile edit <profile> --auto-drop time|bt|development|off sets a profile's auto DROP (the roast CLI).