fix: stamp PlantParams with each logger's own elapsed, not Sud.elapsed
log_plant_params() stored whatever elapsed it was handed - always Sud.elapsed - regardless of which logger's own Samples.t timeline it needed to match. SudLogTask._elapsed() is Sud.elapsed, so its PlantParams lined up fine, but ServerLogTask._elapsed() is a separate tick counter since server startup - using Sud.elapsed there put PlantParams.t on a different scale than its own Samples.t entirely, causing utils/replay_sim.py to apply grain/water-mass changes at the wrong point when replaying a server-session log (spotted by comparing its output for log_latest.json vs log_latest_sud.json from the same session). Fixed by dropping the elapsed parameter - log_plant_params(params) now stamps with self._elapsed(), so each logger always uses its own correct timeline. Cascades into SudTask.set_on_plant_params()'s callback signature and its wiring in server/brewpi.py. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JFDeoTKBDkXRhPfnyDEoBt
This commit is contained in:
+4
-4
@@ -148,7 +148,7 @@ if __name__ == '__main__':
|
||||
# and every log_interval seconds in between.
|
||||
server_log_task = ServerLogTask(tc, heater, heater_task, DT_TASK, args.logdir, config=config, dt=DT, log_interval=log_interval, sim_warp_factor=sim_warp_factor)
|
||||
if startup_params is not None:
|
||||
server_log_task.log_plant_params(0, startup_params)
|
||||
server_log_task.log_plant_params(startup_params)
|
||||
taskmgr.add(server_log_task)
|
||||
|
||||
# Per-run log - only records while a Sud is actually playing; written to
|
||||
@@ -157,9 +157,9 @@ if __name__ == '__main__':
|
||||
sud_log_task = SudLogTask(tc, heater, heater_task, sud, DT_TASK, args.logdir, config=config, dt=DT, log_interval=log_interval, sim_warp_factor=sim_warp_factor)
|
||||
taskmgr.add(sud_log_task)
|
||||
|
||||
sud_task.set_on_plant_params(lambda elapsed, params: (
|
||||
server_log_task.log_plant_params(elapsed, params),
|
||||
sud_log_task.log_plant_params(elapsed, params)))
|
||||
sud_task.set_on_plant_params(lambda params: (
|
||||
server_log_task.log_plant_params(params),
|
||||
sud_log_task.log_plant_params(params)))
|
||||
sud_task.set_on_reanchor(sud_log_task.log_reanchor)
|
||||
|
||||
# Assign data flow
|
||||
|
||||
Reference in New Issue
Block a user