-
442b032117
Cap the forecast sent over the wire to avoid exceeding WebSocket max_size

jensandClaude Sonnet 4.6
2026-06-22 21:28:30 +02:00
-
4d98dacb49
Consolidate config.json.sim into config.json.templ

jensandClaude Sonnet 4.6
2026-06-22 21:27:58 +02:00
-
1f146dbc0d
GUI: draw the forecast line solid instead of dashed

jensandClaude Sonnet 4.6
2026-06-22 20:43:07 +02:00
-
5ccfcef679
Add explicit initial grain_mass/water_mass to the Sud doc

jensandClaude Sonnet 4.6
2026-06-22 20:19:25 +02:00
-
b925934e57
GUI: show estimated pot/water/grain mass on the step status line

jensandClaude Sonnet 4.6
2026-06-22 20:05:41 +02:00
-
77e68afef1
Keep plant/temp control inert until a Sud is actually loaded

jensandClaude Sonnet 4.6
2026-06-22 20:05:33 +02:00
-
51add6fd56
Apply a loaded Sud's plant params immediately, not just once a run starts

jensandClaude Sonnet 4.6
2026-06-22 19:37:20 +02:00
-
868c35f4e8
SudForecastEstimator no longer needs plant_params - the doc supplies it

jensandClaude Sonnet 4.6
2026-06-22 19:01:28 +02:00
-
f1688d3c71
Derive Pot's L/Td from the Sud doc instead of a fixed server default

jensandClaude Sonnet 4.6
2026-06-22 18:45:07 +02:00
-
96fe7ce90c
Require TempController(Smith)'s model params/ambient via setters; add comprehensive process() checks

jensandClaude Sonnet 4.6
2026-06-22 18:31:58 +02:00
-
0a6d3e6462
TempControllerBase: require PID gains via set_params(), not the constructor

jensandClaude Sonnet 4.6
2026-06-22 18:21:20 +02:00
-
296d3a333d
Pot: require plant params and ambient temperature via setters, not the constructor

jensandClaude Sonnet 4.6
2026-06-22 18:15:08 +02:00
-
e0bd3acc26
Remove TracerTask

jensandClaude Sonnet 4.6
2026-06-22 18:03:48 +02:00
-
6c50a819fc
Remove the unused tc_trace logging

jensandClaude Sonnet 4.6
2026-06-22 17:50:46 +02:00
-
c1f4bac3f2
Log each Sud run's measured data and forecast to JSON for offline analysis

jensandClaude Sonnet 4.6
2026-06-22 17:44:08 +02:00
-
031b13ca2c
Fill the post-confirm forecast gap with the real setpoint, not a mid-ramp snapshot

jensandClaude Sonnet 4.6
2026-06-22 17:24:02 +02:00
-
84b1607c78
Forecast a Sud schedule through its confirm steps, not just up to the first one

jensandClaude Sonnet 4.6
2026-06-22 17:12:19 +02:00
-
6e5fd23ccb
docs: refresh README for piecewise Sud forecasting

jensandClaude Sonnet 4.6
2026-06-22 16:37:38 +02:00
-
57b86bc075
Make the Sud forecast piecewise, computed once per segment

jensandClaude Sonnet 4.6
2026-06-22 16:33:40 +02:00
-
41b06d8961
Eliminate the naive forecast; fix two bugs that hijacked the plot

jensandClaude Sonnet 4.6
2026-06-22 14:04:02 +02:00
-
8c23a2c6ac
Clear the Sud Load-rejection Error so it doesn't get replayed as stale

jensandClaude Sonnet 4.6
2026-06-22 13:20:24 +02:00
-
1af8c39926
Surface Sud's Load rejection as a server-driven error, not GUI guesswork

jensandClaude Sonnet 4.6
2026-06-22 13:01:01 +02:00
-
de92559e31
added two new suds
jens
2026-06-22 12:48:37 +02:00
-
44b1b0c705
Have Sud report its own tick-counted elapsed time to clients

jensandClaude Sonnet 4.6
2026-06-22 11:21:39 +02:00
-
76d3a6047c
Seed the forecast estimator's throwaway controller with start_theta

jensandClaude Sonnet 4.6
2026-06-22 10:22:36 +02:00
-
7c95a3bde3
Marshal websocket recv callbacks onto the Qt GUI thread

jensandClaude Sonnet 4.6
2026-06-22 10:22:18 +02:00
-
2bdd3203cf
Make Sud steps ramp based on the actual temperature gap, not a 'ramp' key

jensandClaude Sonnet 4.6
2026-06-22 09:35:53 +02:00
-
48d5235558
docs: add components/sud.py step lifecycle spec

jensandClaude Sonnet 4.6
2026-06-22 08:40:45 +02:00
-
7d79d885b5
Fix dynamic forecast dashed line drifting right during a run

