Adapt Sud/SudTask/demo to the new flat heat/hold schedule schema
sude/sud_0010.json moved from a list of combined ramp+hold+wait
"Rasten" with global stirrer constants to a flat "schedule" list of
explicit {"type": "heat"|"hold", ...} steps, each carrying its own
stirrer_speed/stirrer_time_on/stirrer_time_off and an optional
user_wait_for_continue (+ user_message).
- components/sud.py: Sud now tracks the current `step` instead of
`rast`; "heat" steps enter RAMPING (advanced externally via
temp_reached()), "hold" steps enter HOLDING and count down
`duration` minutes (0 if omitted). Either step type can pause in
WAIT_USER via user_wait_for_continue, surfaced through the new
user_message attribute.
- tasks/sud.py: SudTask only pushes theta_soll/heatrate_soll on
"heat" steps, converts each step's stirrer_time_on/off into a
duty_cycle/cycle_time on every step change (replacing the old
state-based RAMPING/HOLDING stirrer switching), and broadcasts
user_message changes. Stirring is now fully schedule-driven instead
of implicitly stopped on WAIT_USER/DONE (DONE still stops it, since
there's no step left to read settings from).
- scripts/demos/sud/demo_sud.py: mirrors the same step-driven wiring.
- README's Mash schedules section rewritten for the new schema.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+69
-21
@@ -5,35 +5,83 @@
|
||||
"pot_material" : "Edelstahl 18/10",
|
||||
"Schuettung_kg" : 5.21,
|
||||
"Wasser_kg" : 22,
|
||||
"stirrSpeedHeat" : 30,
|
||||
"stirrSpeedRast" : 30,
|
||||
"stirrDutyRast" : 1.0,
|
||||
"stirrCycleTime" : 120,
|
||||
"Rasten" :
|
||||
"schedule":
|
||||
[
|
||||
{
|
||||
"time" : 0,
|
||||
"temp" : 57.0,
|
||||
"heatRate" : 1.00,
|
||||
"waitForUser" : true
|
||||
"type": "heat",
|
||||
"descr": "Heizen für Einmaischen",
|
||||
"rate": 1.8,
|
||||
"temp": 57,
|
||||
"stirrer_speed": 50,
|
||||
"stirrer_time_on": 90,
|
||||
"stirrer_time_off": 0
|
||||
},
|
||||
{
|
||||
"time" : 40,
|
||||
"temp" : 63.0,
|
||||
"heatRate" : 1.00,
|
||||
"waitForUser" : false
|
||||
"type": "hold",
|
||||
"descr": "Einmaischen einfüllen",
|
||||
"stirrer_speed": 0,
|
||||
"user_message": "Bitte Malz einfüllen und bestätigen",
|
||||
"user_wait_for_continue" : true
|
||||
},
|
||||
{
|
||||
"time" : 30,
|
||||
"temp" : 72.0,
|
||||
"heatRate" : 1.00,
|
||||
"waitForUser" : true
|
||||
"type": "hold",
|
||||
"descr": "Einmaischen Rast",
|
||||
"duration" : 30,
|
||||
"stirrer_speed": 30,
|
||||
"stirrer_time_on": 30,
|
||||
"stirrer_time_off": 30
|
||||
},
|
||||
{
|
||||
"time" : 0,
|
||||
"temp" : 76.0,
|
||||
"heatRate" : 1.00,
|
||||
"waitForUser" : true
|
||||
"type": "heat",
|
||||
"descr": "Heizen Glucose-Rast",
|
||||
"rate": 1.0,
|
||||
"temp": 63,
|
||||
"stirrer_speed": 50,
|
||||
"stirrer_time_on": 90,
|
||||
"stirrer_time_off": 0
|
||||
},
|
||||
{
|
||||
"type": "hold",
|
||||
"descr": "Halten Glucose-Rast",
|
||||
"duration" : 40,
|
||||
"stirrer_speed": 30,
|
||||
"stirrer_time_on": 30,
|
||||
"stirrer_time_off": 30
|
||||
},
|
||||
{
|
||||
"type": "heat",
|
||||
"descr": "Heizen Verzuckerungs-Rast",
|
||||
"rate": 1.0,
|
||||
"temp": 72,
|
||||
"stirrer_speed": 50,
|
||||
"stirrer_time_on": 90,
|
||||
"stirrer_time_off": 0
|
||||
},
|
||||
{
|
||||
"type": "hold",
|
||||
"descr": "Halten Verzuckerungs-Rast",
|
||||
"duration" : 30,
|
||||
"stirrer_speed": 30,
|
||||
"stirrer_time_on": 30,
|
||||
"stirrer_time_off": 30
|
||||
},
|
||||
{
|
||||
"type": "heat",
|
||||
"descr": "Heizen Abmaischen",
|
||||
"rate": 1.0,
|
||||
"temp": 76,
|
||||
"stirrer_speed": 50,
|
||||
"stirrer_time_on": 90,
|
||||
"stirrer_time_off": 0
|
||||
},
|
||||
{
|
||||
"type": "hold",
|
||||
"descr": "Halten Abmaischen",
|
||||
"duration" : 30,
|
||||
"stirrer_speed": 30,
|
||||
"stirrer_time_on": 30,
|
||||
"stirrer_time_off": 30,
|
||||
"user_wait_for_continue" : true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user