Commit Graph
28 Commits
Author SHA1 Message Date
jensandClaude Sonnet 4.6 7e131df4ca Add mash-schedule (Sud) automation: temp/rate sequencing + stirrer switching
brewpi.py had a dead -m/--model CLI arg and sude/*.json schedules were
pure data with no code to drive them, despite the README documenting
them as if they were already wired up.

Add components/sud.py's Sud, which loads a sude/*.json schedule and
steps through its Rasten (ramp -> hold -> optional wait-for-user ->
next rest), and tasks/sud.py's SudTask, which drives the temperature
controller's theta_soll/heatrate_soll from the current rest and
switches the stirrer between continuous (ramping) and intermittent
(holding, via stirrSpeedRast/stirrDutyRast/stirrCycleTime) operation.
Exposes progress on a new "Sud" WebSocket channel and accepts
Start/Confirm commands. Enabled via a new optional top-level "sud"
config key (see config.json.templ/.sim).

"Reached target" is detected via abs(theta_ist - theta_soll_set) <
tolerance rather than tc.state == HOLD, since the latter can still
read HOLD left over from the previous rest for one tick after a new
target is pushed (tc.state only updates on the controller's own,
independently-scheduled process() tick).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 17:54:42 +02:00
jensandClaude Sonnet 4.6 b3d965fec9 Drop debug prints from TcTask's ist-value change handlers
on_temp_ist_changed/on_rate_ist_changed printed every update in
addition to forwarding it over the WebSocket, spamming stdout once
per controller tick.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 17:17:19 +02:00
jens a267e4004e - improved tempsensor exception 2021-10-19 11:42:52 +02:00
jens 6e7f8c2c59 - removed AtemperatureSensor::process
- task is AttributeChange
- hareden against Tempsensor exceptions
2021-10-19 11:29:11 +02:00
jens 54f2322c07 - added generic tracer class
- create tracer for TC
- tracer task runs TC-Tracer
2021-10-18 17:57:40 +02:00
jens 236c33d8d6 - removed white space 2021-10-18 17:20:50 +02:00
jens 9b997b8348 - generalized heaters 2021-10-18 14:32:56 +02:00
jens 6dc5e90956 - permit heater to override power 2021-10-12 11:37:24 +01:00
jens 588f87592c - fixed path 2021-10-09 12:03:19 +01:00
jens eb58a39159 - use path for logs 2021-10-09 12:59:09 +02:00
jens 33fd6fa5ab - fixed heater 2021-10-09 12:45:01 +02:00
jens ac6139cae7 - fixed heater 2021-10-09 11:40:29 +01:00
jens fb71f9554c - fixed heater 2021-10-09 12:35:39 +02:00
jens c50f02510c - fixed heater 2021-10-09 12:33:21 +02:00
jens bf019733b2 - added abstarct PID APid
- added PidFactory
- use variable args for factory
2021-10-02 11:10:43 +02:00
jens d3e61ab72f - added heater power 2020-12-20 13:27:52 +01:00
jens a3868b0439 - added vars to tracer
- added result.m for octave
2020-12-20 12:33:52 +01:00
jens cccfd539c6 - added tracer 2020-12-20 12:15:42 +01:00
jens 21533e5084 - removed recognising of activate 2020-12-18 19:30:31 +01:00
jens 1e80b02216 - redefine pulse period 2020-12-18 17:33:26 +01:00
jens c8660ca60e - fixed hendi power 2020-12-18 17:03:17 +01:00
jens 4e508c86c5 - redefine activate method
- for task introduced open() conext method
2020-12-18 15:58:02 +01:00
jens adf664ca08 - create bool expression 2020-12-17 18:25:34 +01:00
jens 3f0983b19c - fixed stirrer task 2020-12-17 18:04:22 +01:00
jens 87cb265faf - reduce debug log
- wired stirrer to emit messages
2020-12-17 16:58:03 +01:00
jens 87d394ca17 - added listener for 'activate' 2020-12-17 16:35:30 +01:00
jens ddf8003f5c - refactored
- integrated stirrer
2020-12-17 16:28:50 +01:00
jens fb37750ec7 - refactored tasks 2020-12-17 14:45:43 +01:00