This website requires JavaScript.
92b9bdc1ba
config: generalize config_validate into a shared schema engine
master
jens and Claude Sonnet 5
2026-07-11 20:40:32 +02:00
4d59e11c1e
sud: fail fast on malformed sud.json documents, one test per fixture
jens and Claude Sonnet 5
2026-07-11 13:27:20 +02:00
5a874e3869
test: add fixture-driven suite for config_validate
jens and Claude Sonnet 5
2026-07-11 12:59:38 +02:00
0171cb20c7
config: fail fast on missing TempCtrl PID gains
jens and Claude Sonnet 5
2026-07-11 12:33:57 +02:00
c60fdff74d
docs: check off set_model_power gap in PID design backlog
jens and Claude Sonnet 5
2026-07-11 12:17:13 +02:00
1cd2f64b43
pololu1376: added firmware, controller settings, host software
jens
2026-07-11 12:11:36 +02:00
af4e7ea471
docs: update README logging section for logging-module migration
jens and Claude Sonnet 5
2026-07-11 12:10:34 +02:00
9f262c48d0
log: match Sud's step Heating/Reached lines to requested format
jens
2026-07-10 22:53:37 +02:00
280f74edaa
log: rename Sud's step-entry log line to describe the ramp phase
jens
2026-07-10 22:37:16 +02:00
c750af922a
log: drop the JSON checkpoint write's own log line
jens
2026-07-10 22:35:20 +02:00
ce5eb3bc23
log: Sud lifecycle transitions and stirrer/heater connect state
jens
2026-07-10 22:28:01 +02:00
a1864a5257
log: route task/component status output through logging, not print()
jens
2026-07-10 22:00:04 +02:00
6c746c8964
log: stamp mirrored stdout/stderr lines with <date>T<time>
jens
2026-07-10 21:44:30 +02:00
71b1010b27
heater/stirrer: zero the setpoint on every disconnect, not just explicit ones
jens and Claude Sonnet 5
2026-07-07 19:46:22 +02:00
a19d2504fb
stirrer: decode and report Pololu SMC status errors instead of guessing
jens and Claude Sonnet 5
2026-07-07 19:36:11 +02:00
d19f1066d1
recipe: match sud_0030's pot volumen to config.json (36 L)
jens and Claude Sonnet 5
2026-07-06 12:26:01 +02:00
07c3f0a7d1
style: move user-confirm control under the header's hold-time display
jens and Claude Sonnet 5
2026-07-06 12:19:04 +02:00
3b34f52bb0
feat: replace modal user-confirm dialog with persistent flashing button
jens and Claude Sonnet 5
2026-07-06 11:57:23 +02:00
6d1429daca
feat: show status line earlier and count energy without a running Sud
jens and Claude Sonnet 5
2026-07-06 10:45:55 +02:00
57677d7881
recipe: retune sud_0030 rest steps and mash-out temperature
jens and Claude Sonnet 5
2026-07-06 10:26:12 +02:00
d1e556024d
fix: thread config.json's Pot.mass into both UI clients' displayed mass
jens and Claude Sonnet 5
2026-07-06 10:25:09 +02:00
1e7042d906
Merge pull request 'Fix HOLD-state PID overshoot (transient windup + steady-state offset)' (#4 ) from overshoot_hold_windup into master
jens
2026-07-06 08:37:19 +02:00
5a75d15416
docs: note grounding y_hold_min in passive-cooling capacity in pid TODO
overshoot_hold_windup
jens and Claude Sonnet 5
2026-07-06 08:30:40 +02:00
6d17419067
docs: note active-cooler architecture assessment in pid TODO
jens and Claude Sonnet 5
2026-07-06 08:26:25 +02:00
2d032bf9b2
fix: allow gentle negative HOLD floor to fix steady-state overshoot
jens and Claude Sonnet 5
2026-07-06 08:19:10 +02:00
11c3d92f25
docs: refresh windup writeup to past tense, link architecture diagram
jens and Claude Sonnet 5
2026-07-05 22:08:19 +02:00
acfb98e186
docs: add FSM states diagram screenshot
jens and Claude Sonnet 5
2026-07-05 21:59:20 +02:00
f69d63c31b
fix: split inner-loop yi_max clamp to fix HOLD-state windup overshoot
jens and Claude Sonnet 5
2026-07-05 21:23:55 +02:00
da832b961e
docs: add claude-faq.md, starting with memory-vs-docs Q&A
jens and Claude Sonnet 5
2026-07-04 12:57:21 +02:00
de11b849d8
docs: revise pid_heat windup plan to pid_outer/pid_inner rename + Inner.Hold split
jens and Claude Sonnet 5
2026-07-04 12:48:59 +02:00
13bb011099
docs: plan HOLD-state pid_heat windup fix from overshoot investigation
jens and Claude Sonnet 5
2026-07-04 12:31:58 +02:00
8689494be0
fix: zero heater power / stirrer rpm on manual disconnect
jens and Claude Sonnet 5
2026-07-03 23:29:29 +02:00
b526711595
fix: blank Heater/Stirrer status on browser disconnect instead of stale text
jens and Claude Sonnet 5
2026-07-03 21:59:15 +02:00
4b9a144b62
fix: temp sensor read failures could crash startup or permanently kill the task
jens and Claude Sonnet 5
2026-07-03 21:45:21 +02:00
b6b79adff8
docs: drop stale config.json.bak cleanup reminder
jens and Claude Sonnet 5
2026-07-03 21:37:44 +02:00
9cd386a22e
docs: note config.json's by-id serial paths and the .bak cleanup
jens and Claude Sonnet 5
2026-07-03 21:35:30 +02:00
671e0c2474
fix: heater task permanently died after a mid-brew unplug, never recovered
jens and Claude Sonnet 5
2026-07-03 21:21:44 +02:00
7b162cf1f5
refactor: drop firmware-version display, move Enable toggle to Controller
jens and Claude Sonnet 5
2026-07-03 20:23:55 +02:00
7377fe3b6b
fix: move heater/stirrer connection status next to the panel heading
jens and Claude Sonnet 5
2026-07-03 20:03:52 +02:00
069fc352bc
fix: guard connection-state callbacks against no running event loop
jens and Claude Sonnet 5
2026-07-03 19:47:17 +02:00
0877e7754b
fix: guard HeaterHendi/StirrerPololu1376 activate() against comm errors
jens and Claude Sonnet 5
2026-07-03 19:39:07 +02:00
1db0e66ab7
Merge pull request 'Add connect/disconnect status for real heater/stirrer hardware' (#3 ) from observer_refactor into master
jens
2026-07-03 19:26:15 +02:00
f20e617d81
feat: add connect/disconnect status for real heater/stirrer hardware
observer_refactor
jens and Claude Sonnet 5
2026-07-03 19:18:59 +02:00
698c019581
refactor: make ATemperatureSensor's temp observable directly on the sensor
jens and Claude Sonnet 5
2026-07-02 22:03:50 +02:00
75a886950c
refactor: collect hendi firmware images under firmware/hendi_ctrl/
jens and Claude Sonnet 5
2026-07-02 18:58:32 +02:00
bd6249af6b
docs: record 10s idle-timeout (remote->suspend) findings for v1.16
jens and Claude Sonnet 5
2026-07-02 18:51:18 +02:00
5bc278e875
feat: add --debug tracing to hendi_ctrl_app.py, document v1.16 fix
jens and Claude Sonnet 5
2026-07-02 18:44:00 +02:00
7ebd2aaa63
docs: update hendi lockout findings with v1.15 retest results
jens and Claude Sonnet 5
2026-07-02 18:19:06 +02:00
bc0aeb0ffd
docs: update hendi lockout findings with v1.14 retest results
jens and Claude Sonnet 5
2026-07-02 17:54:28 +02:00
91a1b1ea62
docs: record hendi remote-control lockout findings for firmware v1.12
jens and Claude Sonnet 5
2026-07-02 17:45:44 +02:00
d079db8b37
feat: add --reset and --trigger-error-state to hendi_ctrl_app.py
jens and Claude Sonnet 5
2026-07-02 17:35:05 +02:00
5522b9c491
refactor: move hendiCtrl.py's main() into scripts/hendi_ctrl_app.py
jens and Claude Sonnet 5
2026-07-02 17:02:21 +02:00
97a8ad5bc3
feat: mirror server text log to a fixed brewpi.latest.log
jens and Claude Sonnet 5
2026-07-02 16:38:32 +02:00
1bcabb0ccc
added firmware info to hendi and motor driver
jens
2026-07-02 16:33:37 +02:00
452d8ddd4b
docs: document per-logger elapsed timelines and the log_latest.* files
jens and Claude Sonnet 5
2026-07-01 20:55:49 +02:00
0382bb01aa
fix: stamp PlantParams with each logger's own elapsed, not Sud.elapsed
jens and Claude Sonnet 5
2026-07-01 20:53:50 +02:00
a495e758fd
feat: always write a fixed-name copy of server/sud logs, use .json for sud logs
jens and Claude Sonnet 5
2026-07-01 20:23:16 +02:00
da7e954b7c
fix: make sim_warp_factor real-hardware-safe and sud logs forecast-reproducible
jens and Claude Sonnet 5
2026-07-01 19:50:50 +02:00
27317d9efd
docs: document the systemd deployment and its graceful-shutdown behavior
jens and Claude Sonnet 5
2026-07-01 09:46:47 +02:00
0e60860cf0
feat: periodically checkpoint server/sud logs to disk
jens and Claude Sonnet 5
2026-07-01 09:44:11 +02:00
d3c8a47562
fix: force heater/stirrer safe on SIGTERM, not just SIGINT
jens and Claude Sonnet 5
2026-07-01 09:37:24 +02:00
aeeecc4ddc
docs: refresh README for sud/server log split and reconnect pump task
jens and Claude Sonnet 5
2026-07-01 09:18:23 +02:00
0b2a2be035
feat: re-add per-run sud log alongside the continuous server log
jens and Claude Sonnet 5
2026-07-01 09:06:39 +02:00
0736f76ca3
fix: drain dispatcher queue via single pump task, not per-connection
jens and Claude Sonnet 5
2026-07-01 08:46:25 +02:00
f7d3001ca5
fix: set PYTHONPATH in service unit so brewpi modules resolve
jens and Claude Sonnet 4.6
2026-07-01 01:03:51 +02:00
ab52c7e599
fix: derive brewpi home from script location in service install
jens and Claude Sonnet 4.6
2026-07-01 00:58:48 +02:00
6651d43314
feat: add systemd service unit and install script
jens and Claude Sonnet 4.6
2026-07-01 00:53:09 +02:00
9f221c5d19
fix: re-enable closed-loop on Sud start regardless of client
jens and Claude Sonnet 4.6
2026-07-01 00:43:55 +02:00
57c23f293a
fix: embed dt and startup plant params in server log; open-loop replay_sim
jens and Claude Sonnet 4.6
2026-07-01 00:31:46 +02:00
4a1c969ad0
refactor: replace SudLogTask with ServerLogTask for all logging
jens and Claude Sonnet 4.6
2026-06-30 23:22:11 +02:00
dc687c3559
feat: embed config in server log; replay_sim takes a single log path
jens and Claude Sonnet 4.6
2026-06-30 23:17:50 +02:00
4de6efcf82
feat: include full config and plant param changes in Sud run log
jens and Claude Sonnet 4.6
2026-06-30 22:59:55 +02:00
bb5af3c0ed
fix: clamp pid_hold output to [0,1] in HOLD state to break limit cycle
jens and Claude Sonnet 4.6
2026-06-30 21:13:30 +02:00
b3923fb1c0
fix: smooth HOLD→HEAT power transition (bumpless transfer + cascade timing)
jens and Claude Sonnet 4.6
2026-06-30 20:33:12 +02:00
e7824dc297
ui: show water level and status line before any sud is loaded
jens and Claude Sonnet 4.6
2026-06-30 19:53:54 +02:00
d0a137e39e
config: seed plant params from Pot.water_mass at server startup
jens and Claude Sonnet 4.6
2026-06-30 19:45:13 +02:00
5142fcbf3d
refactor: move pot hardware params and pid_type out of per-brew docs
jens and Claude Sonnet 4.6
2026-06-30 19:41:04 +02:00
0495e177c4
refactor: replace plant_name with per-component type keys in config
jens and Claude Sonnet 4.6
2026-06-30 19:31:39 +02:00
0156e689ca
config: wire TempSensor section from config.json to TempSensorSim
jens and Claude Sonnet 4.6
2026-06-30 19:27:04 +02:00
ca1953c9ee
sensor: model real temp sensor noise in TempSensorSim
jens and Claude Sonnet 4.6
2026-06-30 19:17:48 +02:00
9be0e49a63
analyze_log: accept a direct log path as single argument
jens and Claude Sonnet 4.6
2026-06-30 19:11:31 +02:00
4f1e05bab1
server: always write log_{date_time}.json for the full server session
jens and Claude Sonnet 4.6
2026-06-30 19:04:37 +02:00
801e9809a6
hendiCtrl: fixed graceful close
jens
2026-06-30 18:59:33 +02:00
5751d26873
server: graceful Ctrl-C shutdown; HendiCtrl closes connection cleanly
jens and Claude Sonnet 4.6
2026-06-30 18:26:28 +02:00
29dd5267a9
- fixed hendiCtrl exceptions
jens
2026-06-30 17:05:43 +02:00
c0646fada3
sude/sud_0010: set Td=17 s (calibrated transport delay)
jens and Claude Sonnet 4.6
2026-06-30 17:02:52 +02:00
5be1d4e862
pid: option A heat-rate pre-filter (beta IIR before differentiation)
jens and Claude Sonnet 4.6
2026-06-30 17:02:14 +02:00
8ca4e4d803
fixed duplicate class declaration
jens
2026-06-30 16:38:51 +02:00
6547478d00
HendiCtrl: better Exceptions
jens
2026-06-30 16:22:06 +02:00
2dfaf8dee6
replay_sim: switch to closed-loop plant simulation
jens and Claude Sonnet 4.6
2026-06-30 16:08:25 +02:00
bd08833df5
Add utils/replay_sim.py: replay log through Normal TC to verify PID params
jens and Claude Sonnet 4.6
2026-06-30 08:52:58 +02:00
dd331c164f
docs: add heat rate noise section to temp control calibration
jens and Claude Sonnet 4.6
2026-06-29 22:16:10 +02:00
abcd011a9f
Add docs/temp_control_calibration.md
jens and Claude Sonnet 4.6
2026-06-29 22:05:37 +02:00
6ecfa2d38a
Add utils/analyze_log.py: offline log/forecast plot script
jens and Claude Sonnet 4.6
2026-06-29 21:28:35 +02:00
c6e9258351
Rename config templates: .templ → -sim.json.tpl, config_real.json → -real.json.tpl
jens and Claude Sonnet 4.6
2026-06-28 20:23:29 +02:00
2e14978210
Split hardware-only deps into server/requirements-hw.txt
jens and Claude Sonnet 4.6
2026-06-28 20:19:15 +02:00
9d12dd9a95
Move scipy and matplotlib from server to demos requirements
jens and Claude Sonnet 4.6
2026-06-28 20:11:43 +02:00
5b0be831e2
Fix hold countdown not updating for clients connecting mid-hold
jens and Claude Sonnet 4.6
2026-06-28 20:07:55 +02:00
967b0a8eed
Add pyserial and spidev to server requirements
jens and Claude Sonnet 4.6
2026-06-28 17:40:29 +02:00
19d04804dc
Add power soll and stirrer RPM to pot SVG; tune flame position
jens and Claude Sonnet 4.6
2026-06-28 16:47:19 +02:00