Revert Sud hold "duration" back to minutes

Reverts 19dc7a9 ("Fix Sud hold duration units: seconds, not minutes")
per explicit instruction - duration is minutes again. Re-adds the
*60.0 conversion in Sud._advance() (hold_remaining is ticked in
simulated seconds), the matching conversion in the forecast plot's
_estimate_course(), and flips the README wording back.
This commit is contained in:
2026-06-21 00:32:55 +02:00
parent 189d1e24d2
commit 2f7d48b2cb
3 changed files with 5 additions and 3 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ Files under `sude/` describe a brew's mash schedule ("Sud"): `pot_mass`,
- a ramp — `"ramp": {"rate": ..., "temp": ...}` — ramp to `temp` at `rate`
(°C/min), or
- a hold — `"hold": {"duration": ...}` — hold the current target for
`duration` seconds (omit/`0` for an immediate step).
`duration` minutes (omit/`0` for an immediate step).
Both `ramp` and `hold` carry a `stirrer` block (`speed`, `interval_time`,
`on_ratio`): `interval_time: 0` runs the stirrer continuously at `speed`;
+1 -1
View File
@@ -143,7 +143,7 @@ class SudForecastPlot(FigureCanvasQTAgg):
t.append(t[-1] + abs(target - theta[-1]) / rate * 60.0)
theta.append(target)
elif hold is not None:
t.append(t[-1] + hold.get('duration', 0))
t.append(t[-1] + hold.get('duration', 0) * 60.0)
theta.append(theta[-1])
return t, theta
+3 -1
View File
@@ -178,7 +178,9 @@ class Sud(AttributeChange):
if 'ramp' in next_step:
self.state = SudState.RAMPING
else:
self.hold_remaining = next_step['hold'].get('duration', 0)
# "duration" is in minutes; hold_remaining (ticked by tick()'s
# simulated-seconds dt) is in seconds.
self.hold_remaining = next_step['hold'].get('duration', 0) * 60.0
self.state = SudState.HOLDING
self.user_message = next_step.get('user_message')