Commit Graph

  • 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