From 33f75c22d2a450aee98a06b3f29b39987151b76e Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 20 Jun 2026 07:28:26 +0200 Subject: [PATCH] Print each Sud step's number and description in the demo Makes it easier to follow which schedule step is currently active when watching the demo run. Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_01CgR9tPaSzFkAwRAUyeaaCD --- components/sud.py | 6 +++--- scripts/demos/sud/demo_sud.py | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/components/sud.py b/components/sud.py index 645adbd..03991d2 100644 --- a/components/sud.py +++ b/components/sud.py @@ -32,11 +32,11 @@ def _merge_defaults(default, override): return merged -def _build_step(defaults, raw_step): +def _build_step(number, defaults, raw_step): """Fills in a schedule step with default.step's values. A step is a ramp or a hold depending on which of those keys it specifies; the other is left out rather than synthesized from defaults.""" - step = {} + step = {'number': number} for key in ('descr', 'user_message', 'user_wait_for_continue'): step[key] = raw_step.get(key, defaults.get(key)) for key in ('ramp', 'hold'): @@ -55,7 +55,7 @@ class Sud(AttributeChange): self.description = data.get('Description', '') step_defaults = data.get('default', {}).get('step', {}) - self.schedule = [_build_step(step_defaults, raw) for raw in data['steps']] + self.schedule = [_build_step(i + 1, step_defaults, raw) for i, raw in enumerate(data['steps'])] self.pot_mass = data.get('pot_mass', 0) self.pot_material = data.get('pot_material') diff --git a/scripts/demos/sud/demo_sud.py b/scripts/demos/sud/demo_sud.py index f0041a7..7f0ca52 100644 --- a/scripts/demos/sud/demo_sud.py +++ b/scripts/demos/sud/demo_sud.py @@ -67,6 +67,7 @@ if __name__ == '__main__': def on_step_changed(step): if step is not None: + print(f"Step {step['number']}: {step['descr']}") if 'ramp' in step: ctrl.set_theta_soll(step['ramp']['temp']) ctrl.set_heatrate_soll(step['ramp']['rate'])