jensandClaude Sonnet 4.6
2026-06-22 08:14:16 +02:00
-
d91bba1ba2
Use the server's simulated forecast for the dynamic remainder too
jens
2026-06-21 17:24:26 +02:00
-
df2be52298
Fix GuiTest.json: was neither small nor fast
jens
2026-06-21 17:11:09 +02:00
-
bb818c71d4
docs: refresh README for this session's accumulated changes
jens
2026-06-21 16:52:48 +02:00
-
c9d38e50db
docs: update Forecast vs. actual duration for the new server-side simulated estimate
jens
2026-06-21 16:47:35 +02:00
-
567ab80c9c
Add a simulation-based Sud forecast, computed server-side
jens
2026-06-21 16:46:52 +02:00
-
1034765e31
Fix HOLD<->COOL chattering caused by too-tight HoldCool threshold
jens
2026-06-21 16:38:59 +02:00
-
cce662b794
Add sude/GuiTest.json - small, fast schedule for exercising the GUI
jens
2026-06-21 16:15:22 +02:00
-
6edb18cde9
Allow Start to restart a finished Sud from the beginning
jens
2026-06-21 15:08:40 +02:00
-
33195ff3cb
sude: lower Einmaischen ramp rate from 1.8 to 1.5 °C/min
jens
2026-06-21 14:59:22 +02:00
-
54422f6d27
docs: explain the Sud forecast's static-vs-dynamic duration gap
jens
2026-06-21 14:38:31 +02:00
-
c27a3b06d4
gui: don't recompute a misleading static forecast after a run ends
jens
2026-06-21 14:37:52 +02:00
-
746692bad7
Rename TempControllerBase.pid_rate to pid_heat, matching pid_hold/pid_cool naming
jens
2026-06-21 13:59:00 +02:00
-
55020d9f38
Fix COOL->HOLD undershoot caused by stale pid_rate windup
jens
2026-06-21 13:55:57 +02:00
-
929b8758c4
Remove the ad-hoc cooling override now that COOL handles it natively
jens
2026-06-21 13:48:23 +02:00
-
858249f1e7
pid: replace IDLE-as-cooling with a real COOL state
jens
2026-06-21 13:41:20 +02:00
-
3fea29cc58
Add an enable/disable switch for the temperature controller
jens
2026-06-21 12:54:09 +02:00
-
e2222dae5e
server: mirror console output to a text log under logs/
jens
2026-06-21 12:34:09 +02:00
-
8c5edb8a56
Rename brewpi/ to server/
jens
2026-06-21 12:29:15 +02:00
-
0a74aab43f
gui: remember the ambient temperature in the user config
jens
2026-06-21 12:18:30 +02:00
-
19be2a7670
Add a "Pot reset to ambient temperature" button, sim-only
jens
2026-06-21 12:15:35 +02:00
-
40cf4b69cc
Add a GUI text entry to set the ambient temperature live
jens
2026-06-21 11:53:45 +02:00
-
a44060a9bd
gui: add a persisted user config; remember the last Sud file dialog dir
jens
2026-06-21 11:46:01 +02:00
-
8bb402416a
gui: show remaining hold duration in the status line
jens
2026-06-21 11:39:40 +02:00
-
b767053c18
gui: dynamically re-anchor the Sud forecast instead of a static estimate
jens
2026-06-21 11:14:00 +02:00
-
d6b6548d88
gui: green progress marker + background red current-temp line in forecast
jens
2026-06-21 10:59:40 +02:00
-
de84fb2342
gui: append the Sud's description to the window caption
jens
2026-06-21 10:55:07 +02:00
-
e855076f55
gui: show the loaded Sud's name in the window caption and forecast title
jens
2026-06-21 10:47:26 +02:00
-
b51d802b31
gui: don't echo manual-mode sliders/checkboxes back to the server on sync
jens
2026-06-21 10:34:28 +02:00
-
2c25b8be50
Sud: server always starts empty; sude/*.json is purely a client concern
jens
2026-06-21 10:24:45 +02:00
-
3ed2961dce
Stop Sud.load() from overwriting the configured sud.json on disk
jens
2026-06-21 10:12:47 +02:00
-
c659fcee37
gui: add "New Sud" menu action, disable Start/Pause/Stop for an empty sud
jens
2026-06-21 10:01:26 +02:00
-
194156f244
Move Sud step's target temperature from ramp.temp to step.temperature
jens
2026-06-21 09:47:45 +02:00
-
e62863ca93
Fix pid_type "Normal" crashing on startup (part 2)
jens
2026-06-21 09:42:09 +02:00
-
b72977d6cb
Fix pid_type "Normal" crashing on startup
jens
2026-06-21 09:36:40 +02:00
-
3a19e2a9dc
Fix Sud cooldown detection crashing the websocket on a real run
jens
2026-06-21 09:29:46 +02:00
-
1170718c3b
Force the heater off and show a "Cool down" indicator during a passive cooldown
jens
2026-06-21 09:10:13 +02:00
-
9bd9889cb0
Allow a Sud step to combine a ramp and a hold
jens
2026-06-21 09:01:04 +02:00
-
56de5cf4d6
Show ambient temperature and warp factor in the GUI's status bar
jens
2026-06-21 00:38:31 +02:00
-
2f7d48b2cb
Revert Sud hold "duration" back to minutes
jens
2026-06-21 00:32:55 +02:00
-
189d1e24d2
Scale the Sud forecast progress by the server's actual warp factor
jens
2026-06-21 00:27:14 +02:00
-
e1d0deb8d2
Show user_message as a modal dialog when the Sud waits for confirmation
jens
2026-06-21 00:15:31 +02:00
-
e171892804
Keep the plant/controller model in sync as the Sud advances
jens
2026-06-21 00:05:55 +02:00
-
13e507e2b5
Rename Sud's Download/Upload to Save/Load throughout
jens
2026-06-20 23:58:21 +02:00
-
5d884ca3da
Wire Pause/Stop to the Sud state machine, with a resumable pause
jens
2026-06-20 23:48:03 +02:00
-
4a824d09cc
Show the active step in the status bar and progress on the forecast plot
jens
2026-06-20 23:32:01 +02:00
-
bd658199fe
Wire the Start toolbar action to actually start the Sud sequence
jens
2026-06-20 23:23:26 +02:00
-
2adcca6716
Gate Start/Pause/Stop on whether a Sud is loaded and running
jens
2026-06-20 23:19:01 +02:00
-
127dd9da51
Don't freeze the GUI thread on disconnect
jens
2026-06-20 23:09:23 +02:00
-
d1a69f19ce
Toggle Connect/Disconnect on the same button once connected
jens
2026-06-20 23:04:43 +02:00
-
9c3ec1dfdf
Add a Connect button next to the host field; unwire it from Start
jens
2026-06-20 23:01:18 +02:00
-
62dcd6b541
Default the GUI's websocket URI to localhost instead of brewpi
jens
2026-06-20 22:56:54 +02:00
-
3289288488
Pre-visualize the estimated Sud course in the Automatic tab
jens
2026-06-20 22:54:34 +02:00
-
0e27c66fc7
Round-trip sud_0010.json through Sud.upload()/download()
jens
2026-06-20 22:43:17 +02:00
-
caa94c7508
Switch the Plot tab to a bright theme with a refined grid and ticks
jens
2026-06-20 22:39:38 +02:00
-
93b5667a64
Add a real-time Plot tab to brewpi_gui, mirroring demo_sud figure 1
jens
2026-06-20 22:31:07 +02:00
-
bb94e065f4
Wire Sud upload/download into the brewpi_gui client
jens
2026-06-20 22:18:49 +02:00
-
db57f3305c
Add upload/download of sud.json over the Sud websocket channel
jens
2026-06-20 22:14:27 +02:00
-
6fb85415eb
Replace config.json's Model/Plant blocks with one shared default in brewpi.py

jensandClaude Sonnet 4.6
2026-06-20 08:06:31 +02:00
-
ac0f13897c
Plot the Sud demo's plant M/C over the run

jensandClaude Sonnet 4.6
2026-06-20 07:56:28 +02:00
-
241a796ffa
Make grain_mass/water_mass per-step and re-derive plant params on change

jensandClaude Sonnet 4.6
2026-06-20 07:45:42 +02:00
-
ca0a014ffb
Remove leftover debug prints from StirrerSim and TempControllerBase

jensandClaude Sonnet 4.6
2026-06-20 07:29:02 +02:00
-
33f75c22d2
Print each Sud step's number and description in the demo

jensandClaude Sonnet 4.6
2026-06-20 07:28:26 +02:00
-
123318ac85
Redesign Sud schedule format: separate ramp/hold keys with defaults

jensandClaude Sonnet 4.6
2026-06-20 07:20:52 +02:00
-
2dcf644bed
Document Sud.derive_plant_params() in the README

jensandClaude Sonnet 4.6
2026-06-19 19:36:31 +02:00
-
b6551c6433
Derive Pot's M/C from pot/grain/water mass instead of hardcoding them

jensandClaude Sonnet 4.6
2026-06-19 19:34:15 +02:00
-
18d9af960f
Remove the stirrer duty cycle trace from the Sud demo plot

jensandClaude Sonnet 4.6
2026-06-19 19:26:09 +02:00
-
15650b21fb
Plot the Sud demo's time axis in seconds instead of minutes

jensandClaude Sonnet 4.6
2026-06-19 19:23:38 +02:00
-
ace5054983
Update sample hold durations to realistic second values

jensandClaude Sonnet 4.6
2026-06-19 19:17:57 +02:00
-
19dc7a95bb
Fix Sud hold duration units: seconds, not minutes

jensandClaude Sonnet 4.6
2026-06-19 19:17:42 +02:00
-
b33f89a569
Adapt Sud/SudTask/demo to the new flat heat/hold schedule schema

jensandClaude Sonnet 4.6
2026-06-19 19:09:43 +02:00
-
2845051350
Refresh design-backlog docs after Pot's gain/theta cleanup

jensandClaude Sonnet 4.6
2026-06-19 18:37:03 +02:00