diff --git a/components/sud.py b/components/sud.py index 993a314..968036a 100644 --- a/components/sud.py +++ b/components/sud.py @@ -59,17 +59,8 @@ def _build_step(number, defaults, raw_step): EMPTY_SUD = { 'Name': '', 'Description': '', - # pot_mass/pot_material are the physical kettle's own properties, not - # really per-recipe (every sude/*.json so far uses this exact pot) - - # defaulting to 0/None here used to make derive_plant_params() come out - # with a zero-mass plant (a ZeroDivisionError in Pot.process() waiting - # to happen) for as long as no Sud had ever been loaded yet. Matching - # the real kettle here instead lets server/brewpi.py seed the Pot with - # a physically sane default at startup, so its simulation actually - # runs - and a real Sud's own doc still overrides these the moment one - # is loaded (see SudTask.apply_plant_params()). - 'pot_mass': 5.96, - 'pot_material': "Edelstahl 18/10", + 'pot_mass': 0, + 'pot_material': None, # Pot energy loss coefficient [W/(kg*K)] and transport propagation # delay [s] - see derive_plant_params(). Defaults match the generic # values brewpi.py used to hardcode for every brew alike. diff --git a/server/brewpi.py b/server/brewpi.py index 949581f..2a70a26 100755 --- a/server/brewpi.py +++ b/server/brewpi.py @@ -75,15 +75,15 @@ if __name__ == '__main__': sensor_task = TempSensorTask(sensor, DT_TASK, dispatcher.msgio_get("Sensor")) taskmgr.add(sensor_task) - # Pot - seeded with the not-yet-loaded sud's own (now physically sane, - # see Sud.EMPTY_SUD) plant params right away, same as ambient below, so - # a simulated Pot already runs - manual heater power/Sud disabled or - # not - instead of sitting inert until a real Sud loads (PotReal just - # ignores this - see there). A real Sud's own doc still overrides - # these the moment one is loaded (see tasks/sud.py's SudTask. - # apply_plant_params()). + # Pot - deliberately left without plant params (M/C/L/Td) here: a + # Sud's own doc is the only source for those now (see tasks/sud.py's + # SudTask.apply_plant_params(), called immediately on Load), so the + # simulated Pot stays inert (Pot.is_configured() is False, PotTask + # skips process() - see there) until one actually is loaded (PotReal + # just ignores this - see there). Ambient is independent of any Sud + # (a global setting, changeable live via the System channel - see + # on_system_recv() below), so it's set right away regardless. pot.set_ambient_temperature(theta_amb) - pot.set_plant_params(sud.derive_plant_params(sud.grain_mass, sud.water_mass)) taskmgr.add(PotTask(pot, DT_TASK, dispatcher.msgio_get("Pot"))) heater.set_on_changed("power_eff", ChangedFloat(pot.set_power, prec=0).set)